From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-12.8 required=3.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS,USER_AGENT_GIT autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id BFDFDC43459 for ; Sun, 19 Jul 2020 08:08:30 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 95C92207DF for ; Sun, 19 Jul 2020 08:08:30 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="IrCanXmj" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726436AbgGSIIa (ORCPT ); Sun, 19 Jul 2020 04:08:30 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:59536 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1725836AbgGSII3 (ORCPT ); Sun, 19 Jul 2020 04:08:29 -0400 Received: from mail-lj1-x242.google.com (mail-lj1-x242.google.com [IPv6:2a00:1450:4864:20::242]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 4BBB4C0619D2; Sun, 19 Jul 2020 01:08:29 -0700 (PDT) Received: by mail-lj1-x242.google.com with SMTP id z24so17016376ljn.8; Sun, 19 Jul 2020 01:08:29 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=2oUk5dB7J7+COnpUvZ6kNj04E6Mochd4jfjhtwnfEbs=; b=IrCanXmjvoAqf+Hjruy/ZoKWAwOC8nr6PLoyNOFxOEwEDiIoPRhIzunBJxpNqgozKA uV296DkD7i0r2jSOJE8ECAjP3EVMpEedTs6Gl9ippAoRI9fnLloY8TX9HRhKCHM31FIz K7nDiaJRJgnytwuVa4Kdy5ci/1JJN6sWlHnUrmIkIq3ME8v0mCeQmgZ8Dqd/iJWeBUoi 97X51oxz3dqvNTIznJhz4O/cJHfRSL2S6WAdFb32t0C/fBFA3KrMpAp+Byno/ac7eQ+N rL8cnyEHJcTfLvSP0JHfWiYTa+pO77dhRETiCbZdx+LJul/6/8bb+lol2KOeuRLnEl1r iHzQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references:mime-version:content-transfer-encoding; bh=2oUk5dB7J7+COnpUvZ6kNj04E6Mochd4jfjhtwnfEbs=; b=KCxIs5N1+DGKac9h1TkujQW9ANVRpY3a/RbZz3I9mgbnvlpFUCNWKUcA6dwavXncl5 vQeezaTaBxMQSBQa/IEnk+07fLdidCJd50s4mifwkXDhFrVTAE2dDBt50k5EOiYeithU mVmuevydX6ssigw26kqYzf8Wz0dPcy4xofxZGZ+L+7fVRKfSnuHcWSNNgQttt4KhdZ3q abzg4hj7ldnYrF/ZL3zIIHHaNVY/t8XxXSFHcfRkTfGb3zKIaXdtiB34J4C4Tb+jW/rp aH2VzNQ5/hH9zngKBfo9+z4ZK5KM6io06HiFLeTRijjhgTiWeWVozYjot9Kyaeabc6TK 2QXg== X-Gm-Message-State: AOAM5322cJx60M/WcY55jzMc7R4O/u57e/xMNJ9ZoxF0oK8zCEWDYhp5 s9QfKxLYyVqtBABGnktEbAY= X-Google-Smtp-Source: ABdhPJyQ7nsT10VYZhe/wlq1ENWZalb+MnBCDjVSFHoBIts/7BNTfXz41N1RXjR53Z4U4LsneSd8Tw== X-Received: by 2002:a2e:971a:: with SMTP id r26mr8563208lji.464.1595146107719; Sun, 19 Jul 2020 01:08:27 -0700 (PDT) Received: from saturn.lan ([2a00:fd00:805f:db00:d5fe:fe9c:fc06:b74c]) by smtp.gmail.com with ESMTPSA id 72sm732407lfh.97.2020.07.19.01.08.26 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 19 Jul 2020 01:08:27 -0700 (PDT) From: Sam Ravnborg To: dri-devel@lists.freedesktop.org, Jingoo Han , Lee Jones , Daniel Thompson Cc: Andy Gross , Bartlomiej Zolnierkiewicz , Bjorn Andersson , Daniel Vetter , David Airlie , Emil Velikov , Jonathan Corbet , linux-arm-msm@vger.kernel.org, linux-pwm@vger.kernel.org, Maarten Lankhorst , Maxime Ripard , Michael Hennerich , patches@opensource.cirrus.com, Support Opensource , Thierry Reding , Thomas Zimmermann , Uwe Kleine-Konig , Peter Ujfalusi , Tomi Valkeinen , Sam Ravnborg Subject: [PATCH v5 17/19] backlight: use backlight_get_brightness() Date: Sun, 19 Jul 2020 10:07:41 +0200 Message-Id: <20200719080743.8560-18-sam@ravnborg.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20200719080743.8560-1-sam@ravnborg.org> References: <20200719080743.8560-1-sam@ravnborg.org> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sender: linux-arm-msm-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-arm-msm@vger.kernel.org Introduce the backlight_get_brightness() helper in all video/backlight/* drivers. This simplifies the code and align the implementation of the update_status() operation across the different backlight drivers. Some of the drivers gains a little extra functionality by the change as they now respect the fb_blank() ioctl. v2: - Fix spelling in subject (Uwe) Signed-off-by: Sam Ravnborg Cc: Uwe Kleine-König Reviewed-by: Daniel Thompson --- drivers/video/backlight/88pm860x_bl.c | 13 +------------ drivers/video/backlight/adp5520_bl.c | 10 +--------- drivers/video/backlight/adp8860_bl.c | 10 +--------- drivers/video/backlight/adp8870_bl.c | 10 +--------- drivers/video/backlight/bd6107.c | 7 +------ drivers/video/backlight/corgi_lcd.c | 8 +------- drivers/video/backlight/da903x_bl.c | 13 +------------ drivers/video/backlight/ep93xx_bl.c | 8 +------- drivers/video/backlight/hp680_bl.c | 6 +----- drivers/video/backlight/kb3886_bl.c | 6 +----- drivers/video/backlight/led_bl.c | 7 +------ drivers/video/backlight/lm3533_bl.c | 8 +------- drivers/video/backlight/locomolcd.c | 6 +----- drivers/video/backlight/lv5207lp.c | 7 +------ drivers/video/backlight/max8925_bl.c | 13 +------------ drivers/video/backlight/pwm_bl.c | 7 +------ drivers/video/backlight/qcom-wled.c | 7 +------ drivers/video/backlight/tps65217_bl.c | 10 +--------- drivers/video/backlight/wm831x_bl.c | 13 +------------ 19 files changed, 19 insertions(+), 150 deletions(-) diff --git a/drivers/video/backlight/88pm860x_bl.c b/drivers/video/backlight/88pm860x_bl.c index 20d96a5ac384..25e409bbb1a2 100644 --- a/drivers/video/backlight/88pm860x_bl.c +++ b/drivers/video/backlight/88pm860x_bl.c @@ -121,18 +121,7 @@ static int pm860x_backlight_set(struct backlight_device *bl, int brightness) static int pm860x_backlight_update_status(struct backlight_device *bl) { - int brightness = bl->props.brightness; - - if (bl->props.power != FB_BLANK_UNBLANK) - brightness = 0; - - if (bl->props.fb_blank != FB_BLANK_UNBLANK) - brightness = 0; - - if (bl->props.state & BL_CORE_SUSPENDED) - brightness = 0; - - return pm860x_backlight_set(bl, brightness); + return pm860x_backlight_set(bl, backlight_get_brightness(bl)); } static int pm860x_backlight_get_brightness(struct backlight_device *bl) diff --git a/drivers/video/backlight/adp5520_bl.c b/drivers/video/backlight/adp5520_bl.c index 0f63f76723a5..686988c3df3a 100644 --- a/drivers/video/backlight/adp5520_bl.c +++ b/drivers/video/backlight/adp5520_bl.c @@ -65,15 +65,7 @@ static int adp5520_bl_set(struct backlight_device *bl, int brightness) static int adp5520_bl_update_status(struct backlight_device *bl) { - int brightness = bl->props.brightness; - - if (bl->props.power != FB_BLANK_UNBLANK) - brightness = 0; - - if (bl->props.fb_blank != FB_BLANK_UNBLANK) - brightness = 0; - - return adp5520_bl_set(bl, brightness); + return adp5520_bl_set(bl, backlight_get_brightness(bl)); } static int adp5520_bl_get_brightness(struct backlight_device *bl) diff --git a/drivers/video/backlight/adp8860_bl.c b/drivers/video/backlight/adp8860_bl.c index 19968104fc47..ddc7f5f0401f 100644 --- a/drivers/video/backlight/adp8860_bl.c +++ b/drivers/video/backlight/adp8860_bl.c @@ -361,15 +361,7 @@ static int adp8860_bl_set(struct backlight_device *bl, int brightness) static int adp8860_bl_update_status(struct backlight_device *bl) { - int brightness = bl->props.brightness; - - if (bl->props.power != FB_BLANK_UNBLANK) - brightness = 0; - - if (bl->props.fb_blank != FB_BLANK_UNBLANK) - brightness = 0; - - return adp8860_bl_set(bl, brightness); + return adp8860_bl_set(bl, backlight_get_brightness(bl)); } static int adp8860_bl_get_brightness(struct backlight_device *bl) diff --git a/drivers/video/backlight/adp8870_bl.c b/drivers/video/backlight/adp8870_bl.c index 4c0032010cfe..8b5213a39527 100644 --- a/drivers/video/backlight/adp8870_bl.c +++ b/drivers/video/backlight/adp8870_bl.c @@ -399,15 +399,7 @@ static int adp8870_bl_set(struct backlight_device *bl, int brightness) static int adp8870_bl_update_status(struct backlight_device *bl) { - int brightness = bl->props.brightness; - - if (bl->props.power != FB_BLANK_UNBLANK) - brightness = 0; - - if (bl->props.fb_blank != FB_BLANK_UNBLANK) - brightness = 0; - - return adp8870_bl_set(bl, brightness); + return adp8870_bl_set(bl, backlight_get_brightness(bl)); } static int adp8870_bl_get_brightness(struct backlight_device *bl) diff --git a/drivers/video/backlight/bd6107.c b/drivers/video/backlight/bd6107.c index d5d5fb457e78..515184fbe33a 100644 --- a/drivers/video/backlight/bd6107.c +++ b/drivers/video/backlight/bd6107.c @@ -82,12 +82,7 @@ static int bd6107_write(struct bd6107 *bd, u8 reg, u8 data) static int bd6107_backlight_update_status(struct backlight_device *backlight) { struct bd6107 *bd = bl_get_data(backlight); - int brightness = backlight->props.brightness; - - if (backlight->props.power != FB_BLANK_UNBLANK || - backlight->props.fb_blank != FB_BLANK_UNBLANK || - backlight->props.state & (BL_CORE_SUSPENDED | BL_CORE_FBBLANK)) - brightness = 0; + int brightness = backlight_get_brightness(backlight); if (brightness) { bd6107_write(bd, BD6107_PORTSEL, BD6107_PORTSEL_LEDM(2) | diff --git a/drivers/video/backlight/corgi_lcd.c b/drivers/video/backlight/corgi_lcd.c index 25ef0cbd7583..33f5d80495e6 100644 --- a/drivers/video/backlight/corgi_lcd.c +++ b/drivers/video/backlight/corgi_lcd.c @@ -420,13 +420,7 @@ static int corgi_bl_set_intensity(struct corgi_lcd *lcd, int intensity) static int corgi_bl_update_status(struct backlight_device *bd) { struct corgi_lcd *lcd = bl_get_data(bd); - int intensity = bd->props.brightness; - - if (bd->props.power != FB_BLANK_UNBLANK) - intensity = 0; - - if (bd->props.fb_blank != FB_BLANK_UNBLANK) - intensity = 0; + int intensity = backlight_get_brightness(bd); if (corgibl_flags & CORGIBL_SUSPENDED) intensity = 0; diff --git a/drivers/video/backlight/da903x_bl.c b/drivers/video/backlight/da903x_bl.c index 62540e4bdedb..71f21bbc7a9f 100644 --- a/drivers/video/backlight/da903x_bl.c +++ b/drivers/video/backlight/da903x_bl.c @@ -77,18 +77,7 @@ static int da903x_backlight_set(struct backlight_device *bl, int brightness) static int da903x_backlight_update_status(struct backlight_device *bl) { - int brightness = bl->props.brightness; - - if (bl->props.power != FB_BLANK_UNBLANK) - brightness = 0; - - if (bl->props.fb_blank != FB_BLANK_UNBLANK) - brightness = 0; - - if (bl->props.state & BL_CORE_SUSPENDED) - brightness = 0; - - return da903x_backlight_set(bl, brightness); + return da903x_backlight_set(bl, backlight_get_brightness(bl)); } static int da903x_backlight_get_brightness(struct backlight_device *bl) diff --git a/drivers/video/backlight/ep93xx_bl.c b/drivers/video/backlight/ep93xx_bl.c index 4149e0b2f83c..2387009d452d 100644 --- a/drivers/video/backlight/ep93xx_bl.c +++ b/drivers/video/backlight/ep93xx_bl.c @@ -36,13 +36,7 @@ static int ep93xxbl_set(struct backlight_device *bl, int brightness) static int ep93xxbl_update_status(struct backlight_device *bl) { - int brightness = bl->props.brightness; - - if (bl->props.power != FB_BLANK_UNBLANK || - bl->props.fb_blank != FB_BLANK_UNBLANK) - brightness = 0; - - return ep93xxbl_set(bl, brightness); + return ep93xxbl_set(bl, backlight_get_brightness(bl)); } static int ep93xxbl_get_brightness(struct backlight_device *bl) diff --git a/drivers/video/backlight/hp680_bl.c b/drivers/video/backlight/hp680_bl.c index 8ea42b8d9bc8..9123c33def05 100644 --- a/drivers/video/backlight/hp680_bl.c +++ b/drivers/video/backlight/hp680_bl.c @@ -33,12 +33,8 @@ static void hp680bl_send_intensity(struct backlight_device *bd) { unsigned long flags; u16 v; - int intensity = bd->props.brightness; + int intensity = backlight_get_brightness(bd); - if (bd->props.power != FB_BLANK_UNBLANK) - intensity = 0; - if (bd->props.fb_blank != FB_BLANK_UNBLANK) - intensity = 0; if (hp680bl_suspended) intensity = 0; diff --git a/drivers/video/backlight/kb3886_bl.c b/drivers/video/backlight/kb3886_bl.c index 1dfe13c18925..55794b239cff 100644 --- a/drivers/video/backlight/kb3886_bl.c +++ b/drivers/video/backlight/kb3886_bl.c @@ -87,12 +87,8 @@ static const struct dmi_system_id kb3886bl_device_table[] __initconst = { static int kb3886bl_send_intensity(struct backlight_device *bd) { - int intensity = bd->props.brightness; + int intensity = backlight_get_brightness(bd); - if (bd->props.power != FB_BLANK_UNBLANK) - intensity = 0; - if (bd->props.fb_blank != FB_BLANK_UNBLANK) - intensity = 0; if (kb3886bl_flags & KB3886BL_SUSPENDED) intensity = 0; diff --git a/drivers/video/backlight/led_bl.c b/drivers/video/backlight/led_bl.c index 3f66549997c8..f54d256e2d54 100644 --- a/drivers/video/backlight/led_bl.c +++ b/drivers/video/backlight/led_bl.c @@ -54,12 +54,7 @@ static void led_bl_power_off(struct led_bl_data *priv) static int led_bl_update_status(struct backlight_device *bl) { struct led_bl_data *priv = bl_get_data(bl); - int brightness = bl->props.brightness; - - if (bl->props.power != FB_BLANK_UNBLANK || - bl->props.fb_blank != FB_BLANK_UNBLANK || - bl->props.state & BL_CORE_FBBLANK) - brightness = 0; + int brightness = backlight_get_brightness(bl); if (brightness > 0) led_bl_set_brightness(priv, brightness); diff --git a/drivers/video/backlight/lm3533_bl.c b/drivers/video/backlight/lm3533_bl.c index 0c7830f793de..1df1b6643c0b 100644 --- a/drivers/video/backlight/lm3533_bl.c +++ b/drivers/video/backlight/lm3533_bl.c @@ -39,14 +39,8 @@ static inline int lm3533_bl_get_ctrlbank_id(struct lm3533_bl *bl) static int lm3533_bl_update_status(struct backlight_device *bd) { struct lm3533_bl *bl = bl_get_data(bd); - int brightness = bd->props.brightness; - if (bd->props.power != FB_BLANK_UNBLANK) - brightness = 0; - if (bd->props.fb_blank != FB_BLANK_UNBLANK) - brightness = 0; - - return lm3533_ctrlbank_set_brightness(&bl->cb, (u8)brightness); + return lm3533_ctrlbank_set_brightness(&bl->cb, backlight_get_brightness(bd)); } static int lm3533_bl_get_brightness(struct backlight_device *bd) diff --git a/drivers/video/backlight/locomolcd.c b/drivers/video/backlight/locomolcd.c index cdc02e04f89d..297ee2e1ab0b 100644 --- a/drivers/video/backlight/locomolcd.c +++ b/drivers/video/backlight/locomolcd.c @@ -111,12 +111,8 @@ static int current_intensity; static int locomolcd_set_intensity(struct backlight_device *bd) { - int intensity = bd->props.brightness; + int intensity = backlight_get_brightness(bd); - if (bd->props.power != FB_BLANK_UNBLANK) - intensity = 0; - if (bd->props.fb_blank != FB_BLANK_UNBLANK) - intensity = 0; if (locomolcd_flags & LOCOMOLCD_SUSPENDED) intensity = 0; diff --git a/drivers/video/backlight/lv5207lp.c b/drivers/video/backlight/lv5207lp.c index c6ad73a784e2..1842ae9a55f8 100644 --- a/drivers/video/backlight/lv5207lp.c +++ b/drivers/video/backlight/lv5207lp.c @@ -46,12 +46,7 @@ static int lv5207lp_write(struct lv5207lp *lv, u8 reg, u8 data) static int lv5207lp_backlight_update_status(struct backlight_device *backlight) { struct lv5207lp *lv = bl_get_data(backlight); - int brightness = backlight->props.brightness; - - if (backlight->props.power != FB_BLANK_UNBLANK || - backlight->props.fb_blank != FB_BLANK_UNBLANK || - backlight->props.state & (BL_CORE_SUSPENDED | BL_CORE_FBBLANK)) - brightness = 0; + int brightness = backlight_get_brightness(backlight); if (brightness) { lv5207lp_write(lv, LV5207LP_CTRL1, diff --git a/drivers/video/backlight/max8925_bl.c b/drivers/video/backlight/max8925_bl.c index 97cc260ff9d1..e607ec6fd4bf 100644 --- a/drivers/video/backlight/max8925_bl.c +++ b/drivers/video/backlight/max8925_bl.c @@ -64,18 +64,7 @@ static int max8925_backlight_set(struct backlight_device *bl, int brightness) static int max8925_backlight_update_status(struct backlight_device *bl) { - int brightness = bl->props.brightness; - - if (bl->props.power != FB_BLANK_UNBLANK) - brightness = 0; - - if (bl->props.fb_blank != FB_BLANK_UNBLANK) - brightness = 0; - - if (bl->props.state & BL_CORE_SUSPENDED) - brightness = 0; - - return max8925_backlight_set(bl, brightness); + return max8925_backlight_set(bl, backlight_get_brightness(bl)); } static int max8925_backlight_get_brightness(struct backlight_device *bl) diff --git a/drivers/video/backlight/pwm_bl.c b/drivers/video/backlight/pwm_bl.c index 82b8d7594701..eff64db2e02e 100644 --- a/drivers/video/backlight/pwm_bl.c +++ b/drivers/video/backlight/pwm_bl.c @@ -108,14 +108,9 @@ static int compute_duty_cycle(struct pwm_bl_data *pb, int brightness) static int pwm_backlight_update_status(struct backlight_device *bl) { struct pwm_bl_data *pb = bl_get_data(bl); - int brightness = bl->props.brightness; + int brightness = backlight_get_brightness(bl); struct pwm_state state; - if (bl->props.power != FB_BLANK_UNBLANK || - bl->props.fb_blank != FB_BLANK_UNBLANK || - bl->props.state & BL_CORE_FBBLANK) - brightness = 0; - if (pb->notify) brightness = pb->notify(pb->dev, brightness); diff --git a/drivers/video/backlight/qcom-wled.c b/drivers/video/backlight/qcom-wled.c index c25c31199952..3bc7800eb0a9 100644 --- a/drivers/video/backlight/qcom-wled.c +++ b/drivers/video/backlight/qcom-wled.c @@ -433,14 +433,9 @@ static int wled5_ovp_delay(struct wled *wled) static int wled_update_status(struct backlight_device *bl) { struct wled *wled = bl_get_data(bl); - u16 brightness = bl->props.brightness; + u16 brightness = backlight_get_brightness(bl); int rc = 0; - if (bl->props.power != FB_BLANK_UNBLANK || - bl->props.fb_blank != FB_BLANK_UNBLANK || - bl->props.state & BL_CORE_FBBLANK) - brightness = 0; - mutex_lock(&wled->lock); if (brightness) { rc = wled->wled_set_brightness(wled, brightness); diff --git a/drivers/video/backlight/tps65217_bl.c b/drivers/video/backlight/tps65217_bl.c index 762e3feed097..8457166f357f 100644 --- a/drivers/video/backlight/tps65217_bl.c +++ b/drivers/video/backlight/tps65217_bl.c @@ -77,15 +77,7 @@ static int tps65217_bl_update_status(struct backlight_device *bl) { struct tps65217_bl *tps65217_bl = bl_get_data(bl); int rc; - int brightness = bl->props.brightness; - - if (bl->props.state & BL_CORE_SUSPENDED) - brightness = 0; - - if ((bl->props.power != FB_BLANK_UNBLANK) || - (bl->props.fb_blank != FB_BLANK_UNBLANK)) - /* framebuffer in low power mode or blanking active */ - brightness = 0; + int brightness = backlight_get_brightness(bl); if (brightness > 0) { rc = tps65217_reg_write(tps65217_bl->tps, diff --git a/drivers/video/backlight/wm831x_bl.c b/drivers/video/backlight/wm831x_bl.c index e55977d54c15..c5aaee205bdf 100644 --- a/drivers/video/backlight/wm831x_bl.c +++ b/drivers/video/backlight/wm831x_bl.c @@ -91,18 +91,7 @@ static int wm831x_backlight_set(struct backlight_device *bl, int brightness) static int wm831x_backlight_update_status(struct backlight_device *bl) { - int brightness = bl->props.brightness; - - if (bl->props.power != FB_BLANK_UNBLANK) - brightness = 0; - - if (bl->props.fb_blank != FB_BLANK_UNBLANK) - brightness = 0; - - if (bl->props.state & BL_CORE_SUSPENDED) - brightness = 0; - - return wm831x_backlight_set(bl, brightness); + return wm831x_backlight_set(bl, backlight_get_brightness(bl)); } static int wm831x_backlight_get_brightness(struct backlight_device *bl) -- 2.25.1 From mboxrd@z Thu Jan 1 00:00:00 1970 From: Sam Ravnborg Subject: [PATCH v5 17/19] backlight: use backlight_get_brightness() Date: Sun, 19 Jul 2020 10:07:41 +0200 Message-ID: <20200719080743.8560-18-sam@ravnborg.org> References: <20200719080743.8560-1-sam@ravnborg.org> Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Return-path: Received: from lindbergh.monkeyblade.net ([23.128.96.19]:59536 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1725836AbgGSII3 (ORCPT ); Sun, 19 Jul 2020 04:08:29 -0400 In-Reply-To: <20200719080743.8560-1-sam@ravnborg.org> Sender: linux-pwm-owner@vger.kernel.org List-Id: linux-pwm@vger.kernel.org To: dri-devel@lists.freedesktop.org, Jingoo Han , Lee Jones , Daniel Thompson Cc: Andy Gross , Bartlomiej Zolnierkiewicz , Bjorn Andersson , Daniel Vetter , David Airlie , Emil Velikov , Jonathan Corbet , linux-arm-msm@vger.kernel.org, linux-pwm@vger.kernel.org, Maarten Lankhorst , Maxime Ripard , Michael Hennerich , patches@opensource.cirrus.com, Support Opensource , Thierry Reding , Thomas Zimmermann , Uwe Kleine-Konig , Peter Ujfalusi , Tomi Valkeinen Introduce the backlight_get_brightness() helper in all video/backlight/* drivers. This simplifies the code and align the implementation of the update_status() operation across the different backlight drivers. Some of the drivers gains a little extra functionality by the change as they now respect the fb_blank() ioctl. v2: - Fix spelling in subject (Uwe) Signed-off-by: Sam Ravnborg Cc: Uwe Kleine-König Reviewed-by: Daniel Thompson --- drivers/video/backlight/88pm860x_bl.c | 13 +------------ drivers/video/backlight/adp5520_bl.c | 10 +--------- drivers/video/backlight/adp8860_bl.c | 10 +--------- drivers/video/backlight/adp8870_bl.c | 10 +--------- drivers/video/backlight/bd6107.c | 7 +------ drivers/video/backlight/corgi_lcd.c | 8 +------- drivers/video/backlight/da903x_bl.c | 13 +------------ drivers/video/backlight/ep93xx_bl.c | 8 +------- drivers/video/backlight/hp680_bl.c | 6 +----- drivers/video/backlight/kb3886_bl.c | 6 +----- drivers/video/backlight/led_bl.c | 7 +------ drivers/video/backlight/lm3533_bl.c | 8 +------- drivers/video/backlight/locomolcd.c | 6 +----- drivers/video/backlight/lv5207lp.c | 7 +------ drivers/video/backlight/max8925_bl.c | 13 +------------ drivers/video/backlight/pwm_bl.c | 7 +------ drivers/video/backlight/qcom-wled.c | 7 +------ drivers/video/backlight/tps65217_bl.c | 10 +--------- drivers/video/backlight/wm831x_bl.c | 13 +------------ 19 files changed, 19 insertions(+), 150 deletions(-) diff --git a/drivers/video/backlight/88pm860x_bl.c b/drivers/video/backlight/88pm860x_bl.c index 20d96a5ac384..25e409bbb1a2 100644 --- a/drivers/video/backlight/88pm860x_bl.c +++ b/drivers/video/backlight/88pm860x_bl.c @@ -121,18 +121,7 @@ static int pm860x_backlight_set(struct backlight_device *bl, int brightness) static int pm860x_backlight_update_status(struct backlight_device *bl) { - int brightness = bl->props.brightness; - - if (bl->props.power != FB_BLANK_UNBLANK) - brightness = 0; - - if (bl->props.fb_blank != FB_BLANK_UNBLANK) - brightness = 0; - - if (bl->props.state & BL_CORE_SUSPENDED) - brightness = 0; - - return pm860x_backlight_set(bl, brightness); + return pm860x_backlight_set(bl, backlight_get_brightness(bl)); } static int pm860x_backlight_get_brightness(struct backlight_device *bl) diff --git a/drivers/video/backlight/adp5520_bl.c b/drivers/video/backlight/adp5520_bl.c index 0f63f76723a5..686988c3df3a 100644 --- a/drivers/video/backlight/adp5520_bl.c +++ b/drivers/video/backlight/adp5520_bl.c @@ -65,15 +65,7 @@ static int adp5520_bl_set(struct backlight_device *bl, int brightness) static int adp5520_bl_update_status(struct backlight_device *bl) { - int brightness = bl->props.brightness; - - if (bl->props.power != FB_BLANK_UNBLANK) - brightness = 0; - - if (bl->props.fb_blank != FB_BLANK_UNBLANK) - brightness = 0; - - return adp5520_bl_set(bl, brightness); + return adp5520_bl_set(bl, backlight_get_brightness(bl)); } static int adp5520_bl_get_brightness(struct backlight_device *bl) diff --git a/drivers/video/backlight/adp8860_bl.c b/drivers/video/backlight/adp8860_bl.c index 19968104fc47..ddc7f5f0401f 100644 --- a/drivers/video/backlight/adp8860_bl.c +++ b/drivers/video/backlight/adp8860_bl.c @@ -361,15 +361,7 @@ static int adp8860_bl_set(struct backlight_device *bl, int brightness) static int adp8860_bl_update_status(struct backlight_device *bl) { - int brightness = bl->props.brightness; - - if (bl->props.power != FB_BLANK_UNBLANK) - brightness = 0; - - if (bl->props.fb_blank != FB_BLANK_UNBLANK) - brightness = 0; - - return adp8860_bl_set(bl, brightness); + return adp8860_bl_set(bl, backlight_get_brightness(bl)); } static int adp8860_bl_get_brightness(struct backlight_device *bl) diff --git a/drivers/video/backlight/adp8870_bl.c b/drivers/video/backlight/adp8870_bl.c index 4c0032010cfe..8b5213a39527 100644 --- a/drivers/video/backlight/adp8870_bl.c +++ b/drivers/video/backlight/adp8870_bl.c @@ -399,15 +399,7 @@ static int adp8870_bl_set(struct backlight_device *bl, int brightness) static int adp8870_bl_update_status(struct backlight_device *bl) { - int brightness = bl->props.brightness; - - if (bl->props.power != FB_BLANK_UNBLANK) - brightness = 0; - - if (bl->props.fb_blank != FB_BLANK_UNBLANK) - brightness = 0; - - return adp8870_bl_set(bl, brightness); + return adp8870_bl_set(bl, backlight_get_brightness(bl)); } static int adp8870_bl_get_brightness(struct backlight_device *bl) diff --git a/drivers/video/backlight/bd6107.c b/drivers/video/backlight/bd6107.c index d5d5fb457e78..515184fbe33a 100644 --- a/drivers/video/backlight/bd6107.c +++ b/drivers/video/backlight/bd6107.c @@ -82,12 +82,7 @@ static int bd6107_write(struct bd6107 *bd, u8 reg, u8 data) static int bd6107_backlight_update_status(struct backlight_device *backlight) { struct bd6107 *bd = bl_get_data(backlight); - int brightness = backlight->props.brightness; - - if (backlight->props.power != FB_BLANK_UNBLANK || - backlight->props.fb_blank != FB_BLANK_UNBLANK || - backlight->props.state & (BL_CORE_SUSPENDED | BL_CORE_FBBLANK)) - brightness = 0; + int brightness = backlight_get_brightness(backlight); if (brightness) { bd6107_write(bd, BD6107_PORTSEL, BD6107_PORTSEL_LEDM(2) | diff --git a/drivers/video/backlight/corgi_lcd.c b/drivers/video/backlight/corgi_lcd.c index 25ef0cbd7583..33f5d80495e6 100644 --- a/drivers/video/backlight/corgi_lcd.c +++ b/drivers/video/backlight/corgi_lcd.c @@ -420,13 +420,7 @@ static int corgi_bl_set_intensity(struct corgi_lcd *lcd, int intensity) static int corgi_bl_update_status(struct backlight_device *bd) { struct corgi_lcd *lcd = bl_get_data(bd); - int intensity = bd->props.brightness; - - if (bd->props.power != FB_BLANK_UNBLANK) - intensity = 0; - - if (bd->props.fb_blank != FB_BLANK_UNBLANK) - intensity = 0; + int intensity = backlight_get_brightness(bd); if (corgibl_flags & CORGIBL_SUSPENDED) intensity = 0; diff --git a/drivers/video/backlight/da903x_bl.c b/drivers/video/backlight/da903x_bl.c index 62540e4bdedb..71f21bbc7a9f 100644 --- a/drivers/video/backlight/da903x_bl.c +++ b/drivers/video/backlight/da903x_bl.c @@ -77,18 +77,7 @@ static int da903x_backlight_set(struct backlight_device *bl, int brightness) static int da903x_backlight_update_status(struct backlight_device *bl) { - int brightness = bl->props.brightness; - - if (bl->props.power != FB_BLANK_UNBLANK) - brightness = 0; - - if (bl->props.fb_blank != FB_BLANK_UNBLANK) - brightness = 0; - - if (bl->props.state & BL_CORE_SUSPENDED) - brightness = 0; - - return da903x_backlight_set(bl, brightness); + return da903x_backlight_set(bl, backlight_get_brightness(bl)); } static int da903x_backlight_get_brightness(struct backlight_device *bl) diff --git a/drivers/video/backlight/ep93xx_bl.c b/drivers/video/backlight/ep93xx_bl.c index 4149e0b2f83c..2387009d452d 100644 --- a/drivers/video/backlight/ep93xx_bl.c +++ b/drivers/video/backlight/ep93xx_bl.c @@ -36,13 +36,7 @@ static int ep93xxbl_set(struct backlight_device *bl, int brightness) static int ep93xxbl_update_status(struct backlight_device *bl) { - int brightness = bl->props.brightness; - - if (bl->props.power != FB_BLANK_UNBLANK || - bl->props.fb_blank != FB_BLANK_UNBLANK) - brightness = 0; - - return ep93xxbl_set(bl, brightness); + return ep93xxbl_set(bl, backlight_get_brightness(bl)); } static int ep93xxbl_get_brightness(struct backlight_device *bl) diff --git a/drivers/video/backlight/hp680_bl.c b/drivers/video/backlight/hp680_bl.c index 8ea42b8d9bc8..9123c33def05 100644 --- a/drivers/video/backlight/hp680_bl.c +++ b/drivers/video/backlight/hp680_bl.c @@ -33,12 +33,8 @@ static void hp680bl_send_intensity(struct backlight_device *bd) { unsigned long flags; u16 v; - int intensity = bd->props.brightness; + int intensity = backlight_get_brightness(bd); - if (bd->props.power != FB_BLANK_UNBLANK) - intensity = 0; - if (bd->props.fb_blank != FB_BLANK_UNBLANK) - intensity = 0; if (hp680bl_suspended) intensity = 0; diff --git a/drivers/video/backlight/kb3886_bl.c b/drivers/video/backlight/kb3886_bl.c index 1dfe13c18925..55794b239cff 100644 --- a/drivers/video/backlight/kb3886_bl.c +++ b/drivers/video/backlight/kb3886_bl.c @@ -87,12 +87,8 @@ static const struct dmi_system_id kb3886bl_device_table[] __initconst = { static int kb3886bl_send_intensity(struct backlight_device *bd) { - int intensity = bd->props.brightness; + int intensity = backlight_get_brightness(bd); - if (bd->props.power != FB_BLANK_UNBLANK) - intensity = 0; - if (bd->props.fb_blank != FB_BLANK_UNBLANK) - intensity = 0; if (kb3886bl_flags & KB3886BL_SUSPENDED) intensity = 0; diff --git a/drivers/video/backlight/led_bl.c b/drivers/video/backlight/led_bl.c index 3f66549997c8..f54d256e2d54 100644 --- a/drivers/video/backlight/led_bl.c +++ b/drivers/video/backlight/led_bl.c @@ -54,12 +54,7 @@ static void led_bl_power_off(struct led_bl_data *priv) static int led_bl_update_status(struct backlight_device *bl) { struct led_bl_data *priv = bl_get_data(bl); - int brightness = bl->props.brightness; - - if (bl->props.power != FB_BLANK_UNBLANK || - bl->props.fb_blank != FB_BLANK_UNBLANK || - bl->props.state & BL_CORE_FBBLANK) - brightness = 0; + int brightness = backlight_get_brightness(bl); if (brightness > 0) led_bl_set_brightness(priv, brightness); diff --git a/drivers/video/backlight/lm3533_bl.c b/drivers/video/backlight/lm3533_bl.c index 0c7830f793de..1df1b6643c0b 100644 --- a/drivers/video/backlight/lm3533_bl.c +++ b/drivers/video/backlight/lm3533_bl.c @@ -39,14 +39,8 @@ static inline int lm3533_bl_get_ctrlbank_id(struct lm3533_bl *bl) static int lm3533_bl_update_status(struct backlight_device *bd) { struct lm3533_bl *bl = bl_get_data(bd); - int brightness = bd->props.brightness; - if (bd->props.power != FB_BLANK_UNBLANK) - brightness = 0; - if (bd->props.fb_blank != FB_BLANK_UNBLANK) - brightness = 0; - - return lm3533_ctrlbank_set_brightness(&bl->cb, (u8)brightness); + return lm3533_ctrlbank_set_brightness(&bl->cb, backlight_get_brightness(bd)); } static int lm3533_bl_get_brightness(struct backlight_device *bd) diff --git a/drivers/video/backlight/locomolcd.c b/drivers/video/backlight/locomolcd.c index cdc02e04f89d..297ee2e1ab0b 100644 --- a/drivers/video/backlight/locomolcd.c +++ b/drivers/video/backlight/locomolcd.c @@ -111,12 +111,8 @@ static int current_intensity; static int locomolcd_set_intensity(struct backlight_device *bd) { - int intensity = bd->props.brightness; + int intensity = backlight_get_brightness(bd); - if (bd->props.power != FB_BLANK_UNBLANK) - intensity = 0; - if (bd->props.fb_blank != FB_BLANK_UNBLANK) - intensity = 0; if (locomolcd_flags & LOCOMOLCD_SUSPENDED) intensity = 0; diff --git a/drivers/video/backlight/lv5207lp.c b/drivers/video/backlight/lv5207lp.c index c6ad73a784e2..1842ae9a55f8 100644 --- a/drivers/video/backlight/lv5207lp.c +++ b/drivers/video/backlight/lv5207lp.c @@ -46,12 +46,7 @@ static int lv5207lp_write(struct lv5207lp *lv, u8 reg, u8 data) static int lv5207lp_backlight_update_status(struct backlight_device *backlight) { struct lv5207lp *lv = bl_get_data(backlight); - int brightness = backlight->props.brightness; - - if (backlight->props.power != FB_BLANK_UNBLANK || - backlight->props.fb_blank != FB_BLANK_UNBLANK || - backlight->props.state & (BL_CORE_SUSPENDED | BL_CORE_FBBLANK)) - brightness = 0; + int brightness = backlight_get_brightness(backlight); if (brightness) { lv5207lp_write(lv, LV5207LP_CTRL1, diff --git a/drivers/video/backlight/max8925_bl.c b/drivers/video/backlight/max8925_bl.c index 97cc260ff9d1..e607ec6fd4bf 100644 --- a/drivers/video/backlight/max8925_bl.c +++ b/drivers/video/backlight/max8925_bl.c @@ -64,18 +64,7 @@ static int max8925_backlight_set(struct backlight_device *bl, int brightness) static int max8925_backlight_update_status(struct backlight_device *bl) { - int brightness = bl->props.brightness; - - if (bl->props.power != FB_BLANK_UNBLANK) - brightness = 0; - - if (bl->props.fb_blank != FB_BLANK_UNBLANK) - brightness = 0; - - if (bl->props.state & BL_CORE_SUSPENDED) - brightness = 0; - - return max8925_backlight_set(bl, brightness); + return max8925_backlight_set(bl, backlight_get_brightness(bl)); } static int max8925_backlight_get_brightness(struct backlight_device *bl) diff --git a/drivers/video/backlight/pwm_bl.c b/drivers/video/backlight/pwm_bl.c index 82b8d7594701..eff64db2e02e 100644 --- a/drivers/video/backlight/pwm_bl.c +++ b/drivers/video/backlight/pwm_bl.c @@ -108,14 +108,9 @@ static int compute_duty_cycle(struct pwm_bl_data *pb, int brightness) static int pwm_backlight_update_status(struct backlight_device *bl) { struct pwm_bl_data *pb = bl_get_data(bl); - int brightness = bl->props.brightness; + int brightness = backlight_get_brightness(bl); struct pwm_state state; - if (bl->props.power != FB_BLANK_UNBLANK || - bl->props.fb_blank != FB_BLANK_UNBLANK || - bl->props.state & BL_CORE_FBBLANK) - brightness = 0; - if (pb->notify) brightness = pb->notify(pb->dev, brightness); diff --git a/drivers/video/backlight/qcom-wled.c b/drivers/video/backlight/qcom-wled.c index c25c31199952..3bc7800eb0a9 100644 --- a/drivers/video/backlight/qcom-wled.c +++ b/drivers/video/backlight/qcom-wled.c @@ -433,14 +433,9 @@ static int wled5_ovp_delay(struct wled *wled) static int wled_update_status(struct backlight_device *bl) { struct wled *wled = bl_get_data(bl); - u16 brightness = bl->props.brightness; + u16 brightness = backlight_get_brightness(bl); int rc = 0; - if (bl->props.power != FB_BLANK_UNBLANK || - bl->props.fb_blank != FB_BLANK_UNBLANK || - bl->props.state & BL_CORE_FBBLANK) - brightness = 0; - mutex_lock(&wled->lock); if (brightness) { rc = wled->wled_set_brightness(wled, brightness); diff --git a/drivers/video/backlight/tps65217_bl.c b/drivers/video/backlight/tps65217_bl.c index 762e3feed097..8457166f357f 100644 --- a/drivers/video/backlight/tps65217_bl.c +++ b/drivers/video/backlight/tps65217_bl.c @@ -77,15 +77,7 @@ static int tps65217_bl_update_status(struct backlight_device *bl) { struct tps65217_bl *tps65217_bl = bl_get_data(bl); int rc; - int brightness = bl->props.brightness; - - if (bl->props.state & BL_CORE_SUSPENDED) - brightness = 0; - - if ((bl->props.power != FB_BLANK_UNBLANK) || - (bl->props.fb_blank != FB_BLANK_UNBLANK)) - /* framebuffer in low power mode or blanking active */ - brightness = 0; + int brightness = backlight_get_brightness(bl); if (brightness > 0) { rc = tps65217_reg_write(tps65217_bl->tps, diff --git a/drivers/video/backlight/wm831x_bl.c b/drivers/video/backlight/wm831x_bl.c index e55977d54c15..c5aaee205bdf 100644 --- a/drivers/video/backlight/wm831x_bl.c +++ b/drivers/video/backlight/wm831x_bl.c @@ -91,18 +91,7 @@ static int wm831x_backlight_set(struct backlight_device *bl, int brightness) static int wm831x_backlight_update_status(struct backlight_device *bl) { - int brightness = bl->props.brightness; - - if (bl->props.power != FB_BLANK_UNBLANK) - brightness = 0; - - if (bl->props.fb_blank != FB_BLANK_UNBLANK) - brightness = 0; - - if (bl->props.state & BL_CORE_SUSPENDED) - brightness = 0; - - return wm831x_backlight_set(bl, brightness); + return wm831x_backlight_set(bl, backlight_get_brightness(bl)); } static int wm831x_backlight_get_brightness(struct backlight_device *bl) -- 2.25.1 From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-12.8 required=3.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS,USER_AGENT_GIT autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id D0F0CC433E2 for ; Sun, 19 Jul 2020 08:08:40 +0000 (UTC) Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id A511D207DF for ; Sun, 19 Jul 2020 08:08:40 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="IrCanXmj" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org A511D207DF Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=ravnborg.org Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=dri-devel-bounces@lists.freedesktop.org Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 44C486E4FF; Sun, 19 Jul 2020 08:08:36 +0000 (UTC) Received: from mail-lj1-x242.google.com (mail-lj1-x242.google.com [IPv6:2a00:1450:4864:20::242]) by gabe.freedesktop.org (Postfix) with ESMTPS id A6B4F6E4F1 for ; Sun, 19 Jul 2020 08:08:29 +0000 (UTC) Received: by mail-lj1-x242.google.com with SMTP id x9so17029164ljc.5 for ; Sun, 19 Jul 2020 01:08:29 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=2oUk5dB7J7+COnpUvZ6kNj04E6Mochd4jfjhtwnfEbs=; b=IrCanXmjvoAqf+Hjruy/ZoKWAwOC8nr6PLoyNOFxOEwEDiIoPRhIzunBJxpNqgozKA uV296DkD7i0r2jSOJE8ECAjP3EVMpEedTs6Gl9ippAoRI9fnLloY8TX9HRhKCHM31FIz K7nDiaJRJgnytwuVa4Kdy5ci/1JJN6sWlHnUrmIkIq3ME8v0mCeQmgZ8Dqd/iJWeBUoi 97X51oxz3dqvNTIznJhz4O/cJHfRSL2S6WAdFb32t0C/fBFA3KrMpAp+Byno/ac7eQ+N rL8cnyEHJcTfLvSP0JHfWiYTa+pO77dhRETiCbZdx+LJul/6/8bb+lol2KOeuRLnEl1r iHzQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references:mime-version:content-transfer-encoding; bh=2oUk5dB7J7+COnpUvZ6kNj04E6Mochd4jfjhtwnfEbs=; b=pGsd2ohPhbRCEFXD/BHZ4avUrwjA61JCzLcHJXcNW4ijxIkm1KYNpaW9kqQafxRGMj KdipcOvCur5y/Hk9QvCv/0fUAM5R21wbVV8MjBeXxM2WWInadAi+2LbL7ZQDhVwN+gOe mvutWTzbl8n4F8sRF83pUMYXTDSaygALyK2F12aNnOGxDOVkm17bvKfJ/4BZr4RwBIN+ q+GoCgRBOoE7KM1jsKkn+6vZ3Pm9+VXhI08Eqe65CV1ru8DfP1TPrclkIhokvGwWLVjv VhpCQ7NhqjEFw+FN5tMiv9P5q+UEG0ukyYic2E1xMaPwaacbF9gSxZRM65jqNJSPMEgC +W2A== X-Gm-Message-State: AOAM53299/WDJBaVfvbycfqxSLZ4jEXphgsgyibWAL5p35yKr1sp/wAJ guMadVFb6HFo7uwIuDz/nlwoDrdHv20= X-Google-Smtp-Source: ABdhPJyQ7nsT10VYZhe/wlq1ENWZalb+MnBCDjVSFHoBIts/7BNTfXz41N1RXjR53Z4U4LsneSd8Tw== X-Received: by 2002:a2e:971a:: with SMTP id r26mr8563208lji.464.1595146107719; Sun, 19 Jul 2020 01:08:27 -0700 (PDT) Received: from saturn.lan ([2a00:fd00:805f:db00:d5fe:fe9c:fc06:b74c]) by smtp.gmail.com with ESMTPSA id 72sm732407lfh.97.2020.07.19.01.08.26 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 19 Jul 2020 01:08:27 -0700 (PDT) From: Sam Ravnborg To: dri-devel@lists.freedesktop.org, Jingoo Han , Lee Jones , Daniel Thompson Subject: [PATCH v5 17/19] backlight: use backlight_get_brightness() Date: Sun, 19 Jul 2020 10:07:41 +0200 Message-Id: <20200719080743.8560-18-sam@ravnborg.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20200719080743.8560-1-sam@ravnborg.org> References: <20200719080743.8560-1-sam@ravnborg.org> MIME-Version: 1.0 X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: linux-pwm@vger.kernel.org, Support Opensource , Michael Hennerich , Bartlomiej Zolnierkiewicz , David Airlie , Daniel Vetter , Tomi Valkeinen , Jonathan Corbet , Emil Velikov , Bjorn Andersson , Peter Ujfalusi , Andy Gross , Thierry Reding , Thomas Zimmermann , linux-arm-msm@vger.kernel.org, Uwe Kleine-Konig , Sam Ravnborg , patches@opensource.cirrus.com Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" SW50cm9kdWNlIHRoZSBiYWNrbGlnaHRfZ2V0X2JyaWdodG5lc3MoKSBoZWxwZXIgaW4gYWxsCnZp ZGVvL2JhY2tsaWdodC8qIGRyaXZlcnMuClRoaXMgc2ltcGxpZmllcyB0aGUgY29kZSBhbmQgYWxp Z24gdGhlIGltcGxlbWVudGF0aW9uIG9mIHRoZQp1cGRhdGVfc3RhdHVzKCkgb3BlcmF0aW9uIGFj cm9zcyB0aGUgZGlmZmVyZW50IGJhY2tsaWdodCBkcml2ZXJzLgoKU29tZSBvZiB0aGUgZHJpdmVy cyBnYWlucyBhIGxpdHRsZSBleHRyYSBmdW5jdGlvbmFsaXR5IGJ5IHRoZSBjaGFuZ2UKYXMgdGhl eSBub3cgcmVzcGVjdCB0aGUgZmJfYmxhbmsoKSBpb2N0bC4KCnYyOgogIC0gRml4IHNwZWxsaW5n IGluIHN1YmplY3QgKFV3ZSkKClNpZ25lZC1vZmYtYnk6IFNhbSBSYXZuYm9yZyA8c2FtQHJhdm5i b3JnLm9yZz4KQ2M6IFV3ZSBLbGVpbmUtS8O2bmlnIDx1LmtsZWluZS1rb2VuaWdAcGVuZ3V0cm9u aXguZGU+ClJldmlld2VkLWJ5OiBEYW5pZWwgVGhvbXBzb24gPGRhbmllbC50aG9tcHNvbkBsaW5h cm8ub3JnPgotLS0KIGRyaXZlcnMvdmlkZW8vYmFja2xpZ2h0Lzg4cG04NjB4X2JsLmMgfCAxMyAr LS0tLS0tLS0tLS0tCiBkcml2ZXJzL3ZpZGVvL2JhY2tsaWdodC9hZHA1NTIwX2JsLmMgIHwgMTAg Ky0tLS0tLS0tLQogZHJpdmVycy92aWRlby9iYWNrbGlnaHQvYWRwODg2MF9ibC5jICB8IDEwICst LS0tLS0tLS0KIGRyaXZlcnMvdmlkZW8vYmFja2xpZ2h0L2FkcDg4NzBfYmwuYyAgfCAxMCArLS0t LS0tLS0tCiBkcml2ZXJzL3ZpZGVvL2JhY2tsaWdodC9iZDYxMDcuYyAgICAgIHwgIDcgKy0tLS0t LQogZHJpdmVycy92aWRlby9iYWNrbGlnaHQvY29yZ2lfbGNkLmMgICB8ICA4ICstLS0tLS0tCiBk cml2ZXJzL3ZpZGVvL2JhY2tsaWdodC9kYTkwM3hfYmwuYyAgIHwgMTMgKy0tLS0tLS0tLS0tLQog ZHJpdmVycy92aWRlby9iYWNrbGlnaHQvZXA5M3h4X2JsLmMgICB8ICA4ICstLS0tLS0tCiBkcml2 ZXJzL3ZpZGVvL2JhY2tsaWdodC9ocDY4MF9ibC5jICAgIHwgIDYgKy0tLS0tCiBkcml2ZXJzL3Zp ZGVvL2JhY2tsaWdodC9rYjM4ODZfYmwuYyAgIHwgIDYgKy0tLS0tCiBkcml2ZXJzL3ZpZGVvL2Jh Y2tsaWdodC9sZWRfYmwuYyAgICAgIHwgIDcgKy0tLS0tLQogZHJpdmVycy92aWRlby9iYWNrbGln aHQvbG0zNTMzX2JsLmMgICB8ICA4ICstLS0tLS0tCiBkcml2ZXJzL3ZpZGVvL2JhY2tsaWdodC9s b2NvbW9sY2QuYyAgIHwgIDYgKy0tLS0tCiBkcml2ZXJzL3ZpZGVvL2JhY2tsaWdodC9sdjUyMDds cC5jICAgIHwgIDcgKy0tLS0tLQogZHJpdmVycy92aWRlby9iYWNrbGlnaHQvbWF4ODkyNV9ibC5j ICB8IDEzICstLS0tLS0tLS0tLS0KIGRyaXZlcnMvdmlkZW8vYmFja2xpZ2h0L3B3bV9ibC5jICAg ICAgfCAgNyArLS0tLS0tCiBkcml2ZXJzL3ZpZGVvL2JhY2tsaWdodC9xY29tLXdsZWQuYyAgIHwg IDcgKy0tLS0tLQogZHJpdmVycy92aWRlby9iYWNrbGlnaHQvdHBzNjUyMTdfYmwuYyB8IDEwICst LS0tLS0tLS0KIGRyaXZlcnMvdmlkZW8vYmFja2xpZ2h0L3dtODMxeF9ibC5jICAgfCAxMyArLS0t LS0tLS0tLS0tCiAxOSBmaWxlcyBjaGFuZ2VkLCAxOSBpbnNlcnRpb25zKCspLCAxNTAgZGVsZXRp b25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy92aWRlby9iYWNrbGlnaHQvODhwbTg2MHhfYmwu YyBiL2RyaXZlcnMvdmlkZW8vYmFja2xpZ2h0Lzg4cG04NjB4X2JsLmMKaW5kZXggMjBkOTZhNWFj Mzg0Li4yNWU0MDliYmIxYTIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdmlkZW8vYmFja2xpZ2h0Lzg4 cG04NjB4X2JsLmMKKysrIGIvZHJpdmVycy92aWRlby9iYWNrbGlnaHQvODhwbTg2MHhfYmwuYwpA QCAtMTIxLDE4ICsxMjEsNyBAQCBzdGF0aWMgaW50IHBtODYweF9iYWNrbGlnaHRfc2V0KHN0cnVj dCBiYWNrbGlnaHRfZGV2aWNlICpibCwgaW50IGJyaWdodG5lc3MpCiAKIHN0YXRpYyBpbnQgcG04 NjB4X2JhY2tsaWdodF91cGRhdGVfc3RhdHVzKHN0cnVjdCBiYWNrbGlnaHRfZGV2aWNlICpibCkK IHsKLQlpbnQgYnJpZ2h0bmVzcyA9IGJsLT5wcm9wcy5icmlnaHRuZXNzOwotCi0JaWYgKGJsLT5w cm9wcy5wb3dlciAhPSBGQl9CTEFOS19VTkJMQU5LKQotCQlicmlnaHRuZXNzID0gMDsKLQotCWlm IChibC0+cHJvcHMuZmJfYmxhbmsgIT0gRkJfQkxBTktfVU5CTEFOSykKLQkJYnJpZ2h0bmVzcyA9 IDA7Ci0KLQlpZiAoYmwtPnByb3BzLnN0YXRlICYgQkxfQ09SRV9TVVNQRU5ERUQpCi0JCWJyaWdo dG5lc3MgPSAwOwotCi0JcmV0dXJuIHBtODYweF9iYWNrbGlnaHRfc2V0KGJsLCBicmlnaHRuZXNz KTsKKwlyZXR1cm4gcG04NjB4X2JhY2tsaWdodF9zZXQoYmwsIGJhY2tsaWdodF9nZXRfYnJpZ2h0 bmVzcyhibCkpOwogfQogCiBzdGF0aWMgaW50IHBtODYweF9iYWNrbGlnaHRfZ2V0X2JyaWdodG5l c3Moc3RydWN0IGJhY2tsaWdodF9kZXZpY2UgKmJsKQpkaWZmIC0tZ2l0IGEvZHJpdmVycy92aWRl by9iYWNrbGlnaHQvYWRwNTUyMF9ibC5jIGIvZHJpdmVycy92aWRlby9iYWNrbGlnaHQvYWRwNTUy MF9ibC5jCmluZGV4IDBmNjNmNzY3MjNhNS4uNjg2OTg4YzNkZjNhIDEwMDY0NAotLS0gYS9kcml2 ZXJzL3ZpZGVvL2JhY2tsaWdodC9hZHA1NTIwX2JsLmMKKysrIGIvZHJpdmVycy92aWRlby9iYWNr bGlnaHQvYWRwNTUyMF9ibC5jCkBAIC02NSwxNSArNjUsNyBAQCBzdGF0aWMgaW50IGFkcDU1MjBf Ymxfc2V0KHN0cnVjdCBiYWNrbGlnaHRfZGV2aWNlICpibCwgaW50IGJyaWdodG5lc3MpCiAKIHN0 YXRpYyBpbnQgYWRwNTUyMF9ibF91cGRhdGVfc3RhdHVzKHN0cnVjdCBiYWNrbGlnaHRfZGV2aWNl ICpibCkKIHsKLQlpbnQgYnJpZ2h0bmVzcyA9IGJsLT5wcm9wcy5icmlnaHRuZXNzOwotCi0JaWYg KGJsLT5wcm9wcy5wb3dlciAhPSBGQl9CTEFOS19VTkJMQU5LKQotCQlicmlnaHRuZXNzID0gMDsK LQotCWlmIChibC0+cHJvcHMuZmJfYmxhbmsgIT0gRkJfQkxBTktfVU5CTEFOSykKLQkJYnJpZ2h0 bmVzcyA9IDA7Ci0KLQlyZXR1cm4gYWRwNTUyMF9ibF9zZXQoYmwsIGJyaWdodG5lc3MpOworCXJl dHVybiBhZHA1NTIwX2JsX3NldChibCwgYmFja2xpZ2h0X2dldF9icmlnaHRuZXNzKGJsKSk7CiB9 CiAKIHN0YXRpYyBpbnQgYWRwNTUyMF9ibF9nZXRfYnJpZ2h0bmVzcyhzdHJ1Y3QgYmFja2xpZ2h0 X2RldmljZSAqYmwpCmRpZmYgLS1naXQgYS9kcml2ZXJzL3ZpZGVvL2JhY2tsaWdodC9hZHA4ODYw X2JsLmMgYi9kcml2ZXJzL3ZpZGVvL2JhY2tsaWdodC9hZHA4ODYwX2JsLmMKaW5kZXggMTk5Njgx MDRmYzQ3Li5kZGM3ZjVmMDQwMWYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdmlkZW8vYmFja2xpZ2h0 L2FkcDg4NjBfYmwuYworKysgYi9kcml2ZXJzL3ZpZGVvL2JhY2tsaWdodC9hZHA4ODYwX2JsLmMK QEAgLTM2MSwxNSArMzYxLDcgQEAgc3RhdGljIGludCBhZHA4ODYwX2JsX3NldChzdHJ1Y3QgYmFj a2xpZ2h0X2RldmljZSAqYmwsIGludCBicmlnaHRuZXNzKQogCiBzdGF0aWMgaW50IGFkcDg4NjBf YmxfdXBkYXRlX3N0YXR1cyhzdHJ1Y3QgYmFja2xpZ2h0X2RldmljZSAqYmwpCiB7Ci0JaW50IGJy aWdodG5lc3MgPSBibC0+cHJvcHMuYnJpZ2h0bmVzczsKLQotCWlmIChibC0+cHJvcHMucG93ZXIg IT0gRkJfQkxBTktfVU5CTEFOSykKLQkJYnJpZ2h0bmVzcyA9IDA7Ci0KLQlpZiAoYmwtPnByb3Bz LmZiX2JsYW5rICE9IEZCX0JMQU5LX1VOQkxBTkspCi0JCWJyaWdodG5lc3MgPSAwOwotCi0JcmV0 dXJuIGFkcDg4NjBfYmxfc2V0KGJsLCBicmlnaHRuZXNzKTsKKwlyZXR1cm4gYWRwODg2MF9ibF9z ZXQoYmwsIGJhY2tsaWdodF9nZXRfYnJpZ2h0bmVzcyhibCkpOwogfQogCiBzdGF0aWMgaW50IGFk cDg4NjBfYmxfZ2V0X2JyaWdodG5lc3Moc3RydWN0IGJhY2tsaWdodF9kZXZpY2UgKmJsKQpkaWZm IC0tZ2l0IGEvZHJpdmVycy92aWRlby9iYWNrbGlnaHQvYWRwODg3MF9ibC5jIGIvZHJpdmVycy92 aWRlby9iYWNrbGlnaHQvYWRwODg3MF9ibC5jCmluZGV4IDRjMDAzMjAxMGNmZS4uOGI1MjEzYTM5 NTI3IDEwMDY0NAotLS0gYS9kcml2ZXJzL3ZpZGVvL2JhY2tsaWdodC9hZHA4ODcwX2JsLmMKKysr IGIvZHJpdmVycy92aWRlby9iYWNrbGlnaHQvYWRwODg3MF9ibC5jCkBAIC0zOTksMTUgKzM5OSw3 IEBAIHN0YXRpYyBpbnQgYWRwODg3MF9ibF9zZXQoc3RydWN0IGJhY2tsaWdodF9kZXZpY2UgKmJs LCBpbnQgYnJpZ2h0bmVzcykKIAogc3RhdGljIGludCBhZHA4ODcwX2JsX3VwZGF0ZV9zdGF0dXMo c3RydWN0IGJhY2tsaWdodF9kZXZpY2UgKmJsKQogewotCWludCBicmlnaHRuZXNzID0gYmwtPnBy b3BzLmJyaWdodG5lc3M7Ci0KLQlpZiAoYmwtPnByb3BzLnBvd2VyICE9IEZCX0JMQU5LX1VOQkxB TkspCi0JCWJyaWdodG5lc3MgPSAwOwotCi0JaWYgKGJsLT5wcm9wcy5mYl9ibGFuayAhPSBGQl9C TEFOS19VTkJMQU5LKQotCQlicmlnaHRuZXNzID0gMDsKLQotCXJldHVybiBhZHA4ODcwX2JsX3Nl dChibCwgYnJpZ2h0bmVzcyk7CisJcmV0dXJuIGFkcDg4NzBfYmxfc2V0KGJsLCBiYWNrbGlnaHRf Z2V0X2JyaWdodG5lc3MoYmwpKTsKIH0KIAogc3RhdGljIGludCBhZHA4ODcwX2JsX2dldF9icmln aHRuZXNzKHN0cnVjdCBiYWNrbGlnaHRfZGV2aWNlICpibCkKZGlmZiAtLWdpdCBhL2RyaXZlcnMv dmlkZW8vYmFja2xpZ2h0L2JkNjEwNy5jIGIvZHJpdmVycy92aWRlby9iYWNrbGlnaHQvYmQ2MTA3 LmMKaW5kZXggZDVkNWZiNDU3ZTc4Li41MTUxODRmYmUzM2EgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMv dmlkZW8vYmFja2xpZ2h0L2JkNjEwNy5jCisrKyBiL2RyaXZlcnMvdmlkZW8vYmFja2xpZ2h0L2Jk NjEwNy5jCkBAIC04MiwxMiArODIsNyBAQCBzdGF0aWMgaW50IGJkNjEwN193cml0ZShzdHJ1Y3Qg YmQ2MTA3ICpiZCwgdTggcmVnLCB1OCBkYXRhKQogc3RhdGljIGludCBiZDYxMDdfYmFja2xpZ2h0 X3VwZGF0ZV9zdGF0dXMoc3RydWN0IGJhY2tsaWdodF9kZXZpY2UgKmJhY2tsaWdodCkKIHsKIAlz dHJ1Y3QgYmQ2MTA3ICpiZCA9IGJsX2dldF9kYXRhKGJhY2tsaWdodCk7Ci0JaW50IGJyaWdodG5l c3MgPSBiYWNrbGlnaHQtPnByb3BzLmJyaWdodG5lc3M7Ci0KLQlpZiAoYmFja2xpZ2h0LT5wcm9w cy5wb3dlciAhPSBGQl9CTEFOS19VTkJMQU5LIHx8Ci0JICAgIGJhY2tsaWdodC0+cHJvcHMuZmJf YmxhbmsgIT0gRkJfQkxBTktfVU5CTEFOSyB8fAotCSAgICBiYWNrbGlnaHQtPnByb3BzLnN0YXRl ICYgKEJMX0NPUkVfU1VTUEVOREVEIHwgQkxfQ09SRV9GQkJMQU5LKSkKLQkJYnJpZ2h0bmVzcyA9 IDA7CisJaW50IGJyaWdodG5lc3MgPSBiYWNrbGlnaHRfZ2V0X2JyaWdodG5lc3MoYmFja2xpZ2h0 KTsKIAogCWlmIChicmlnaHRuZXNzKSB7CiAJCWJkNjEwN193cml0ZShiZCwgQkQ2MTA3X1BPUlRT RUwsIEJENjEwN19QT1JUU0VMX0xFRE0oMikgfApkaWZmIC0tZ2l0IGEvZHJpdmVycy92aWRlby9i YWNrbGlnaHQvY29yZ2lfbGNkLmMgYi9kcml2ZXJzL3ZpZGVvL2JhY2tsaWdodC9jb3JnaV9sY2Qu YwppbmRleCAyNWVmMGNiZDc1ODMuLjMzZjVkODA0OTVlNiAxMDA2NDQKLS0tIGEvZHJpdmVycy92 aWRlby9iYWNrbGlnaHQvY29yZ2lfbGNkLmMKKysrIGIvZHJpdmVycy92aWRlby9iYWNrbGlnaHQv Y29yZ2lfbGNkLmMKQEAgLTQyMCwxMyArNDIwLDcgQEAgc3RhdGljIGludCBjb3JnaV9ibF9zZXRf aW50ZW5zaXR5KHN0cnVjdCBjb3JnaV9sY2QgKmxjZCwgaW50IGludGVuc2l0eSkKIHN0YXRpYyBp bnQgY29yZ2lfYmxfdXBkYXRlX3N0YXR1cyhzdHJ1Y3QgYmFja2xpZ2h0X2RldmljZSAqYmQpCiB7 CiAJc3RydWN0IGNvcmdpX2xjZCAqbGNkID0gYmxfZ2V0X2RhdGEoYmQpOwotCWludCBpbnRlbnNp dHkgPSBiZC0+cHJvcHMuYnJpZ2h0bmVzczsKLQotCWlmIChiZC0+cHJvcHMucG93ZXIgIT0gRkJf QkxBTktfVU5CTEFOSykKLQkJaW50ZW5zaXR5ID0gMDsKLQotCWlmIChiZC0+cHJvcHMuZmJfYmxh bmsgIT0gRkJfQkxBTktfVU5CTEFOSykKLQkJaW50ZW5zaXR5ID0gMDsKKwlpbnQgaW50ZW5zaXR5 ID0gYmFja2xpZ2h0X2dldF9icmlnaHRuZXNzKGJkKTsKIAogCWlmIChjb3JnaWJsX2ZsYWdzICYg Q09SR0lCTF9TVVNQRU5ERUQpCiAJCWludGVuc2l0eSA9IDA7CmRpZmYgLS1naXQgYS9kcml2ZXJz L3ZpZGVvL2JhY2tsaWdodC9kYTkwM3hfYmwuYyBiL2RyaXZlcnMvdmlkZW8vYmFja2xpZ2h0L2Rh OTAzeF9ibC5jCmluZGV4IDYyNTQwZTRiZGVkYi4uNzFmMjFiYmM3YTlmIDEwMDY0NAotLS0gYS9k cml2ZXJzL3ZpZGVvL2JhY2tsaWdodC9kYTkwM3hfYmwuYworKysgYi9kcml2ZXJzL3ZpZGVvL2Jh Y2tsaWdodC9kYTkwM3hfYmwuYwpAQCAtNzcsMTggKzc3LDcgQEAgc3RhdGljIGludCBkYTkwM3hf YmFja2xpZ2h0X3NldChzdHJ1Y3QgYmFja2xpZ2h0X2RldmljZSAqYmwsIGludCBicmlnaHRuZXNz KQogCiBzdGF0aWMgaW50IGRhOTAzeF9iYWNrbGlnaHRfdXBkYXRlX3N0YXR1cyhzdHJ1Y3QgYmFj a2xpZ2h0X2RldmljZSAqYmwpCiB7Ci0JaW50IGJyaWdodG5lc3MgPSBibC0+cHJvcHMuYnJpZ2h0 bmVzczsKLQotCWlmIChibC0+cHJvcHMucG93ZXIgIT0gRkJfQkxBTktfVU5CTEFOSykKLQkJYnJp Z2h0bmVzcyA9IDA7Ci0KLQlpZiAoYmwtPnByb3BzLmZiX2JsYW5rICE9IEZCX0JMQU5LX1VOQkxB TkspCi0JCWJyaWdodG5lc3MgPSAwOwotCi0JaWYgKGJsLT5wcm9wcy5zdGF0ZSAmIEJMX0NPUkVf U1VTUEVOREVEKQotCQlicmlnaHRuZXNzID0gMDsKLQotCXJldHVybiBkYTkwM3hfYmFja2xpZ2h0 X3NldChibCwgYnJpZ2h0bmVzcyk7CisJcmV0dXJuIGRhOTAzeF9iYWNrbGlnaHRfc2V0KGJsLCBi YWNrbGlnaHRfZ2V0X2JyaWdodG5lc3MoYmwpKTsKIH0KIAogc3RhdGljIGludCBkYTkwM3hfYmFj a2xpZ2h0X2dldF9icmlnaHRuZXNzKHN0cnVjdCBiYWNrbGlnaHRfZGV2aWNlICpibCkKZGlmZiAt LWdpdCBhL2RyaXZlcnMvdmlkZW8vYmFja2xpZ2h0L2VwOTN4eF9ibC5jIGIvZHJpdmVycy92aWRl by9iYWNrbGlnaHQvZXA5M3h4X2JsLmMKaW5kZXggNDE0OWUwYjJmODNjLi4yMzg3MDA5ZDQ1MmQg MTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdmlkZW8vYmFja2xpZ2h0L2VwOTN4eF9ibC5jCisrKyBiL2Ry aXZlcnMvdmlkZW8vYmFja2xpZ2h0L2VwOTN4eF9ibC5jCkBAIC0zNiwxMyArMzYsNyBAQCBzdGF0 aWMgaW50IGVwOTN4eGJsX3NldChzdHJ1Y3QgYmFja2xpZ2h0X2RldmljZSAqYmwsIGludCBicmln aHRuZXNzKQogCiBzdGF0aWMgaW50IGVwOTN4eGJsX3VwZGF0ZV9zdGF0dXMoc3RydWN0IGJhY2ts aWdodF9kZXZpY2UgKmJsKQogewotCWludCBicmlnaHRuZXNzID0gYmwtPnByb3BzLmJyaWdodG5l c3M7Ci0KLQlpZiAoYmwtPnByb3BzLnBvd2VyICE9IEZCX0JMQU5LX1VOQkxBTksgfHwKLQkgICAg YmwtPnByb3BzLmZiX2JsYW5rICE9IEZCX0JMQU5LX1VOQkxBTkspCi0JCWJyaWdodG5lc3MgPSAw OwotCi0JcmV0dXJuIGVwOTN4eGJsX3NldChibCwgYnJpZ2h0bmVzcyk7CisJcmV0dXJuIGVwOTN4 eGJsX3NldChibCwgYmFja2xpZ2h0X2dldF9icmlnaHRuZXNzKGJsKSk7CiB9CiAKIHN0YXRpYyBp bnQgZXA5M3h4YmxfZ2V0X2JyaWdodG5lc3Moc3RydWN0IGJhY2tsaWdodF9kZXZpY2UgKmJsKQpk aWZmIC0tZ2l0IGEvZHJpdmVycy92aWRlby9iYWNrbGlnaHQvaHA2ODBfYmwuYyBiL2RyaXZlcnMv dmlkZW8vYmFja2xpZ2h0L2hwNjgwX2JsLmMKaW5kZXggOGVhNDJiOGQ5YmM4Li45MTIzYzMzZGVm MDUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdmlkZW8vYmFja2xpZ2h0L2hwNjgwX2JsLmMKKysrIGIv ZHJpdmVycy92aWRlby9iYWNrbGlnaHQvaHA2ODBfYmwuYwpAQCAtMzMsMTIgKzMzLDggQEAgc3Rh dGljIHZvaWQgaHA2ODBibF9zZW5kX2ludGVuc2l0eShzdHJ1Y3QgYmFja2xpZ2h0X2RldmljZSAq YmQpCiB7CiAJdW5zaWduZWQgbG9uZyBmbGFnczsKIAl1MTYgdjsKLQlpbnQgaW50ZW5zaXR5ID0g YmQtPnByb3BzLmJyaWdodG5lc3M7CisJaW50IGludGVuc2l0eSA9IGJhY2tsaWdodF9nZXRfYnJp Z2h0bmVzcyhiZCk7CiAKLQlpZiAoYmQtPnByb3BzLnBvd2VyICE9IEZCX0JMQU5LX1VOQkxBTksp Ci0JCWludGVuc2l0eSA9IDA7Ci0JaWYgKGJkLT5wcm9wcy5mYl9ibGFuayAhPSBGQl9CTEFOS19V TkJMQU5LKQotCQlpbnRlbnNpdHkgPSAwOwogCWlmIChocDY4MGJsX3N1c3BlbmRlZCkKIAkJaW50 ZW5zaXR5ID0gMDsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy92aWRlby9iYWNrbGlnaHQva2IzODg2 X2JsLmMgYi9kcml2ZXJzL3ZpZGVvL2JhY2tsaWdodC9rYjM4ODZfYmwuYwppbmRleCAxZGZlMTNj MTg5MjUuLjU1Nzk0YjIzOWNmZiAxMDA2NDQKLS0tIGEvZHJpdmVycy92aWRlby9iYWNrbGlnaHQv a2IzODg2X2JsLmMKKysrIGIvZHJpdmVycy92aWRlby9iYWNrbGlnaHQva2IzODg2X2JsLmMKQEAg LTg3LDEyICs4Nyw4IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZG1pX3N5c3RlbV9pZCBrYjM4ODZi bF9kZXZpY2VfdGFibGVbXSBfX2luaXRjb25zdCA9IHsKIAogc3RhdGljIGludCBrYjM4ODZibF9z ZW5kX2ludGVuc2l0eShzdHJ1Y3QgYmFja2xpZ2h0X2RldmljZSAqYmQpCiB7Ci0JaW50IGludGVu c2l0eSA9IGJkLT5wcm9wcy5icmlnaHRuZXNzOworCWludCBpbnRlbnNpdHkgPSBiYWNrbGlnaHRf Z2V0X2JyaWdodG5lc3MoYmQpOwogCi0JaWYgKGJkLT5wcm9wcy5wb3dlciAhPSBGQl9CTEFOS19V TkJMQU5LKQotCQlpbnRlbnNpdHkgPSAwOwotCWlmIChiZC0+cHJvcHMuZmJfYmxhbmsgIT0gRkJf QkxBTktfVU5CTEFOSykKLQkJaW50ZW5zaXR5ID0gMDsKIAlpZiAoa2IzODg2YmxfZmxhZ3MgJiBL QjM4ODZCTF9TVVNQRU5ERUQpCiAJCWludGVuc2l0eSA9IDA7CiAKZGlmZiAtLWdpdCBhL2RyaXZl cnMvdmlkZW8vYmFja2xpZ2h0L2xlZF9ibC5jIGIvZHJpdmVycy92aWRlby9iYWNrbGlnaHQvbGVk X2JsLmMKaW5kZXggM2Y2NjU0OTk5N2M4Li5mNTRkMjU2ZTJkNTQgMTAwNjQ0Ci0tLSBhL2RyaXZl cnMvdmlkZW8vYmFja2xpZ2h0L2xlZF9ibC5jCisrKyBiL2RyaXZlcnMvdmlkZW8vYmFja2xpZ2h0 L2xlZF9ibC5jCkBAIC01NCwxMiArNTQsNyBAQCBzdGF0aWMgdm9pZCBsZWRfYmxfcG93ZXJfb2Zm KHN0cnVjdCBsZWRfYmxfZGF0YSAqcHJpdikKIHN0YXRpYyBpbnQgbGVkX2JsX3VwZGF0ZV9zdGF0 dXMoc3RydWN0IGJhY2tsaWdodF9kZXZpY2UgKmJsKQogewogCXN0cnVjdCBsZWRfYmxfZGF0YSAq cHJpdiA9IGJsX2dldF9kYXRhKGJsKTsKLQlpbnQgYnJpZ2h0bmVzcyA9IGJsLT5wcm9wcy5icmln aHRuZXNzOwotCi0JaWYgKGJsLT5wcm9wcy5wb3dlciAhPSBGQl9CTEFOS19VTkJMQU5LIHx8Ci0J ICAgIGJsLT5wcm9wcy5mYl9ibGFuayAhPSBGQl9CTEFOS19VTkJMQU5LIHx8Ci0JICAgIGJsLT5w cm9wcy5zdGF0ZSAmIEJMX0NPUkVfRkJCTEFOSykKLQkJYnJpZ2h0bmVzcyA9IDA7CisJaW50IGJy aWdodG5lc3MgPSBiYWNrbGlnaHRfZ2V0X2JyaWdodG5lc3MoYmwpOwogCiAJaWYgKGJyaWdodG5l c3MgPiAwKQogCQlsZWRfYmxfc2V0X2JyaWdodG5lc3MocHJpdiwgYnJpZ2h0bmVzcyk7CmRpZmYg LS1naXQgYS9kcml2ZXJzL3ZpZGVvL2JhY2tsaWdodC9sbTM1MzNfYmwuYyBiL2RyaXZlcnMvdmlk ZW8vYmFja2xpZ2h0L2xtMzUzM19ibC5jCmluZGV4IDBjNzgzMGY3OTNkZS4uMWRmMWI2NjQzYzBi IDEwMDY0NAotLS0gYS9kcml2ZXJzL3ZpZGVvL2JhY2tsaWdodC9sbTM1MzNfYmwuYworKysgYi9k cml2ZXJzL3ZpZGVvL2JhY2tsaWdodC9sbTM1MzNfYmwuYwpAQCAtMzksMTQgKzM5LDggQEAgc3Rh dGljIGlubGluZSBpbnQgbG0zNTMzX2JsX2dldF9jdHJsYmFua19pZChzdHJ1Y3QgbG0zNTMzX2Js ICpibCkKIHN0YXRpYyBpbnQgbG0zNTMzX2JsX3VwZGF0ZV9zdGF0dXMoc3RydWN0IGJhY2tsaWdo dF9kZXZpY2UgKmJkKQogewogCXN0cnVjdCBsbTM1MzNfYmwgKmJsID0gYmxfZ2V0X2RhdGEoYmQp OwotCWludCBicmlnaHRuZXNzID0gYmQtPnByb3BzLmJyaWdodG5lc3M7CiAKLQlpZiAoYmQtPnBy b3BzLnBvd2VyICE9IEZCX0JMQU5LX1VOQkxBTkspCi0JCWJyaWdodG5lc3MgPSAwOwotCWlmIChi ZC0+cHJvcHMuZmJfYmxhbmsgIT0gRkJfQkxBTktfVU5CTEFOSykKLQkJYnJpZ2h0bmVzcyA9IDA7 Ci0KLQlyZXR1cm4gbG0zNTMzX2N0cmxiYW5rX3NldF9icmlnaHRuZXNzKCZibC0+Y2IsICh1OCli cmlnaHRuZXNzKTsKKwlyZXR1cm4gbG0zNTMzX2N0cmxiYW5rX3NldF9icmlnaHRuZXNzKCZibC0+ Y2IsIGJhY2tsaWdodF9nZXRfYnJpZ2h0bmVzcyhiZCkpOwogfQogCiBzdGF0aWMgaW50IGxtMzUz M19ibF9nZXRfYnJpZ2h0bmVzcyhzdHJ1Y3QgYmFja2xpZ2h0X2RldmljZSAqYmQpCmRpZmYgLS1n aXQgYS9kcml2ZXJzL3ZpZGVvL2JhY2tsaWdodC9sb2NvbW9sY2QuYyBiL2RyaXZlcnMvdmlkZW8v YmFja2xpZ2h0L2xvY29tb2xjZC5jCmluZGV4IGNkYzAyZTA0Zjg5ZC4uMjk3ZWUyZTFhYjBiIDEw MDY0NAotLS0gYS9kcml2ZXJzL3ZpZGVvL2JhY2tsaWdodC9sb2NvbW9sY2QuYworKysgYi9kcml2 ZXJzL3ZpZGVvL2JhY2tsaWdodC9sb2NvbW9sY2QuYwpAQCAtMTExLDEyICsxMTEsOCBAQCBzdGF0 aWMgaW50IGN1cnJlbnRfaW50ZW5zaXR5OwogCiBzdGF0aWMgaW50IGxvY29tb2xjZF9zZXRfaW50 ZW5zaXR5KHN0cnVjdCBiYWNrbGlnaHRfZGV2aWNlICpiZCkKIHsKLQlpbnQgaW50ZW5zaXR5ID0g YmQtPnByb3BzLmJyaWdodG5lc3M7CisJaW50IGludGVuc2l0eSA9IGJhY2tsaWdodF9nZXRfYnJp Z2h0bmVzcyhiZCk7CiAKLQlpZiAoYmQtPnByb3BzLnBvd2VyICE9IEZCX0JMQU5LX1VOQkxBTksp Ci0JCWludGVuc2l0eSA9IDA7Ci0JaWYgKGJkLT5wcm9wcy5mYl9ibGFuayAhPSBGQl9CTEFOS19V TkJMQU5LKQotCQlpbnRlbnNpdHkgPSAwOwogCWlmIChsb2NvbW9sY2RfZmxhZ3MgJiBMT0NPTU9M Q0RfU1VTUEVOREVEKQogCQlpbnRlbnNpdHkgPSAwOwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL3Zp ZGVvL2JhY2tsaWdodC9sdjUyMDdscC5jIGIvZHJpdmVycy92aWRlby9iYWNrbGlnaHQvbHY1MjA3 bHAuYwppbmRleCBjNmFkNzNhNzg0ZTIuLjE4NDJhZTlhNTVmOCAxMDA2NDQKLS0tIGEvZHJpdmVy cy92aWRlby9iYWNrbGlnaHQvbHY1MjA3bHAuYworKysgYi9kcml2ZXJzL3ZpZGVvL2JhY2tsaWdo dC9sdjUyMDdscC5jCkBAIC00NiwxMiArNDYsNyBAQCBzdGF0aWMgaW50IGx2NTIwN2xwX3dyaXRl KHN0cnVjdCBsdjUyMDdscCAqbHYsIHU4IHJlZywgdTggZGF0YSkKIHN0YXRpYyBpbnQgbHY1MjA3 bHBfYmFja2xpZ2h0X3VwZGF0ZV9zdGF0dXMoc3RydWN0IGJhY2tsaWdodF9kZXZpY2UgKmJhY2ts aWdodCkKIHsKIAlzdHJ1Y3QgbHY1MjA3bHAgKmx2ID0gYmxfZ2V0X2RhdGEoYmFja2xpZ2h0KTsK LQlpbnQgYnJpZ2h0bmVzcyA9IGJhY2tsaWdodC0+cHJvcHMuYnJpZ2h0bmVzczsKLQotCWlmIChi YWNrbGlnaHQtPnByb3BzLnBvd2VyICE9IEZCX0JMQU5LX1VOQkxBTksgfHwKLQkgICAgYmFja2xp Z2h0LT5wcm9wcy5mYl9ibGFuayAhPSBGQl9CTEFOS19VTkJMQU5LIHx8Ci0JICAgIGJhY2tsaWdo dC0+cHJvcHMuc3RhdGUgJiAoQkxfQ09SRV9TVVNQRU5ERUQgfCBCTF9DT1JFX0ZCQkxBTkspKQot CQlicmlnaHRuZXNzID0gMDsKKwlpbnQgYnJpZ2h0bmVzcyA9IGJhY2tsaWdodF9nZXRfYnJpZ2h0 bmVzcyhiYWNrbGlnaHQpOwogCiAJaWYgKGJyaWdodG5lc3MpIHsKIAkJbHY1MjA3bHBfd3JpdGUo bHYsIExWNTIwN0xQX0NUUkwxLApkaWZmIC0tZ2l0IGEvZHJpdmVycy92aWRlby9iYWNrbGlnaHQv bWF4ODkyNV9ibC5jIGIvZHJpdmVycy92aWRlby9iYWNrbGlnaHQvbWF4ODkyNV9ibC5jCmluZGV4 IDk3Y2MyNjBmZjlkMS4uZTYwN2VjNmZkNGJmIDEwMDY0NAotLS0gYS9kcml2ZXJzL3ZpZGVvL2Jh Y2tsaWdodC9tYXg4OTI1X2JsLmMKKysrIGIvZHJpdmVycy92aWRlby9iYWNrbGlnaHQvbWF4ODky NV9ibC5jCkBAIC02NCwxOCArNjQsNyBAQCBzdGF0aWMgaW50IG1heDg5MjVfYmFja2xpZ2h0X3Nl dChzdHJ1Y3QgYmFja2xpZ2h0X2RldmljZSAqYmwsIGludCBicmlnaHRuZXNzKQogCiBzdGF0aWMg aW50IG1heDg5MjVfYmFja2xpZ2h0X3VwZGF0ZV9zdGF0dXMoc3RydWN0IGJhY2tsaWdodF9kZXZp Y2UgKmJsKQogewotCWludCBicmlnaHRuZXNzID0gYmwtPnByb3BzLmJyaWdodG5lc3M7Ci0KLQlp ZiAoYmwtPnByb3BzLnBvd2VyICE9IEZCX0JMQU5LX1VOQkxBTkspCi0JCWJyaWdodG5lc3MgPSAw OwotCi0JaWYgKGJsLT5wcm9wcy5mYl9ibGFuayAhPSBGQl9CTEFOS19VTkJMQU5LKQotCQlicmln aHRuZXNzID0gMDsKLQotCWlmIChibC0+cHJvcHMuc3RhdGUgJiBCTF9DT1JFX1NVU1BFTkRFRCkK LQkJYnJpZ2h0bmVzcyA9IDA7Ci0KLQlyZXR1cm4gbWF4ODkyNV9iYWNrbGlnaHRfc2V0KGJsLCBi cmlnaHRuZXNzKTsKKwlyZXR1cm4gbWF4ODkyNV9iYWNrbGlnaHRfc2V0KGJsLCBiYWNrbGlnaHRf Z2V0X2JyaWdodG5lc3MoYmwpKTsKIH0KIAogc3RhdGljIGludCBtYXg4OTI1X2JhY2tsaWdodF9n ZXRfYnJpZ2h0bmVzcyhzdHJ1Y3QgYmFja2xpZ2h0X2RldmljZSAqYmwpCmRpZmYgLS1naXQgYS9k cml2ZXJzL3ZpZGVvL2JhY2tsaWdodC9wd21fYmwuYyBiL2RyaXZlcnMvdmlkZW8vYmFja2xpZ2h0 L3B3bV9ibC5jCmluZGV4IDgyYjhkNzU5NDcwMS4uZWZmNjRkYjJlMDJlIDEwMDY0NAotLS0gYS9k cml2ZXJzL3ZpZGVvL2JhY2tsaWdodC9wd21fYmwuYworKysgYi9kcml2ZXJzL3ZpZGVvL2JhY2ts aWdodC9wd21fYmwuYwpAQCAtMTA4LDE0ICsxMDgsOSBAQCBzdGF0aWMgaW50IGNvbXB1dGVfZHV0 eV9jeWNsZShzdHJ1Y3QgcHdtX2JsX2RhdGEgKnBiLCBpbnQgYnJpZ2h0bmVzcykKIHN0YXRpYyBp bnQgcHdtX2JhY2tsaWdodF91cGRhdGVfc3RhdHVzKHN0cnVjdCBiYWNrbGlnaHRfZGV2aWNlICpi bCkKIHsKIAlzdHJ1Y3QgcHdtX2JsX2RhdGEgKnBiID0gYmxfZ2V0X2RhdGEoYmwpOwotCWludCBi cmlnaHRuZXNzID0gYmwtPnByb3BzLmJyaWdodG5lc3M7CisJaW50IGJyaWdodG5lc3MgPSBiYWNr bGlnaHRfZ2V0X2JyaWdodG5lc3MoYmwpOwogCXN0cnVjdCBwd21fc3RhdGUgc3RhdGU7CiAKLQlp ZiAoYmwtPnByb3BzLnBvd2VyICE9IEZCX0JMQU5LX1VOQkxBTksgfHwKLQkgICAgYmwtPnByb3Bz LmZiX2JsYW5rICE9IEZCX0JMQU5LX1VOQkxBTksgfHwKLQkgICAgYmwtPnByb3BzLnN0YXRlICYg QkxfQ09SRV9GQkJMQU5LKQotCQlicmlnaHRuZXNzID0gMDsKLQogCWlmIChwYi0+bm90aWZ5KQog CQlicmlnaHRuZXNzID0gcGItPm5vdGlmeShwYi0+ZGV2LCBicmlnaHRuZXNzKTsKIApkaWZmIC0t Z2l0IGEvZHJpdmVycy92aWRlby9iYWNrbGlnaHQvcWNvbS13bGVkLmMgYi9kcml2ZXJzL3ZpZGVv L2JhY2tsaWdodC9xY29tLXdsZWQuYwppbmRleCBjMjVjMzExOTk5NTIuLjNiYzc4MDBlYjBhOSAx MDA2NDQKLS0tIGEvZHJpdmVycy92aWRlby9iYWNrbGlnaHQvcWNvbS13bGVkLmMKKysrIGIvZHJp dmVycy92aWRlby9iYWNrbGlnaHQvcWNvbS13bGVkLmMKQEAgLTQzMywxNCArNDMzLDkgQEAgc3Rh dGljIGludCB3bGVkNV9vdnBfZGVsYXkoc3RydWN0IHdsZWQgKndsZWQpCiBzdGF0aWMgaW50IHds ZWRfdXBkYXRlX3N0YXR1cyhzdHJ1Y3QgYmFja2xpZ2h0X2RldmljZSAqYmwpCiB7CiAJc3RydWN0 IHdsZWQgKndsZWQgPSBibF9nZXRfZGF0YShibCk7Ci0JdTE2IGJyaWdodG5lc3MgPSBibC0+cHJv cHMuYnJpZ2h0bmVzczsKKwl1MTYgYnJpZ2h0bmVzcyA9IGJhY2tsaWdodF9nZXRfYnJpZ2h0bmVz cyhibCk7CiAJaW50IHJjID0gMDsKIAotCWlmIChibC0+cHJvcHMucG93ZXIgIT0gRkJfQkxBTktf VU5CTEFOSyB8fAotCSAgICBibC0+cHJvcHMuZmJfYmxhbmsgIT0gRkJfQkxBTktfVU5CTEFOSyB8 fAotCSAgICBibC0+cHJvcHMuc3RhdGUgJiBCTF9DT1JFX0ZCQkxBTkspCi0JCWJyaWdodG5lc3Mg PSAwOwotCiAJbXV0ZXhfbG9jaygmd2xlZC0+bG9jayk7CiAJaWYgKGJyaWdodG5lc3MpIHsKIAkJ cmMgPSB3bGVkLT53bGVkX3NldF9icmlnaHRuZXNzKHdsZWQsIGJyaWdodG5lc3MpOwpkaWZmIC0t Z2l0IGEvZHJpdmVycy92aWRlby9iYWNrbGlnaHQvdHBzNjUyMTdfYmwuYyBiL2RyaXZlcnMvdmlk ZW8vYmFja2xpZ2h0L3RwczY1MjE3X2JsLmMKaW5kZXggNzYyZTNmZWVkMDk3Li44NDU3MTY2ZjM1 N2YgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdmlkZW8vYmFja2xpZ2h0L3RwczY1MjE3X2JsLmMKKysr IGIvZHJpdmVycy92aWRlby9iYWNrbGlnaHQvdHBzNjUyMTdfYmwuYwpAQCAtNzcsMTUgKzc3LDcg QEAgc3RhdGljIGludCB0cHM2NTIxN19ibF91cGRhdGVfc3RhdHVzKHN0cnVjdCBiYWNrbGlnaHRf ZGV2aWNlICpibCkKIHsKIAlzdHJ1Y3QgdHBzNjUyMTdfYmwgKnRwczY1MjE3X2JsID0gYmxfZ2V0 X2RhdGEoYmwpOwogCWludCByYzsKLQlpbnQgYnJpZ2h0bmVzcyA9IGJsLT5wcm9wcy5icmlnaHRu ZXNzOwotCi0JaWYgKGJsLT5wcm9wcy5zdGF0ZSAmIEJMX0NPUkVfU1VTUEVOREVEKQotCQlicmln aHRuZXNzID0gMDsKLQotCWlmICgoYmwtPnByb3BzLnBvd2VyICE9IEZCX0JMQU5LX1VOQkxBTksp IHx8Ci0JCShibC0+cHJvcHMuZmJfYmxhbmsgIT0gRkJfQkxBTktfVU5CTEFOSykpCi0JCS8qIGZy YW1lYnVmZmVyIGluIGxvdyBwb3dlciBtb2RlIG9yIGJsYW5raW5nIGFjdGl2ZSAqLwotCQlicmln aHRuZXNzID0gMDsKKwlpbnQgYnJpZ2h0bmVzcyA9IGJhY2tsaWdodF9nZXRfYnJpZ2h0bmVzcyhi bCk7CiAKIAlpZiAoYnJpZ2h0bmVzcyA+IDApIHsKIAkJcmMgPSB0cHM2NTIxN19yZWdfd3JpdGUo dHBzNjUyMTdfYmwtPnRwcywKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdmlkZW8vYmFja2xpZ2h0L3dt ODMxeF9ibC5jIGIvZHJpdmVycy92aWRlby9iYWNrbGlnaHQvd204MzF4X2JsLmMKaW5kZXggZTU1 OTc3ZDU0YzE1Li5jNWFhZWUyMDViZGYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdmlkZW8vYmFja2xp Z2h0L3dtODMxeF9ibC5jCisrKyBiL2RyaXZlcnMvdmlkZW8vYmFja2xpZ2h0L3dtODMxeF9ibC5j CkBAIC05MSwxOCArOTEsNyBAQCBzdGF0aWMgaW50IHdtODMxeF9iYWNrbGlnaHRfc2V0KHN0cnVj dCBiYWNrbGlnaHRfZGV2aWNlICpibCwgaW50IGJyaWdodG5lc3MpCiAKIHN0YXRpYyBpbnQgd204 MzF4X2JhY2tsaWdodF91cGRhdGVfc3RhdHVzKHN0cnVjdCBiYWNrbGlnaHRfZGV2aWNlICpibCkK IHsKLQlpbnQgYnJpZ2h0bmVzcyA9IGJsLT5wcm9wcy5icmlnaHRuZXNzOwotCi0JaWYgKGJsLT5w cm9wcy5wb3dlciAhPSBGQl9CTEFOS19VTkJMQU5LKQotCQlicmlnaHRuZXNzID0gMDsKLQotCWlm IChibC0+cHJvcHMuZmJfYmxhbmsgIT0gRkJfQkxBTktfVU5CTEFOSykKLQkJYnJpZ2h0bmVzcyA9 IDA7Ci0KLQlpZiAoYmwtPnByb3BzLnN0YXRlICYgQkxfQ09SRV9TVVNQRU5ERUQpCi0JCWJyaWdo dG5lc3MgPSAwOwotCi0JcmV0dXJuIHdtODMxeF9iYWNrbGlnaHRfc2V0KGJsLCBicmlnaHRuZXNz KTsKKwlyZXR1cm4gd204MzF4X2JhY2tsaWdodF9zZXQoYmwsIGJhY2tsaWdodF9nZXRfYnJpZ2h0 bmVzcyhibCkpOwogfQogCiBzdGF0aWMgaW50IHdtODMxeF9iYWNrbGlnaHRfZ2V0X2JyaWdodG5l c3Moc3RydWN0IGJhY2tsaWdodF9kZXZpY2UgKmJsKQotLSAKMi4yNS4xCgpfX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0 CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3Rv cC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWwK