mediatek: add initialization after reset

During GPIO initialization the pin state flips and triggers a reset of
the ledbar MCU. It needs to be moved through an initialization sequence
before working correctly.

Signed-off-by: Sven Wegener <sven.wegener@stealer.net>
(cherry picked from commit 013a956f08)
This commit is contained in:
Sven Wegener 2021-06-12 21:56:22 +02:00 committed by Daniel Golle
parent 26cd0c1ee9
commit 40610c5322

View File

@ -99,6 +99,12 @@ out_gpio:
static void ubnt_ledbar_reset(struct ubnt_ledbar *ledbar)
{
static const char init_msg[16] = {0x02, 0x81, 0xfd, 0x7e,
0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00};
char init_response[4];
if (!ledbar->reset_gpio)
return;
@ -108,6 +114,14 @@ static void ubnt_ledbar_reset(struct ubnt_ledbar *ledbar)
msleep(10);
gpiod_set_value(ledbar->reset_gpio, 0);
msleep(10);
gpiod_set_value(ledbar->enable_gpio, 1);
msleep(10);
ubnt_ledbar_perform_transaction(ledbar, init_msg, sizeof(init_msg), init_response, sizeof(init_response));
msleep(10);
gpiod_set_value(ledbar->enable_gpio, 0);
mutex_unlock(&ledbar->lock);
}