regulator/rpi-panel-attiny: Don't read the LCD power status
authorDave Stevenson <dave.stevenson@raspberrypi.com>
Mon, 29 Nov 2021 18:31:37 +0000 (18:31 +0000)
committerDom Cobley <popcornmix@gmail.com>
Mon, 21 Mar 2022 16:04:32 +0000 (16:04 +0000)
The I2C to the Atmel is very fussy, and locks up easily on
Pi0-3 particularly on reads.

The LCD power status is controlled solely by this driver, so
rather than reading it back from the Atmel, use the cached
status last set.

Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.com>
drivers/regulator/rpi-panel-attiny-regulator.c

index 8090b9a..8b80c0d 100644 (file)
@@ -144,24 +144,8 @@ static int attiny_lcd_power_disable(struct regulator_dev *rdev)
 static int attiny_lcd_power_is_enabled(struct regulator_dev *rdev)
 {
        struct attiny_lcd *state = rdev_get_drvdata(rdev);
-       unsigned int data;
-       int ret, i;
-
-       mutex_lock(&state->lock);
-
-       for (i = 0; i < 10; i++) {
-               ret = regmap_read(rdev->regmap, REG_PORTC, &data);
-               if (!ret)
-                       break;
-               usleep_range(10000, 12000);
-       }
-
-       mutex_unlock(&state->lock);
-
-       if (ret < 0)
-               return ret;
 
-       return data & PC_RST_BRIDGE_N;
+       return state->port_states[REG_PORTC - REG_PORTA] & PC_RST_BRIDGE_N;
 }
 
 static const struct regulator_init_data attiny_regulator_default = {