diff options
Diffstat (limited to 'target/linux/bcm27xx')
-rw-r--r-- | target/linux/bcm27xx/patches-4.19/950-0786-leds-pca963x-Fix-open-drain-initialization.patch | 61 |
1 files changed, 0 insertions, 61 deletions
diff --git a/target/linux/bcm27xx/patches-4.19/950-0786-leds-pca963x-Fix-open-drain-initialization.patch b/target/linux/bcm27xx/patches-4.19/950-0786-leds-pca963x-Fix-open-drain-initialization.patch deleted file mode 100644 index e63d4c6bc1..0000000000 --- a/target/linux/bcm27xx/patches-4.19/950-0786-leds-pca963x-Fix-open-drain-initialization.patch +++ /dev/null @@ -1,61 +0,0 @@ -From 1738aaf187e0c8e97fbdd9661960b835f45e8985 Mon Sep 17 00:00:00 2001 -From: Zahari Petkov <zahari@balena.io> -Date: Mon, 18 Nov 2019 23:02:55 +0200 -Subject: [PATCH] leds: pca963x: Fix open-drain initialization - -commit 697529091ac7a0a90ca349b914bb30641c13c753 upstream. - -Before commit bb29b9cccd95 ("leds: pca963x: Add bindings to invert -polarity") Mode register 2 was initialized directly with either 0x01 -or 0x05 for open-drain or totem pole (push-pull) configuration. - -Afterwards, MODE2 initialization started using bitwise operations on -top of the default MODE2 register value (0x05). Using bitwise OR for -setting OUTDRV with 0x01 and 0x05 does not produce correct results. -When open-drain is used, instead of setting OUTDRV to 0, the driver -keeps it as 1: - -Open-drain: 0x05 | 0x01 -> 0x05 (0b101 - incorrect) -Totem pole: 0x05 | 0x05 -> 0x05 (0b101 - correct but still wrong) - -Now OUTDRV setting uses correct bitwise operations for initialization: - -Open-drain: 0x05 & ~0x04 -> 0x01 (0b001 - correct) -Totem pole: 0x05 | 0x04 -> 0x05 (0b101 - correct) - -Additional MODE2 register definitions are introduced now as well. - -Fixes: bb29b9cccd95 ("leds: pca963x: Add bindings to invert polarity") -Signed-off-by: Zahari Petkov <zahari@balena.io> -Signed-off-by: Pavel Machek <pavel@ucw.cz> ---- - drivers/leds/leds-pca963x.c | 8 +++++--- - 1 file changed, 5 insertions(+), 3 deletions(-) - ---- a/drivers/leds/leds-pca963x.c -+++ b/drivers/leds/leds-pca963x.c -@@ -43,6 +43,8 @@ - #define PCA963X_LED_PWM 0x2 /* Controlled through PWM */ - #define PCA963X_LED_GRP_PWM 0x3 /* Controlled through PWM/GRPPWM */ - -+#define PCA963X_MODE2_OUTDRV 0x04 /* Open-drain or totem pole */ -+#define PCA963X_MODE2_INVRT 0x10 /* Normal or inverted direction */ - #define PCA963X_MODE2_DMBLNK 0x20 /* Enable blinking */ - - #define PCA963X_MODE1 0x00 -@@ -462,12 +464,12 @@ static int pca963x_probe(struct i2c_clie - PCA963X_MODE2); - /* Configure output: open-drain or totem pole (push-pull) */ - if (pdata->outdrv == PCA963X_OPEN_DRAIN) -- mode2 |= 0x01; -+ mode2 &= ~PCA963X_MODE2_OUTDRV; - else -- mode2 |= 0x05; -+ mode2 |= PCA963X_MODE2_OUTDRV; - /* Configure direction: normal or inverted */ - if (pdata->dir == PCA963X_INVERTED) -- mode2 |= 0x10; -+ mode2 |= PCA963X_MODE2_INVRT; - i2c_smbus_write_byte_data(pca963x->chip->client, PCA963X_MODE2, - mode2); - } |