From patchwork Thu Mar 17 09:29:47 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Paul HENRYS X-Patchwork-Id: 1606512 X-Patchwork-Delegate: trini@ti.com Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: bilbo.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=softathome1.onmicrosoft.com header.i=@softathome1.onmicrosoft.com header.a=rsa-sha256 header.s=selector1-softathome1-onmicrosoft-com header.b=AIdlEtEO; dkim-atps=neutral Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de (client-ip=2a01:238:438b:c500:173d:9f52:ddab:ee01; helo=phobos.denx.de; envelope-from=u-boot-bounces@lists.denx.de; receiver=) Received: from phobos.denx.de (phobos.denx.de [IPv6:2a01:238:438b:c500:173d:9f52:ddab:ee01]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits)) (No client certificate requested) by bilbo.ozlabs.org (Postfix) with ESMTPS id 4KK4YX221Jz9s5V for ; Thu, 17 Mar 2022 22:24:45 +1100 (AEDT) Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) by phobos.denx.de (Postfix) with ESMTP id AAF8B837EF; Thu, 17 Mar 2022 12:24:38 +0100 (CET) Authentication-Results: phobos.denx.de; dmarc=none (p=none dis=none) header.from=softathome.com Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de Authentication-Results: phobos.denx.de; dkim=pass (2048-bit key; unprotected) header.d=softathome1.onmicrosoft.com header.i=@softathome1.onmicrosoft.com header.b="AIdlEtEO"; dkim-atps=neutral Received: by phobos.denx.de (Postfix, from userid 109) id 26BE283C9B; Thu, 17 Mar 2022 10:30:10 +0100 (CET) X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,SPF_HELO_PASS,SPF_PASS,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.2 Received: from FRA01-PR2-obe.outbound.protection.outlook.com (mail-pr2fra01on061e.outbound.protection.outlook.com [IPv6:2a01:111:f400:7e18::61e]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by phobos.denx.de (Postfix) with ESMTPS id 16622833F1 for ; Thu, 17 Mar 2022 10:30:06 +0100 (CET) Authentication-Results: phobos.denx.de; dmarc=none (p=none dis=none) header.from=softathome.com Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=paul.henrys_ext@softathome.com ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=a3/QgyzarC4b9/wvNkYpWF+/LjZ90nndou0NX9idZb0e0NiL2vxMxX0mqFLzwvuTasQqv3HbsGSAkfCqx7GmPUY3fyVrFnTq7i4ZKvcqhioGvzGQxnaypvaw7dz6xrxr5eMYkPyNuSQqy+7fkJ04R18OTO5kKk1fIiW/GrZU/mbq2eg4yDeIvSvwCMFEDE4QO4lBu06ZHQjPhN/gaHPDeVWhvSbQ4j+MgsT3p9bYXX8VI5dDwtwoDpD6aB3QFsx6tzvEuBHYkSZXMH2MFG/JaYRFmE/4SE263XKij+OO2Ce3hggHZxZWqkrncnSL61sc8FpqGK77jInkyLvwiIptPA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=vK8EAAG6DZeGciQK3r4jegnwBfiZj2oxfhUZTGjwhdw=; b=FUNAeZJfCojzo3bIl5mv0SBS1NXAgFlD4SrO+hYtehyuZ43N4U272uBSumqj2j6b8/8b+58Y9zZKnraNdPBjgIpr2QKmnfBurOqiqSYyBE1npRfsxucPeZ3s68jWAwnFGGDTxhnxzsrJdaFeKzd8dviMmbVPafqcsVTPJ+5s1pFfsZZLxIIh7YYrlXNZ9TRdLnPV2v3WwaaANq5iy5X8BN14L7wOenwYbYu1f8RIw4B5smZrdv9Vqrfub5tH1k8E85/haUpkODEBBhppwA+g9ZcXDs/nz01IOtYTyUb/9PpQHFGcqWKTuhNfg+V5viilYsdh7LLrQUFNVt1poO5Ksg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 149.6.166.170) smtp.rcpttodomain=lists.denx.de smtp.mailfrom=softathome.com; dmarc=bestguesspass action=none header.from=softathome.com; dkim=none (message not signed); arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=softathome1.onmicrosoft.com; s=selector1-softathome1-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=vK8EAAG6DZeGciQK3r4jegnwBfiZj2oxfhUZTGjwhdw=; b=AIdlEtEOUZLpCQt/92Y/U3I7KPfgSYKcXgrtodWWWhmJWr4gjPYML6Kim3NLbtteI5iCoJF2M78hU4SfeEsV+bFltzDDxc7IYaAPKyTv4hUM0TgXSEjFOz/foHEJ3mCkZdMCQDYYy2UIKzwZl/tWxT7OB7E08YQDZHAy7bm4x5tEKxBk1wgfaNwplliW7R4mpzcYXxENot82wD6YfE0yuLX9QvK6Xw+ri3KXk4S8PjhOY3OR5aq/hhq1I9LejWFI4QsbI5Gr06FSZS+qhwClRsIoKi6yIH/9Ft1h9WZusAbP3SIkXkbfyW6Fx+S2VdZm4McrDOKeO1gKSAdr8/EuuQ== Received: from PR0P264CA0281.FRAP264.PROD.OUTLOOK.COM (2603:10a6:100:1::29) by MR2P264MB0820.FRAP264.PROD.OUTLOOK.COM (2603:10a6:500:9::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5081.14; Thu, 17 Mar 2022 09:30:01 +0000 Received: from PR2FRA01FT007.eop-fra01.prod.protection.outlook.com (2603:10a6:100:1:cafe::ee) by PR0P264CA0281.outlook.office365.com (2603:10a6:100:1::29) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5061.28 via Frontend Transport; Thu, 17 Mar 2022 09:30:01 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 149.6.166.170) smtp.mailfrom=softathome.com; dkim=none (message not signed) header.d=none;dmarc=bestguesspass action=none header.from=softathome.com; Received-SPF: Pass (protection.outlook.com: domain of softathome.com designates 149.6.166.170 as permitted sender) receiver=protection.outlook.com; client-ip=149.6.166.170; helo=proxy.softathome.com; Received: from proxy.softathome.com (149.6.166.170) by PR2FRA01FT007.mail.protection.outlook.com (10.152.48.100) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5081.14 via Frontend Transport; Thu, 17 Mar 2022 09:30:01 +0000 Received: from sahess08-ThinkPad-T580.domains. (unknown [192.168.18.254]) by proxy.softathome.com (Postfix) with ESMTPSA id 22EDC2001C; Thu, 17 Mar 2022 10:30:01 +0100 (CET) From: Paul HENRYS To: u-boot@lists.denx.de Cc: Paul HENRYS Subject: [PATCH v2] drivers: led: bcm6858: Set a default brightness when probing LEDs Date: Thu, 17 Mar 2022 10:29:47 +0100 Message-Id: <20220317092947.2298185-1-paul.henrys_ext@softathome.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220302153114.117364-1-paul.henrys_ext@softathome.com> References: <20220302153114.117364-1-paul.henrys_ext@softathome.com> MIME-Version: 1.0 X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 882484d2-be9c-4789-1289-08da07f8b629 X-MS-TrafficTypeDiagnostic: MR2P264MB0820:EE_ X-Microsoft-Antispam-PRVS: X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: dYtBuh2JGb1wkyQWGdCIxE1LE7Jt1RgHQqXTmG6io8HCiDtaJScYdun09HZ/tHnj/Hji3RHqbjgMI2/uVeZcr2se5YV2Xs3IPBtMAFvOYvzo/Y3Y6DjoJrQIKPqHvByO2tCtSgXs9rfRRmMkUf5a14RE9fI7dXeQ++qotV0E9qTWiWP2z2DmRZjoZpkWer6tm6fCQiSVs+gTu8gtQ62OMH3/RQ2TsoNv8v7AHp0BsnkWUvCrKRWPsaBf0U6GD/CHNrFkGO0Jb5n3cx0TxWUKCpJYeCzueE5g32UnQWwv+X2UiFkzg0xT/ir59YsT74j1VbatBU7zuAtYHt/j/boMxJKHpXTirPGcoathwn/Z8ZRxIT8iCurpfp4KwChO7zUd2wppLJcLmEiQJXkaF11gFa/gIpehsuYZIbQpMP7zs1trpAbLFLsPigUrhbAiDkf4jeKBFwOBT/RNB4VDb2/R5bWfwbBb47Qa2RqRwWOwzRLzqf6e1bDb4s+oYnma3RssaPHsc3sFfbkRf2vRlBcyd52pSBBR/dNNA9I6scpcC2iNRs5ECH/YRo7YZHP6m/0ZtjIQewGRTWcupLfrGOBdDwXtiNsKRIzFgsEskKR6jKjFZQ/JRGwEGi90I4FMl6W8YXu3ZQpruAXff5VZy4ylY+gBaNk/1WjIyjV0pUIk+z6LJI8AuteFCvFqnDTsP9UrF3HL9Ci3N9/xqdDf3JLTbA== X-Forefront-Antispam-Report: CIP:149.6.166.170; CTRY:FR; LANG:en; SCL:1; SRV:; IPV:CAL; SFV:NSPM; H:proxy.softathome.com; PTR:InfoDomainNonexistent; CAT:NONE; SFS:(13230001)(4636009)(40470700004)(46966006)(36840700001)(40460700003)(356005)(36756003)(81166007)(36860700001)(82960400001)(8936002)(47076005)(5660300002)(83380400001)(2616005)(4326008)(508600001)(82310400004)(186003)(426003)(336012)(26005)(1076003)(8676002)(6266002)(70586007)(107886003)(70206006)(86362001)(2906002)(6666004)(6916009)(316002)(6966003)(36900700001); DIR:OUT; SFP:1101; X-OriginatorOrg: softathome.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 17 Mar 2022 09:30:01.5306 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 882484d2-be9c-4789-1289-08da07f8b629 X-MS-Exchange-CrossTenant-Id: aa10e044-e405-4c10-8353-36b4d0cce511 X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=aa10e044-e405-4c10-8353-36b4d0cce511; Ip=[149.6.166.170]; Helo=[proxy.softathome.com] X-MS-Exchange-CrossTenant-AuthSource: PR2FRA01FT007.eop-fra01.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: MR2P264MB0820 X-Mailman-Approved-At: Thu, 17 Mar 2022 12:24:35 +0100 X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.39 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: u-boot-bounces@lists.denx.de Sender: "U-Boot" X-Virus-Scanned: clamav-milter 0.103.5 at phobos.denx.de X-Virus-Status: Clean When probing the LEDs, a default brightness is set based on settings from the U-Boot device tree, i.e. the 'default-brightness' property of the LED nodes. If that property is not present, the default maximum brightness is set. This should make sure the LED controller's registers affecting the brightness are correctly initialized and should give a consistent behaviour. Signed-off-by: Paul HENRYS --- Changes for v2: - Move the call to led_set_brightness() in bcm6858_led_probe(). The brighness is now only set once in the probing function. - Retrieve brightness settings from the device tree and default to the maximum brightness if no settings are present in the device tree. - Update commit title and description according to the changes. drivers/led/led_bcm6858.c | 32 +++++++++++++++++++++++++++++++- 1 file changed, 31 insertions(+), 1 deletion(-) diff --git a/drivers/led/led_bcm6858.c b/drivers/led/led_bcm6858.c index fbf46a114c..3ca6c5b8a9 100644 --- a/drivers/led/led_bcm6858.c +++ b/drivers/led/led_bcm6858.c @@ -18,6 +18,7 @@ #define LEDS_MAX 32 #define LEDS_WAIT 100 +#define LEDS_MAX_BRIGHTNESS 7 /* LED Mode register */ #define LED_MODE_REG 0x0 @@ -38,6 +39,8 @@ #define LED_HW_LED_EN_REG 0x08 /* LED Flash control register0 */ #define LED_FLASH_RATE_CONTROL_REG0 0x10 +/* LED Brightness control register0 */ +#define LED_BRIGHTNESS_CONTROL_REG0 0x20 /* Soft LED input register */ #define LED_SW_LED_IP_REG 0xb8 /* Parallel LED Output Polarity Register */ @@ -96,6 +99,27 @@ static int bcm6858_led_set_period(struct udevice *dev, int period_ms) } #endif +static int led_set_brightness(struct udevice *dev, unsigned int brightness) +{ + struct bcm6858_led_priv *priv = dev_get_priv(dev); + u32 offset, shift, mask, value; + + offset = (priv->pin / 8) * 4; + shift = (priv->pin % 8) * 4; + mask = 0xf << shift; + + /* 8 levels of brightness achieved through PWM */ + value = (brightness > LEDS_MAX_BRIGHTNESS ? + LEDS_MAX_BRIGHTNESS : brightness) << shift; + + debug("%s: %s brightness set to %u\n", __func__, dev->name, value >> shift); + + clrbits_32(priv->regs + LED_BRIGHTNESS_CONTROL_REG0 + offset, mask); + setbits_32(priv->regs + LED_BRIGHTNESS_CONTROL_REG0 + offset, value); + + return 0; +} + static enum led_state_t bcm6858_led_get_state(struct udevice *dev) { struct bcm6858_led_priv *priv = dev_get_priv(dev); @@ -113,6 +137,8 @@ static int bcm6858_led_set_state(struct udevice *dev, enum led_state_t state) { struct bcm6858_led_priv *priv = dev_get_priv(dev); + debug("%s: Set led %s to %d\n", __func__, dev->name, state); + switch (state) { case LEDST_OFF: clrbits_32(priv->regs + LED_SW_LED_IP_REG, (1 << priv->pin)); @@ -180,7 +206,7 @@ static int bcm6858_led_probe(struct udevice *dev) } else { struct bcm6858_led_priv *priv = dev_get_priv(dev); void __iomem *regs; - unsigned int pin; + unsigned int pin, brightness; regs = dev_remap_addr(dev_get_parent(dev)); if (!regs) @@ -201,6 +227,10 @@ static int bcm6858_led_probe(struct udevice *dev) clrbits_32(regs + LED_PLED_OP_PPOL_REG, 1 << pin); else setbits_32(regs + LED_PLED_OP_PPOL_REG, 1 << pin); + + brightness = dev_read_u32_default(dev, "default-brightness", + LEDS_MAX_BRIGHTNESS); + led_set_brightness(dev, brightness); } return 0;