Re: [PATCH 1/1] apple-gmux: Hard Code max brightness for MMIO gmux
From: Hans de Goede
Date: Wed Oct 18 2023 - 09:37:07 EST
Hi,
On 10/17/23 13:14, Orlando Chamberlain wrote:
> The data in the max brightness port for iMacs with MMIO gmux incorrectly
> reports 0x03ff, but it should be 0xffff. As all other MMIO gmux models
> have 0xffff, hard code this for all MMIO gmux's so they all have the
> proper brightness range accessible.
>
> Reported-by: Karsten Leipold <poldi@xxxxxx>
> Signed-off-by: Orlando Chamberlain <orlandoch.dev@xxxxxxxxx>
Thank you for your patch/series, I've applied this patch
(series) to the pdx86 fixes branch:
https://git.kernel.org/pub/scm/linux/kernel/git/pdx86/platform-drivers-x86.git/log/?h=fixes
I have added the following Fixes: tag while merging this:
Fixes: 0c18184de990 ("platform/x86: apple-gmux: support MMIO gmux on T2 Macs")
I will include this patch in my next fixes pull-req to Linus
for the current kernel development cycle.
Regards,
Hans
> ---
> drivers/platform/x86/apple-gmux.c | 14 +++++++++++++-
> 1 file changed, 13 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/platform/x86/apple-gmux.c b/drivers/platform/x86/apple-gmux.c
> index cadbb557a108..1417e230edbd 100644
> --- a/drivers/platform/x86/apple-gmux.c
> +++ b/drivers/platform/x86/apple-gmux.c
> @@ -105,6 +105,8 @@ struct apple_gmux_config {
> #define GMUX_BRIGHTNESS_MASK 0x00ffffff
> #define GMUX_MAX_BRIGHTNESS GMUX_BRIGHTNESS_MASK
>
> +# define MMIO_GMUX_MAX_BRIGHTNESS 0xffff
> +
> static u8 gmux_pio_read8(struct apple_gmux_data *gmux_data, int port)
> {
> return inb(gmux_data->iostart + port);
> @@ -857,7 +859,17 @@ static int gmux_probe(struct pnp_dev *pnp, const struct pnp_device_id *id)
>
> memset(&props, 0, sizeof(props));
> props.type = BACKLIGHT_PLATFORM;
> - props.max_brightness = gmux_read32(gmux_data, GMUX_PORT_MAX_BRIGHTNESS);
> +
> + /*
> + * All MMIO gmux's have 0xffff as max brightness, but some iMacs incorrectly
> + * report 0x03ff, despite the firmware being happy to set 0xffff as the brightness
> + * at boot. Force 0xffff for all MMIO gmux's so they all have the correct brightness
> + * range.
> + */
> + if (type == APPLE_GMUX_TYPE_MMIO)
> + props.max_brightness = MMIO_GMUX_MAX_BRIGHTNESS;
> + else
> + props.max_brightness = gmux_read32(gmux_data, GMUX_PORT_MAX_BRIGHTNESS);
>
> #if IS_REACHABLE(CONFIG_ACPI_VIDEO)
> register_bdev = acpi_video_get_backlight_type() == acpi_backlight_apple_gmux;