Re: Nokia N900 increased power draw with panel-sony-acx565akm loaded v5.9 and v5.10

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Sebastian,

On 13/12/2021 14:10, Sebastian Reichel wrote:
> Hi,
> 
> On Fri, Dec 10, 2021 at 08:18:35PM +0100, Merlijn Wajer wrote:
> 
>> Any hints on what could cause this extra power draw? Maybe the panel is
>> waiting for something? I suppose it's potentially feasible that with
>> more modules and userspace loaded the panel idles properly, but I
>> currently don't have a way to measure that.
> 
> First of all: I do not have documentation for that panel. Before my
> patch what happened was that gpiod_get() initialized the reset GPIO
> as OUTPUT_LOW. Immediately afterwards it is configured as OUTPUT_HIGH
> in acx565akm_detect(). So there are 2 options:
> 
> 1. The reset GPIO was low before the driver probe starts. In that
>    case everything is fine with or without 7c4bada12d320 and there
>    is no expected change in behaviour. The GPIO is just toggled
>    slightly earlier.
> 
> 2. The reset GPIO was output-high before the driver probe starts
>    (e.g. because bootloader used the panel, kexec, ...). In that
>    case the reset GPIO will be low for just a very short time (just
>    a few instructions). Usually panels have a minimum time required
>    for reset lines to be asserted. In acx565akm_power_off() it is
>    hinted, that 100ms should be ok.
> 
> My patch fixes the behaviour, so that reset is no longer asserted
> for less than 100ms in the second case by not asserting it at all.
> That also means, that the LCD is not reset when it has already been
> configured before the probe routine is called. An alternative would
> be the following patch, which does the reset and ensures minimum
> reset times are ok:
> 
> ------------------------------------------------------
> git diff drivers/gpu/drm/panel/panel-sony-acx565akm.c
> diff --git a/drivers/gpu/drm/panel/panel-sony-acx565akm.c b/drivers/gpu/drm/panel/panel-sony-acx565akm.c
> index ba0b3ead150f..2a8c0f7342ce 100644
> --- a/drivers/gpu/drm/panel/panel-sony-acx565akm.c
> +++ b/drivers/gpu/drm/panel/panel-sony-acx565akm.c
> @@ -629,11 +629,12 @@ static int acx565akm_probe(struct spi_device *spi)
>         lcd->spi = spi;
>         mutex_init(&lcd->mutex);
>  
> -       lcd->reset_gpio = devm_gpiod_get(&spi->dev, "reset", GPIOD_OUT_HIGH);
> +       lcd->reset_gpio = devm_gpiod_get(&spi->dev, "reset", GPIOD_OUT_LOW);
>         if (IS_ERR(lcd->reset_gpio)) {
>                 dev_err(&spi->dev, "failed to get reset GPIO\n");
>                 return PTR_ERR(lcd->reset_gpio);
>         }
> +       msleep(100); /* ensure minimum reset assertion time */
>  
>         ret = acx565akm_detect(lcd);
>         if (ret < 0) {
> ------------------------------------------------------

With this additional patch applied the device seems to idle at lower
power usage in the test environment I described in my previous email.
That is, it idles at at 42mW with the panel probed, as opposed to 60mW
with the panel probed. I also just booted to my Maemo Leste environment
and the panel still comes up fine and seems to behave fine.

Is there additional testing I can perform to make sure this patch is the
right one?

Thanks,
Regards,
Merlijn



[Index of Archives]     [Linux Arm (vger)]     [ARM Kernel]     [ARM MSM]     [Linux Tegra]     [Linux WPAN Networking]     [Linux Wireless Networking]     [Maemo Users]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite Trails]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux