Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 18 Aug 2013 20:20:01 GMT
From:      Matthias Petermann <matthias@petermann-it.de>
To:        freebsd-amd64@FreeBSD.org
Subject:   amd64/181357: LCD Brightness Control not working on Lenovo X121e (ACPI issue?)
Message-ID:  <201308182020.r7IKK11c007551@freefall.freebsd.org>

next in thread | raw e-mail | index | archive | help
The following reply was made to PR amd64/181357; it has been noted by GNATS.

From: Matthias Petermann <matthias@petermann-it.de>
To: bug-followup@freebsd.org
Cc: matthias@petermann-it.de
Subject: amd64/181357: LCD Brightness Control not working on Lenovo X121e
 (ACPI issue?)
Date: Sun, 18 Aug 2013 22:16:41 +0200

 This message is in MIME format.
 
 --=_u7jrKzkqA8e5X0RGN1287A1
 Content-Type: text/plain; charset=UTF-8; format=flowed; DelSp=Yes
 Content-Disposition: inline
 Content-Transfer-Encoding: 8bit
 
 Hello, to narrow down the issue I added some temporar logging to  
 acpi_ibm.c. The attached patch is not intended to be committed, just  
 for demonstration where I put the statements. With this applied and  
 the following sequence:
 
 # kldload acpi_ibm
 # sysctl dev.acpi_ibm.0.events=1
 # sysctl dev.acpi_ibm.0.handlerevents='0x03 0x04 0x10 0x11'
 # tail -f /var/log/messages
 
 I see the following output, when I press Fn+F9/F8 multiple times:
 
 [Fn+F9]
 Aug 18 22:02:55 thinkpad kernel: acpi_ibm0: #### Tune brightness ####
 Aug 18 22:02:55 thinkpad kernel: acpi_ibm0: #### in cmos handle ####
 Aug 18 22:02:55 thinkpad kernel: acpi_ibm0: #### before acpi_ec_write ####: 1
 [Fn+F9]
 Aug 18 22:02:57 thinkpad kernel: acpi_ibm0: #### Tune brightness ####
 Aug 18 22:02:57 thinkpad kernel: acpi_ibm0: #### in cmos handle ####
 Aug 18 22:02:57 thinkpad kernel: acpi_ibm0: #### before acpi_ec_write ####: 2
 [Fn+F9]
 Aug 18 22:02:58 thinkpad kernel: acpi_ibm0: #### Tune brightness ####
 Aug 18 22:02:58 thinkpad kernel: acpi_ibm0: #### in cmos handle ####
 Aug 18 22:02:58 thinkpad kernel: acpi_ibm0: #### before acpi_ec_write ####: 3
 [Fn+F9]
 Aug 18 22:02:59 thinkpad kernel: acpi_ibm0: #### Tune brightness ####
 Aug 18 22:02:59 thinkpad kernel: acpi_ibm0: #### in cmos handle ####
 Aug 18 22:02:59 thinkpad kernel: acpi_ibm0: #### before acpi_ec_write ####: 4
 [Fn+F9]
 Aug 18 22:02:59 thinkpad kernel: acpi_ibm0: #### Tune brightness ####
 Aug 18 22:02:59 thinkpad kernel: acpi_ibm0: #### in cmos handle ####
 Aug 18 22:02:59 thinkpad kernel: acpi_ibm0: #### before acpi_ec_write ####: 5
 [Fn+F9]
 Aug 18 22:03:00 thinkpad kernel: acpi_ibm0: #### Tune brightness ####
 Aug 18 22:03:00 thinkpad kernel: acpi_ibm0: #### in cmos handle ####
 Aug 18 22:03:00 thinkpad kernel: acpi_ibm0: #### before acpi_ec_write ####: 6
 [Fn+F9]
 Aug 18 22:03:00 thinkpad kernel: acpi_ibm0: #### Tune brightness ####
 Aug 18 22:03:00 thinkpad kernel: acpi_ibm0: #### in cmos handle ####
 Aug 18 22:03:00 thinkpad kernel: acpi_ibm0: #### before acpi_ec_write ####: 7
 [Fn+F8]
 Aug 18 22:03:01 thinkpad kernel: acpi_ibm0: #### Tune brightness ####
 Aug 18 22:03:01 thinkpad kernel: acpi_ibm0: #### in cmos handle ####
 Aug 18 22:03:01 thinkpad kernel: acpi_ibm0: #### before acpi_ec_write ####: 6
 [Fn+F8]
 Aug 18 22:03:02 thinkpad kernel: acpi_ibm0: #### Tune brightness ####
 Aug 18 22:03:02 thinkpad kernel: acpi_ibm0: #### in cmos handle ####
 Aug 18 22:03:02 thinkpad kernel: acpi_ibm0: #### before acpi_ec_write ####: 5
 ...
 
 Looks like acpi_ec_write gets proper values. From this point, the keys  
 for brightness control seem to work, but acpi_ec_write doesn't have  
 any effect. So next stop would be ACPI_EC_WRITE(...). Are there any  
 known assumptions for potential causes where I should focus on?
 
 Thanks in advance & regards,
 Matthias
 
 -- 
 Matthias Petermann <matthias@petermann-it.de>
 Ihr Partner für anspruchsvolle IT-Lösungen
 www.petermann-it.de - lösungsorientiert, innovativ und erfolgreich
 
 --=_u7jrKzkqA8e5X0RGN1287A1
 Content-Type: text/x-diff; name=2013-08-18-patch_acpi_ibm.c_debug.txt;
  charset=us-ascii
 Content-Disposition: attachment; size=2013;
  filename=2013-08-18-patch_acpi_ibm.c_debug.txt
 
 --- acpi_ibm.c.orig	2013-08-18 02:01:11.000000000 +0200
 +++ acpi_ibm.c	2013-08-18 21:57:14.000000000 +0200
 @@ -367,7 +367,7 @@
  	devclass_t		ec_devclass;
  
  	ACPI_FUNCTION_TRACE((char *)(uintptr_t) __func__);
 -
 +	
  	sc = device_get_softc(dev);
  	sc->dev = dev;
  	sc->handle = acpi_get_handle(dev);
 @@ -983,6 +983,7 @@
  static int
  acpi_ibm_brightness_set(struct acpi_ibm_softc *sc, int arg)
  {
 +	
  	int			val, step;
  	UINT64			val_ec;
  	ACPI_OBJECT		Arg;
 @@ -992,15 +993,20 @@
  	ACPI_FUNCTION_TRACE((char *)(uintptr_t)__func__);
  	ACPI_SERIAL_ASSERT(ibm);
  
 -	if (arg < 0 || arg > 7)
 +	if (arg < 0 || arg > 7) {
 +		device_printf(sc->dev, "#### arg out of range ####\n");
  		return (EINVAL);
 -
 +	}
 +	
  	/* Read the current brightness */
  	status = ACPI_EC_READ(sc->ec_dev, IBM_EC_BRIGHTNESS, &val_ec, 1);
 -	if (ACPI_FAILURE(status))
 +	if (ACPI_FAILURE(status)) {
 +		device_printf(sc->dev, "#### failure read current brightness 2 ####\n");
  		return (status);
 -
 +	}
 +	
  	if (sc->cmos_handle) {
 +		device_printf(sc->dev, "#### in cmos handle ####\n");
  		val = val_ec & IBM_EC_MASK_BRI;
  
  		Args.Count = 1;
 @@ -1024,7 +1030,10 @@
  		}
  	}
  
 -	return ACPI_EC_WRITE(sc->ec_dev, IBM_EC_BRIGHTNESS, arg, 1);
 +	/* This is the original code from FreeBSD 10 current. I just added
 +	 * a log statement to see if it tries to set the proper values */ 
 +	device_printf(sc->dev, "#### before acpi_ec_write ####: %d\n",arg);
 +	return ACPI_EC_WRITE(sc->ec_dev, IBM_EC_BRIGHTNESS, arg, 1);  
  }
  
  static int
 @@ -1175,11 +1184,14 @@
  
  	case IBM_EVENT_BRIGHTNESS_UP:
  	case IBM_EVENT_BRIGHTNESS_DOWN:
 +		device_printf(sc->dev, "#### Tune brightness ####\n");
  		/* Read the current brightness */
  		status = ACPI_EC_READ(sc->ec_dev, IBM_EC_BRIGHTNESS,
  				      &val_ec, 1);
 -		if (ACPI_FAILURE(status))
 +		if (ACPI_FAILURE(status)) {
 +			device_printf(sc->dev, "#### Failure read current brightness 1 ####\n");
  			return;
 +		}
  
  		val = val_ec & IBM_EC_MASK_BRI;
  		val = (arg == IBM_EVENT_BRIGHTNESS_UP) ? val + 1 : val - 1;
 
 --=_u7jrKzkqA8e5X0RGN1287A1--
 



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201308182020.r7IKK11c007551>