From 0115ff15b2b1323c36e613a6234b7fd9921c3d7d Mon Sep 17 00:00:00 2001 From: Andrey Mironov Date: Mon, 23 Jul 2018 23:31:42 +0300 Subject: [PATCH] Fixed init order of MAX7456 DisplayPort --- src/main/drivers/max7456.c | 7 ++++--- src/main/drivers/max7456.h | 2 +- src/main/io/displayport_max7456.c | 11 ++++++++--- 3 files changed, 13 insertions(+), 7 deletions(-) diff --git a/src/main/drivers/max7456.c b/src/main/drivers/max7456.c index 98add73dfc..e237b44b7b 100644 --- a/src/main/drivers/max7456.c +++ b/src/main/drivers/max7456.c @@ -415,18 +415,18 @@ void max7456ReInit(void) // Here we init only CS and try to init MAX for first time. // Also detect device type (MAX v.s. AT) -void max7456Init(const max7456Config_t *max7456Config, const vcdProfile_t *pVcdProfile, bool cpuOverclock) +bool max7456Init(const max7456Config_t *max7456Config, const vcdProfile_t *pVcdProfile, bool cpuOverclock) { max7456HardwareReset(); if (!max7456Config->csTag) { - return; + return false; } busdev->busdev_u.spi.csnPin = IOGetByTag(max7456Config->csTag); if (!IOIsFreeOrPreinit(busdev->busdev_u.spi.csnPin)) { - return; + return false; } IOInit(busdev->busdev_u.spi.csnPin, OWNER_OSD_CS, 0); @@ -489,6 +489,7 @@ void max7456Init(const max7456Config_t *max7456Config, const vcdProfile_t *pVcdP #endif // Real init will be made later when driver detect idle. + return true; } /** diff --git a/src/main/drivers/max7456.h b/src/main/drivers/max7456.h index 95b55695cf..c5327ddfaa 100644 --- a/src/main/drivers/max7456.h +++ b/src/main/drivers/max7456.h @@ -31,7 +31,7 @@ extern uint16_t maxScreenSize; struct vcdProfile_s; void max7456HardwareReset(void); struct max7456Config_s; -void max7456Init(const struct max7456Config_s *max7456Config, const struct vcdProfile_s *vcdProfile, bool cpuOverclock); +bool max7456Init(const struct max7456Config_s *max7456Config, const struct vcdProfile_s *vcdProfile, bool cpuOverclock); void max7456Invert(bool invert); void max7456Brightness(uint8_t black, uint8_t white); void max7456DrawScreen(void); diff --git a/src/main/io/displayport_max7456.c b/src/main/io/displayport_max7456.c index f865c2b997..accf9abd74 100644 --- a/src/main/io/displayport_max7456.c +++ b/src/main/io/displayport_max7456.c @@ -166,12 +166,17 @@ static const displayPortVTable_t max7456VTable = { displayPort_t *max7456DisplayPortInit(const vcdProfile_t *vcdProfile) { - displayInit(&max7456DisplayPort, &max7456VTable); #ifdef USE_OSD_SLAVE - max7456Init(max7456Config(), vcdProfile, false); + if (!max7456Init(max7456Config(), vcdProfile, false)) #else - max7456Init(max7456Config(), vcdProfile, systemConfig()->cpu_overclock); + if (!max7456Init(max7456Config(), vcdProfile, systemConfig()->cpu_overclock)) #endif + { + return NULL; + } + + displayInit(&max7456DisplayPort, &max7456VTable); + resync(&max7456DisplayPort); return &max7456DisplayPort; }