Skip to content

Commit

Permalink
apple-gmux: Hard Code max brightness for MMIO gmux
Browse files Browse the repository at this point in the history
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.

Fixes: 0c18184 ("platform/x86: apple-gmux: support MMIO gmux on T2 Macs")
Reported-by: Karsten Leipold <poldi@dfn.de>
Signed-off-by: Orlando Chamberlain <orlandoch.dev@gmail.com>
Link: https://lore.kernel.org/r/20231017111444.19304-2-orlandoch.dev@gmail.com
Reviewed-by: Hans de Goede <hdegoede@redhat.com>
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
  • Loading branch information
Orlando Chamberlain authored and Hans de Goede committed Oct 18, 2023
1 parent fe0e04c commit 0e51cb4
Showing 1 changed file with 13 additions and 1 deletion.
14 changes: 13 additions & 1 deletion drivers/platform/x86/apple-gmux.c
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand Down Expand Up @@ -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;
Expand Down

0 comments on commit 0e51cb4

Please sign in to comment.