diff options
Diffstat (limited to 'drivers/platform/x86/apple-gmux.c')
| -rw-r--r-- | drivers/platform/x86/apple-gmux.c | 14 | 
1 files changed, 13 insertions, 1 deletions
| 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 @@ get_version:  	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; |