From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1755742AbcE0Amg (ORCPT ); Thu, 26 May 2016 20:42:36 -0400 Received: from mga04.intel.com ([192.55.52.120]:59747 "EHLO mga04.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1755469AbcE0Ame (ORCPT ); Thu, 26 May 2016 20:42:34 -0400 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.26,371,1459839600"; d="scan'208";a="709544462" From: "Zhang, Rui" To: "Lu, Aaron" CC: "Valdis.Kletnieks@vt.edu" , "linux-kernel@vger.kernel.org" , "lenb@kernel.org" , "linux-acpi@vger.kernel.org" , "rafael@kernel.org" , "Wysocki, Rafael J" Subject: Re: [PATCH] ACPI / Thermal / video: fix max_level incorrect value Thread-Topic: [PATCH] ACPI / Thermal / video: fix max_level incorrect value Thread-Index: AQHRszYYgWE424g0gE2bDCNld4Cw25/InFsAgAFY2YCAADl2gIABRhwA Date: Fri, 27 May 2016 00:42:30 +0000 Message-ID: <1464309752.26336.14.camel@rzhang1-mobl4> References: <4736.1463510462@turing-police.cc.vt.edu> <6459.1463698397@turing-police.cc.vt.edu> <7208.1463713500@turing-police.cc.vt.edu> <6674547c-cefb-1b93-893a-7c5909a180a7@intel.com> <2897.1463727728@turing-police.cc.vt.edu> <20160520071720.GA30152@aaronlu.sh.intel.com> <29833.1463789712@turing-police.cc.vt.edu> <20160521032933.GA12918@aaronlu.sh.intel.com> <20160521075500.GA22025@aaronlu.sh.intel.com> <20160525051526.GA18305@aaronlu.sh.intel.com> <4305.1464227381@turing-police.cc.vt.edu> <84aa28c0-aec0-355b-ac85-6e98c47a1caf@intel.com> In-Reply-To: <84aa28c0-aec0-355b-ac85-6e98c47a1caf@intel.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [10.239.194.14] Content-Type: text/plain; charset="utf-8" Content-ID: <8B5873AF8473BC47B3B999C103EA1C03@intel.com> MIME-Version: 1.0 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Transfer-Encoding: 8bit X-MIME-Autoconverted: from base64 to 8bit by mail.home.local id u4R0gg30013114 On Thu, 2016-05-26 at 13:15 +0800, Aaron Lu wrote: > On 05/26/2016 09:49 AM, Valdis.Kletnieks@vt.edu wrote: > > On Wed, 25 May 2016 13:15:26 +0800, Aaron Lu said: > >> Valdis, can you please give the patch a try? Thanks. > > > > Sorry, had a few days where actual work commitments and other > > things got in the way... I tested this patch against next-20160524, > > and can report that the problem is fixed, so feel free to > > stick a "Tested-By:" on it.... > > Thanks a lot for the confirm, here is the updated patch with your > tested-by tag added. > > From: Aaron Lu > Date: Sat, 21 May 2016 15:30:46 +0800 > Subject: [PATCH] ACPI / Thermal / video: fix max_level incorrect value > > commit 059500940def("ACPI/video: export acpi_video_get_levels") > mistakenly dropped the correct value of max_level and that caused the > set_level function following failed and the acpi_video backlight interface > didn't get created. Fix this by passing back the correct max_level value. > > While at it, also fix the param used in acpi_video_device_lcd_query_levels > where acpi_handle is expected but acpi_video_device is passed. > > Reported-and-tested-by: Valdis Kletnieks > Signed-off-by: Aaron Lu Acked-by: Zhang Rui > --- > drivers/acpi/acpi_video.c | 9 ++++++--- > drivers/thermal/int340x_thermal/int3406_thermal.c | 2 +- > include/acpi/video.h | 6 ++++-- > 3 files changed, 11 insertions(+), 6 deletions(-) > > diff --git a/drivers/acpi/acpi_video.c b/drivers/acpi/acpi_video.c > index 3d5b8a099351..c1d138e128cb 100644 > --- a/drivers/acpi/acpi_video.c > +++ b/drivers/acpi/acpi_video.c > @@ -754,7 +754,8 @@ static int acpi_video_bqc_quirk(struct acpi_video_device *device, > } > > int acpi_video_get_levels(struct acpi_device *device, > - struct acpi_video_device_brightness **dev_br) > + struct acpi_video_device_brightness **dev_br, > + int *pmax_level) > { > union acpi_object *obj = NULL; > int i, max_level = 0, count = 0, level_ac_battery = 0; > @@ -841,6 +842,8 @@ int acpi_video_get_levels(struct acpi_device *device, > > br->count = count; > *dev_br = br; > + if (pmax_level) > + *pmax_level = max_level; > > out: > kfree(obj); > @@ -869,7 +872,7 @@ acpi_video_init_brightness(struct acpi_video_device *device) > struct acpi_video_device_brightness *br = NULL; > int result = -EINVAL; > > - result = acpi_video_get_levels(device->dev, &br); > + result = acpi_video_get_levels(device->dev, &br, &max_level); > if (result) > return result; > device->brightness = br; > @@ -1737,7 +1740,7 @@ static void acpi_video_run_bcl_for_osi(struct acpi_video_bus *video) > > mutex_lock(&video->device_list_lock); > list_for_each_entry(dev, &video->video_device_list, entry) { > - if (!acpi_video_device_lcd_query_levels(dev, &levels)) > + if (!acpi_video_device_lcd_query_levels(dev->dev->handle, &levels)) > kfree(levels); > } > mutex_unlock(&video->device_list_lock); > diff --git a/drivers/thermal/int340x_thermal/int3406_thermal.c b/drivers/thermal/int340x_thermal/int3406_thermal.c > index 13d431cbd29e..a578cd257db4 100644 > --- a/drivers/thermal/int340x_thermal/int3406_thermal.c > +++ b/drivers/thermal/int340x_thermal/int3406_thermal.c > @@ -177,7 +177,7 @@ static int int3406_thermal_probe(struct platform_device *pdev) > return -ENODEV; > d->raw_bd = bd; > > - ret = acpi_video_get_levels(ACPI_COMPANION(&pdev->dev), &d->br); > + ret = acpi_video_get_levels(ACPI_COMPANION(&pdev->dev), &d->br, NULL); > if (ret) > return ret; > > diff --git a/include/acpi/video.h b/include/acpi/video.h > index 70a41f742037..5731ccb42585 100644 > --- a/include/acpi/video.h > +++ b/include/acpi/video.h > @@ -51,7 +51,8 @@ extern void acpi_video_set_dmi_backlight_type(enum acpi_backlight_type type); > */ > extern bool acpi_video_handles_brightness_key_presses(void); > extern int acpi_video_get_levels(struct acpi_device *device, > - struct acpi_video_device_brightness **dev_br); > + struct acpi_video_device_brightness **dev_br, > + int *pmax_level); > #else > static inline int acpi_video_register(void) { return 0; } > static inline void acpi_video_unregister(void) { return; } > @@ -72,7 +73,8 @@ static inline bool acpi_video_handles_brightness_key_presses(void) > return false; > } > static inline int acpi_video_get_levels(struct acpi_device *device, > - struct acpi_video_device_brightness **dev_br) > + struct acpi_video_device_brightness **dev_br, > + int *pmax_level) > { > return -ENODEV; > }