From patchwork Wed May 22 19:27:29 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Dan Murphy X-Patchwork-Id: 164884 Delivered-To: patch@linaro.org Received: by 2002:a92:9e1a:0:0:0:0:0 with SMTP id q26csp1253683ili; Wed, 22 May 2019 12:28:13 -0700 (PDT) X-Google-Smtp-Source: APXvYqw1wiIVKttkzI59THT6zFeXKkX/l6Lp+a67h+jQOsRef+chToPNK8XH+NEi1Sf1yHsr3G9Y X-Received: by 2002:aa7:8a53:: with SMTP id n19mr97604687pfa.11.1558553293451; Wed, 22 May 2019 12:28:13 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1558553293; cv=none; d=google.com; s=arc-20160816; b=kYHyTh/2CRuHLTZs5qNUMjddTKq+9NO6gdQZc1ial5csiaY9IuoCpLd1gZXqY/7Lke kDFNU2HkraSUUR03h93MnayeurHuAEbdcJH8MQn6ueyNnRtG9XrzZLhipSAE1zgmhFZo c+YeCc34n3mAKLxtXC5VQO4pwvZZ8Dwrq7FJ5cMz/rct0sq9uuaFI6BcngtxV++IwpG7 oM7zGA1GirsTVSe3nrbPCes6GgfVk8HSsroRaJs3+3enJS0JojL8Y/hY/oDJesoDj1hq f2jZTcP/BZXBmn6XVozsbnOge733Uc56IPR8qaqZDiyiGJEbQlkBkxPmuF1Qvc1Vv4Eb BEeg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=4lobOehpHKxAz9Z2v1fQplOERI0AEUJYx6XR9ln2I/Y=; b=XJ9A+wtOmVJ77C1hP5DWVaSVKpoi8ry3RfahbonMIMrcbZCEVWTb4+79JtnwbHD0R5 IER70unNejBLQOqODgmwFydXem/Q4+94UjLEgaq2B9ibvilSYWyzL8+yQllAfqXtKPeW VfueAtJVFQ1tzQU/i3Fui02/o5E/RoimNzIMvDSWDWTcPQKTalp9LSkl5p6RMaQqcZQl VbzpN3PjjWlVjgPMCBrCEadX9Q4K9djjQuKeQqLkiPdTKU+sl201M8w7vs/YcNmtqVWA Lr1Px3dd6XmSYcdNzavGRbtYcKDIW0bphZc8rjwP6F3/nEcHSRy5g3iE0wHZ6unCdQS/ aANw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@ti.com header.s=ti-com-17Q1 header.b=KmawTsCW; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=QUARANTINE sp=NONE dis=NONE) header.from=ti.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id i7si25115773pgb.597.2019.05.22.12.28.13; Wed, 22 May 2019 12:28:13 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@ti.com header.s=ti-com-17Q1 header.b=KmawTsCW; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=QUARANTINE sp=NONE dis=NONE) header.from=ti.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1732498AbfEVT2M (ORCPT + 30 others); Wed, 22 May 2019 15:28:12 -0400 Received: from fllv0016.ext.ti.com ([198.47.19.142]:41342 "EHLO fllv0016.ext.ti.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1732411AbfEVT1x (ORCPT ); Wed, 22 May 2019 15:27:53 -0400 Received: from fllv0035.itg.ti.com ([10.64.41.0]) by fllv0016.ext.ti.com (8.15.2/8.15.2) with ESMTP id x4MJRjkm016902; Wed, 22 May 2019 14:27:45 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ti.com; s=ti-com-17Q1; t=1558553265; bh=4lobOehpHKxAz9Z2v1fQplOERI0AEUJYx6XR9ln2I/Y=; h=From:To:CC:Subject:Date:In-Reply-To:References; b=KmawTsCWlghFrolh4iPInogSpLFXphQXpwYPd9X4gXWOh2Kkqb95S1yx3Nq+KyrGo ea5F+BoMPObh9v4IjxcXZlyI34umclWXf5ngV5vDxIl97XvgNpfU33UDoLKr1A6FVv wPEXI3l9pGrABwDNeU2M96EjYMuAHhYDG3Fc4QWY= Received: from DFLE114.ent.ti.com (dfle114.ent.ti.com [10.64.6.35]) by fllv0035.itg.ti.com (8.15.2/8.15.2) with ESMTPS id x4MJRjWH026144 (version=TLSv1.2 cipher=AES256-GCM-SHA384 bits=256 verify=FAIL); Wed, 22 May 2019 14:27:45 -0500 Received: from DFLE115.ent.ti.com (10.64.6.36) by DFLE114.ent.ti.com (10.64.6.35) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1713.5; Wed, 22 May 2019 14:27:45 -0500 Received: from lelv0326.itg.ti.com (10.180.67.84) by DFLE115.ent.ti.com (10.64.6.36) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1713.5 via Frontend Transport; Wed, 22 May 2019 14:27:45 -0500 Received: from localhost (ileax41-snat.itg.ti.com [10.172.224.153]) by lelv0326.itg.ti.com (8.15.2/8.15.2) with ESMTP id x4MJRjAq096393; Wed, 22 May 2019 14:27:45 -0500 From: Dan Murphy To: , , , CC: , , , Dan Murphy , Rob Herring Subject: [RESEND PATCH v4 2/6] dt-bindings: mfd: Add lm36274 bindings to ti-lmu Date: Wed, 22 May 2019 14:27:29 -0500 Message-ID: <20190522192733.13422-3-dmurphy@ti.com> X-Mailer: git-send-email 2.21.0.5.gaeb582a983 In-Reply-To: <20190522192733.13422-1-dmurphy@ti.com> References: <20190522192733.13422-1-dmurphy@ti.com> MIME-Version: 1.0 X-EXCLAIMER-MD-CONFIG: e1e8a2fd-e40a-4ac6-ac9b-f7e9cc9ee180 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Add the LM36274 backlight driver with regulator support. This is a multi-function device for backlight applications. Backlight properties will be documented in it's a supplemental bindings document. Regulator support is documented in the regulator/lm363x-regulator.txt http://www.ti.com/lit/ds/symlink/lm36274.pdf Reviewed-by: Rob Herring Signed-off-by: Dan Murphy --- .../devicetree/bindings/mfd/ti-lmu.txt | 54 +++++++++++++++++++ 1 file changed, 54 insertions(+) -- 2.21.0.5.gaeb582a983 diff --git a/Documentation/devicetree/bindings/mfd/ti-lmu.txt b/Documentation/devicetree/bindings/mfd/ti-lmu.txt index 782d3c9812ed..2296b8f24de4 100644 --- a/Documentation/devicetree/bindings/mfd/ti-lmu.txt +++ b/Documentation/devicetree/bindings/mfd/ti-lmu.txt @@ -8,6 +8,7 @@ TI LMU driver supports lighting devices below. LM3632 Backlight and regulator LM3633 Backlight, LED and fault monitor LM3695 Backlight + LM36274 Backlight and regulator Required properties: - compatible: Should be one of: @@ -15,11 +16,13 @@ Required properties: "ti,lm3632" "ti,lm3633" "ti,lm3695" + "ti,lm36274" - reg: I2C slave address. 0x11 for LM3632 0x29 for LM3631 0x36 for LM3633 0x63 for LM3695 + 0x11 for LM36274 Optional properties: - enable-gpios: A GPIO specifier for hardware enable pin. @@ -50,12 +53,14 @@ Optional nodes: - compatible: Should be one of: "ti,lm3633-fault-monitor" - leds: LED properties for LM3633. Please refer to [2]. + LED properties for LM36274. Please refer to [4]. - regulators: Regulator properties for LM3631 and LM3632. Please refer to [3]. [1] ../leds/backlight/ti-lmu-backlight.txt [2] ../leds/leds-lm3633.txt [3] ../regulator/lm363x-regulator.txt +[4] ../leds/leds-lm36274.txt lm3631@29 { compatible = "ti,lm3631"; @@ -213,3 +218,52 @@ lm3695@63 { }; }; }; + +lm36274@11 { + compatible = "ti,lm36274"; + #address-cells = <1>; + #size-cells = <0>; + reg = <0x11>; + + enable-gpios = <&pioC 2 GPIO_ACTIVE_HIGH>; + regulators { + #address-cells = <1>; + #size-cells = <0>; + compatible = "ti,lm363x-regulator"; + + enable-gpios = <&pioC 0 GPIO_ACTIVE_HIGH>, + <&pioC 1 GPIO_ACTIVE_HIGH>; + + vboost { + regulator-name = "lcd_boost"; + regulator-min-microvolt = <4000000>; + regulator-max-microvolt = <7150000>; + regulator-always-on; + }; + + vpos { + regulator-name = "lcd_vpos"; + regulator-min-microvolt = <4000000>; + regulator-max-microvolt = <6500000>; + }; + + vneg { + regulator-name = "lcd_vneg"; + regulator-min-microvolt = <4000000>; + regulator-max-microvolt = <6500000>; + }; + }; + + backlight { + #address-cells = <1>; + #size-cells = <0>; + compatible = "ti,lm36274-backlight"; + + led@0 { + reg = <0>; + led-sources = <0 2>; + label = "white:backlight_cluster"; + linux,default-trigger = "backlight"; + }; + }; +}; From patchwork Wed May 22 19:27:30 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Dan Murphy X-Patchwork-Id: 164887 Delivered-To: patch@linaro.org Received: by 2002:ac9:2a84:0:0:0:0:0 with SMTP id p4csp1206829oca; Wed, 22 May 2019 12:45:59 -0700 (PDT) X-Google-Smtp-Source: APXvYqwhHSD1EsjIZHlKAY3dZ4stLefme3ewQ8gmBv0ApiDTk/eFqucvJmFdsxVacLyVnDrOtQa8 X-Received: by 2002:a65:42cd:: with SMTP id l13mr38679655pgp.72.1558554359516; Wed, 22 May 2019 12:45:59 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1558554359; cv=none; d=google.com; s=arc-20160816; b=fsS0VKND21LCaxzZFHLfGQnSZPliNJm+qwT7/uWTmdfT67AjVeoWu2f0MMVFPJ0ZhP VQnQvSn+Ufdc4rOZKfLGjnaZXwK0SzFxn6NbU5XFm6RX5lu/ZqsmbtoGFp8VIa0thPRV z1r57KrKDunsN7wnjm+Qw2CV9qrqFOXz9fvpnkAOFoieTn1Wa2thw3ybJhl1CQdhPjzx 2R6nDco03H0DGGixS44mPSxYG3d2ZWEwmCANv80ivdw2QEfm8oQWRKvwxsK7StUZUg8Y trcqYlc2+ddX9bCd7x2J4p/IZxTDZraniJeddFntkwJqnyKXuXfQDXwB862BeyNG2YgD fgHw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=Yly9sJcWMeuDQbobJ18oTecNXjdhRo3R7wQ3SynYIJE=; b=O97yVrnI7EmdL2+khRYQOpqehovQhmGPO9FGP9VxqwpYqYNfN4LYx8Qkd7OyqxagtW Fs5cHc+6YEnvnWlP05tBLqQD9K7A8xzV086VXY8PgXY65pMFjAcp2eluD4Ws6T9M9Dbs vmOYR1zxTA179mppuTgP2g+TovszhWLaPY5q4APtYom2sXUzmV8M72qhXt0UOMpGPaFG Q5JaK6tGiBQDKXf4ne1pTIUYrYQMPiAwsJqaIo5mtRM9Efw0May5OiMpwpp807xs1PKU er6PpbcQEPNuqCx9PQSnR7CiecHl+9rixOrhIREHeFazAvqFZKjCxiDbRP69MYoa12y7 5gVw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@ti.com header.s=ti-com-17Q1 header.b=A+sMqwwy; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=QUARANTINE sp=NONE dis=NONE) header.from=ti.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id a15si29424886pfa.85.2019.05.22.12.45.59; Wed, 22 May 2019 12:45:59 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@ti.com header.s=ti-com-17Q1 header.b=A+sMqwwy; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=QUARANTINE sp=NONE dis=NONE) header.from=ti.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2387850AbfEVTp6 (ORCPT + 30 others); Wed, 22 May 2019 15:45:58 -0400 Received: from lelv0143.ext.ti.com ([198.47.23.248]:36710 "EHLO lelv0143.ext.ti.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1732407AbfEVT1w (ORCPT ); Wed, 22 May 2019 15:27:52 -0400 Received: from lelv0266.itg.ti.com ([10.180.67.225]) by lelv0143.ext.ti.com (8.15.2/8.15.2) with ESMTP id x4MJRk7t117824; Wed, 22 May 2019 14:27:46 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ti.com; s=ti-com-17Q1; t=1558553266; bh=Yly9sJcWMeuDQbobJ18oTecNXjdhRo3R7wQ3SynYIJE=; h=From:To:CC:Subject:Date:In-Reply-To:References; b=A+sMqwwyO3I+YfjO8Stpm6UTvls0i07hmznSWvo9upkpcAr+LKL8mGfsjGo9NZA+R heOP4QbfyqzgPWZQrYlUEQfTrhlH0e7EPURGBqmLYSjkGOgl/XXqWk1zxFoMQU7+LR 5uy2WCDJFJ775Nb225gBw49ZyUz7j2xF7R+ZFkfk= Received: from DLEE115.ent.ti.com (dlee115.ent.ti.com [157.170.170.26]) by lelv0266.itg.ti.com (8.15.2/8.15.2) with ESMTPS id x4MJRjpe032003 (version=TLSv1.2 cipher=AES256-GCM-SHA384 bits=256 verify=FAIL); Wed, 22 May 2019 14:27:45 -0500 Received: from DLEE105.ent.ti.com (157.170.170.35) by DLEE115.ent.ti.com (157.170.170.26) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1713.5; Wed, 22 May 2019 14:27:45 -0500 Received: from fllv0039.itg.ti.com (10.64.41.19) by DLEE105.ent.ti.com (157.170.170.35) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1713.5 via Frontend Transport; Wed, 22 May 2019 14:27:45 -0500 Received: from localhost (ileax41-snat.itg.ti.com [10.172.224.153]) by fllv0039.itg.ti.com (8.15.2/8.15.2) with ESMTP id x4MJRjLQ032996; Wed, 22 May 2019 14:27:45 -0500 From: Dan Murphy To: , , , CC: , , , Dan Murphy Subject: [RESEND PATCH v4 3/6] mfd: ti-lmu: Add LM36274 support to the ti-lmu Date: Wed, 22 May 2019 14:27:30 -0500 Message-ID: <20190522192733.13422-4-dmurphy@ti.com> X-Mailer: git-send-email 2.21.0.5.gaeb582a983 In-Reply-To: <20190522192733.13422-1-dmurphy@ti.com> References: <20190522192733.13422-1-dmurphy@ti.com> MIME-Version: 1.0 X-EXCLAIMER-MD-CONFIG: e1e8a2fd-e40a-4ac6-ac9b-f7e9cc9ee180 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Add the LM36274 register support to the ti-lmu MFD driver. Signed-off-by: Dan Murphy --- drivers/mfd/Kconfig | 5 ++--- drivers/mfd/ti-lmu.c | 14 ++++++++++++++ include/linux/mfd/ti-lmu-register.h | 23 +++++++++++++++++++++++ include/linux/mfd/ti-lmu.h | 4 ++++ 4 files changed, 43 insertions(+), 3 deletions(-) -- 2.21.0.5.gaeb582a983 diff --git a/drivers/mfd/Kconfig b/drivers/mfd/Kconfig index fcae244229b3..5606411038bb 100644 --- a/drivers/mfd/Kconfig +++ b/drivers/mfd/Kconfig @@ -1311,9 +1311,8 @@ config MFD_TI_LMU select REGMAP_I2C help Say yes here to enable support for TI LMU chips. - - TI LMU MFD supports LM3532, LM3631, LM3632, LM3633, and LM3695. - It consists of backlight, LED and regulator driver. + TI LMU MFD supports LM3532, LM3631, LM3632, LM3633, LM3695 and + LM36274. It consists of backlight, LED and regulator driver. It provides consistent device controls for lighting functions. config MFD_OMAP_USB_HOST diff --git a/drivers/mfd/ti-lmu.c b/drivers/mfd/ti-lmu.c index 89b1c5b584af..691ab9dd6236 100644 --- a/drivers/mfd/ti-lmu.c +++ b/drivers/mfd/ti-lmu.c @@ -111,6 +111,17 @@ static const struct mfd_cell lm3695_devices[] = { }, }; +static const struct mfd_cell lm36274_devices[] = { + LM363X_REGULATOR(LM36274_BOOST), + LM363X_REGULATOR(LM36274_LDO_POS), + LM363X_REGULATOR(LM36274_LDO_NEG), + { + .name = "lm36274-leds", + .id = LM36274, + .of_compatible = "ti,lm36274-backlight", + }, +}; + #define TI_LMU_DATA(chip, max_reg) \ static const struct ti_lmu_data chip##_data = \ { \ @@ -123,6 +134,7 @@ TI_LMU_DATA(lm3631, LM3631_MAX_REG); TI_LMU_DATA(lm3632, LM3632_MAX_REG); TI_LMU_DATA(lm3633, LM3633_MAX_REG); TI_LMU_DATA(lm3695, LM3695_MAX_REG); +TI_LMU_DATA(lm36274, LM36274_MAX_REG); static int ti_lmu_probe(struct i2c_client *cl, const struct i2c_device_id *id) { @@ -191,6 +203,7 @@ static const struct of_device_id ti_lmu_of_match[] = { { .compatible = "ti,lm3632", .data = &lm3632_data }, { .compatible = "ti,lm3633", .data = &lm3633_data }, { .compatible = "ti,lm3695", .data = &lm3695_data }, + { .compatible = "ti,lm36274", .data = &lm36274_data }, { } }; MODULE_DEVICE_TABLE(of, ti_lmu_of_match); @@ -200,6 +213,7 @@ static const struct i2c_device_id ti_lmu_ids[] = { { "lm3632", LM3632 }, { "lm3633", LM3633 }, { "lm3695", LM3695 }, + { "lm36274", LM36274 }, { } }; MODULE_DEVICE_TABLE(i2c, ti_lmu_ids); diff --git a/include/linux/mfd/ti-lmu-register.h b/include/linux/mfd/ti-lmu-register.h index 76998b01764b..076d8dea38fd 100644 --- a/include/linux/mfd/ti-lmu-register.h +++ b/include/linux/mfd/ti-lmu-register.h @@ -189,4 +189,27 @@ #define LM3695_REG_BRT_MSB 0x14 #define LM3695_MAX_REG 0x14 + +/* LM36274 */ +#define LM36274_REG_REV 0x01 +#define LM36274_REG_BL_CFG_1 0x02 +#define LM36274_REG_BL_CFG_2 0x03 +#define LM36274_REG_BRT_LSB 0x04 +#define LM36274_REG_BRT_MSB 0x05 +#define LM36274_REG_BL_EN 0x08 + +#define LM36274_REG_BIAS_CONFIG_1 0x09 +#define LM36274_EXT_EN_MASK BIT(0) +#define LM36274_EN_VNEG_MASK BIT(1) +#define LM36274_EN_VPOS_MASK BIT(2) + +#define LM36274_REG_BIAS_CONFIG_2 0x0a +#define LM36274_REG_BIAS_CONFIG_3 0x0b +#define LM36274_REG_VOUT_BOOST 0x0c +#define LM36274_REG_VOUT_POS 0x0d +#define LM36274_REG_VOUT_NEG 0x0e +#define LM36274_VOUT_MASK 0x3F + +#define LM36274_MAX_REG 0x13 + #endif diff --git a/include/linux/mfd/ti-lmu.h b/include/linux/mfd/ti-lmu.h index 54e9d272e81c..0957598c7d41 100644 --- a/include/linux/mfd/ti-lmu.h +++ b/include/linux/mfd/ti-lmu.h @@ -26,6 +26,7 @@ enum ti_lmu_id { LM3632, LM3633, LM3695, + LM36274, LMU_MAX_ID, }; @@ -67,6 +68,9 @@ enum lm363x_regulator_id { LM3632_BOOST, /* Boost output */ LM3632_LDO_POS, /* Positive display bias output */ LM3632_LDO_NEG, /* Negative display bias output */ + LM36274_BOOST, /* Boost output */ + LM36274_LDO_POS, /* Positive display bias output */ + LM36274_LDO_NEG, /* Negative display bias output */ }; /** From patchwork Wed May 22 19:27:33 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Dan Murphy X-Patchwork-Id: 164890 Delivered-To: patch@linaro.org Received: by 2002:ac9:2a84:0:0:0:0:0 with SMTP id p4csp1206963oca; Wed, 22 May 2019 12:46:07 -0700 (PDT) X-Google-Smtp-Source: APXvYqxX6IKYl1d9RIdrDcZwP6wTPN5/9IMKWUO50KhMIAcvt8tiuYTyIscdHMigzdHSbWwy71gW X-Received: by 2002:a63:a709:: with SMTP id d9mr23879038pgf.263.1558554367456; Wed, 22 May 2019 12:46:07 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1558554367; cv=none; d=google.com; s=arc-20160816; b=GTvSDvngWZes1ZzSxcEUDkTQKQLdKM/+I3SmvsW7NW2yqd2ghT/TdCjLNPqzRnjwo1 VS5R5ELgKgADxAcIfycQPLKMLl3hR5nZVyDs+dEukHCqVXaV+cOBDivjShBjSLDHOYnR W7mVPXbDRaQNWs62tzHLrk8POT3qr58CQ00xjBSfM0rfkMB20euvwLcjOVmgQlToUBtt DaiaaJyaAlOQLSqZuAUzTR2xRh+zdOyH329nEQUsjqopAbTQfxUr5hENNKZSabpuCh1i Y3vot0GZoqssQamGe2VfpOw+dUNaUublmugUxnDrwBnIk6a2CWaKz0CXAPER5b60Ux0N FlUw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=m4RFJ9RmVWrEHlU3lwMVq4m46Orb+tuVXVAz3ATT0Po=; b=pQJS34Gy6OPo0f3NB5Tr1lj4PA8Sm73miQuuajp7d2DEE7dO2TliY1LF/SU+uQdL30 OKwhq/0umSVsJPHTY+gG+bH3nNQSGDbks5Tpn7eZsx2zpinWOkYBgNKrEu/MbgfSuEJk GeWSes4KNWeLVWFLy9QbLBqdC7lRxj0YrIGix9DXTpoWn8PpjzuwbY19zXwz1ji4gFjI ufIzDIs7gcfst44pft3g55QWdHCk5RPAQ5R8AuSv+oZYqBFfnLuXor4Al3l73MIvT0Es hMaZkfQlbFjyjl6XJIzkOwtjq9nn3kntGQyoLLHlE5Qru3+gxSms1S5N3Ditgh6Qtsvm vRYw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@ti.com header.s=ti-com-17Q1 header.b=S3gEzEFW; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=QUARANTINE sp=NONE dis=NONE) header.from=ti.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id f126si26029813pgc.250.2019.05.22.12.46.06; Wed, 22 May 2019 12:46:07 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@ti.com header.s=ti-com-17Q1 header.b=S3gEzEFW; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=QUARANTINE sp=NONE dis=NONE) header.from=ti.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2387862AbfEVTqF (ORCPT + 30 others); Wed, 22 May 2019 15:46:05 -0400 Received: from lelv0143.ext.ti.com ([198.47.23.248]:36712 "EHLO lelv0143.ext.ti.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1732409AbfEVT1v (ORCPT ); Wed, 22 May 2019 15:27:51 -0400 Received: from fllv0034.itg.ti.com ([10.64.40.246]) by lelv0143.ext.ti.com (8.15.2/8.15.2) with ESMTP id x4MJRk8X117828; Wed, 22 May 2019 14:27:46 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ti.com; s=ti-com-17Q1; t=1558553266; bh=m4RFJ9RmVWrEHlU3lwMVq4m46Orb+tuVXVAz3ATT0Po=; h=From:To:CC:Subject:Date:In-Reply-To:References; b=S3gEzEFWMaecsLQ1uXvlU8vttCpPVGDCcB/GxWxC/+vCcSt7WKfVvQdm68jtOHeD3 JxCFRFK2UXYWacUaRKWFgVhbam5pUCiU6rPFPV/kwsoERYXxhxzgqIuExMoX2xtHZH lbvnPojLl4WQmAUlySBIhrOeopx6ho6P6BEkjR6M= Received: from DFLE111.ent.ti.com (dfle111.ent.ti.com [10.64.6.32]) by fllv0034.itg.ti.com (8.15.2/8.15.2) with ESMTPS id x4MJRkoG130169 (version=TLSv1.2 cipher=AES256-GCM-SHA384 bits=256 verify=FAIL); Wed, 22 May 2019 14:27:46 -0500 Received: from DFLE103.ent.ti.com (10.64.6.24) by DFLE111.ent.ti.com (10.64.6.32) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1713.5; Wed, 22 May 2019 14:27:46 -0500 Received: from lelv0327.itg.ti.com (10.180.67.183) by DFLE103.ent.ti.com (10.64.6.24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1713.5 via Frontend Transport; Wed, 22 May 2019 14:27:46 -0500 Received: from localhost (ileax41-snat.itg.ti.com [10.172.224.153]) by lelv0327.itg.ti.com (8.15.2/8.15.2) with ESMTP id x4MJRkJ7101070; Wed, 22 May 2019 14:27:46 -0500 From: Dan Murphy To: , , , CC: , , , Dan Murphy Subject: [RESEND PATCH v4 6/6] leds: lm36274: Introduce the TI LM36274 LED driver Date: Wed, 22 May 2019 14:27:33 -0500 Message-ID: <20190522192733.13422-7-dmurphy@ti.com> X-Mailer: git-send-email 2.21.0.5.gaeb582a983 In-Reply-To: <20190522192733.13422-1-dmurphy@ti.com> References: <20190522192733.13422-1-dmurphy@ti.com> MIME-Version: 1.0 X-EXCLAIMER-MD-CONFIG: e1e8a2fd-e40a-4ac6-ac9b-f7e9cc9ee180 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Introduce the LM36274 LED driver. This driver uses the ti-lmu MFD driver to probe this LED driver. The driver configures only the LED registers and enables the outputs according to the config file. The driver utilizes the TI LMU (Lighting Management Unit) LED common framework to set the brightness bits. Signed-off-by: Dan Murphy --- drivers/leds/Kconfig | 7 ++ drivers/leds/Makefile | 1 + drivers/leds/leds-lm36274.c | 174 ++++++++++++++++++++++++++++++++++++ 3 files changed, 182 insertions(+) create mode 100644 drivers/leds/leds-lm36274.c -- 2.21.0.5.gaeb582a983 diff --git a/drivers/leds/Kconfig b/drivers/leds/Kconfig index 255fdd5e8491..db83a3feca01 100644 --- a/drivers/leds/Kconfig +++ b/drivers/leds/Kconfig @@ -791,6 +791,13 @@ config LEDS_LM3697 Say Y to enable the LM3697 LED driver for TI LMU devices. This supports the LED device LM3697. +config LEDS_LM36274 + tristate "LED driver for LM36274" + depends on LEDS_TI_LMU_COMMON + help + Say Y to enable the LM36274 LED driver for TI LMU devices. + This supports the LED device LM36274. + comment "LED Triggers" source "drivers/leds/trigger/Kconfig" diff --git a/drivers/leds/Makefile b/drivers/leds/Makefile index 8ab825c8b5c3..c229432b7fe7 100644 --- a/drivers/leds/Makefile +++ b/drivers/leds/Makefile @@ -82,6 +82,7 @@ obj-$(CONFIG_LEDS_SC27XX_BLTC) += leds-sc27xx-bltc.o obj-$(CONFIG_LEDS_LM3601X) += leds-lm3601x.o obj-$(CONFIG_LEDS_TI_LMU_COMMON) += leds-ti-lmu-common.o obj-$(CONFIG_LEDS_LM3697) += leds-lm3697.o +obj-$(CONFIG_LEDS_LM36274) += leds-lm36274.o # LED SPI Drivers obj-$(CONFIG_LEDS_CR0014114) += leds-cr0014114.o diff --git a/drivers/leds/leds-lm36274.c b/drivers/leds/leds-lm36274.c new file mode 100644 index 000000000000..b47786d36d21 --- /dev/null +++ b/drivers/leds/leds-lm36274.c @@ -0,0 +1,174 @@ +// SPDX-License-Identifier: GPL-2.0 +// TI LM36274 LED chip family driver +// Copyright (C) 2019 Texas Instruments Incorporated - http://www.ti.com/ + +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include + +#include + +#define LM36274_MAX_STRINGS 4 +#define LM36274_BL_EN BIT(4) + +/** + * struct lm36274 + * @pdev: platform device + * @led_dev: led class device + * @lmu_data: Register and setting values for common code + * @regmap: Devices register map + * @dev: Pointer to the devices device struct + * @led_sources - The LED strings supported in this array + * @num_leds - Number of LED strings are supported in this array + */ +struct lm36274 { + struct platform_device *pdev; + struct led_classdev led_dev; + struct ti_lmu_bank lmu_data; + struct regmap *regmap; + struct device *dev; + + u32 led_sources[LM36274_MAX_STRINGS]; + int num_leds; +}; + +static int lm36274_brightness_set(struct led_classdev *led_cdev, + enum led_brightness brt_val) +{ + struct lm36274 *led = container_of(led_cdev, struct lm36274, led_dev); + + return ti_lmu_common_set_brightness(&led->lmu_data, brt_val); +} + +static int lm36274_init(struct lm36274 *lm36274_data) +{ + int enable_val = 0; + int i; + + for (i = 0; i < lm36274_data->num_leds; i++) + enable_val |= (1 << lm36274_data->led_sources[i]); + + if (!enable_val) { + dev_err(lm36274_data->dev, "No LEDs were enabled\n"); + return -EINVAL; + } + + enable_val |= LM36274_BL_EN; + + return regmap_write(lm36274_data->regmap, LM36274_REG_BL_EN, + enable_val); +} + +static int lm36274_parse_dt(struct lm36274 *lm36274_data) +{ + struct fwnode_handle *child = NULL; + char label[LED_MAX_NAME_SIZE]; + struct device *dev = &lm36274_data->pdev->dev; + const char *name; + int child_cnt; + int ret = -EINVAL; + + /* There should only be 1 node */ + child_cnt = device_get_child_node_count(dev); + if (child_cnt != 1) + return ret; + + device_for_each_child_node(dev, child) { + ret = fwnode_property_read_string(child, "label", &name); + if (ret) + snprintf(label, sizeof(label), + "%s::", lm36274_data->pdev->name); + else + snprintf(label, sizeof(label), + "%s:%s", lm36274_data->pdev->name, name); + + lm36274_data->num_leds = fwnode_property_read_u32_array(child, + "led-sources", + NULL, 0); + if (lm36274_data->num_leds <= 0) + return -ENODEV; + + ret = fwnode_property_read_u32_array(child, "led-sources", + lm36274_data->led_sources, + lm36274_data->num_leds); + if (ret) { + dev_err(dev, "led-sources property missing\n"); + return -EINVAL; + } + + fwnode_property_read_string(child, "linux,default-trigger", + &lm36274_data->led_dev.default_trigger); + + } + + lm36274_data->lmu_data.regmap = lm36274_data->regmap; + lm36274_data->lmu_data.max_brightness = MAX_BRIGHTNESS_11BIT; + lm36274_data->lmu_data.msb_brightness_reg = LM36274_REG_BRT_MSB; + lm36274_data->lmu_data.lsb_brightness_reg = LM36274_REG_BRT_LSB; + + lm36274_data->led_dev.name = label; + lm36274_data->led_dev.max_brightness = MAX_BRIGHTNESS_11BIT; + lm36274_data->led_dev.brightness_set_blocking = lm36274_brightness_set; + + return ret; +} + +static int lm36274_probe(struct platform_device *pdev) +{ + struct ti_lmu *lmu = dev_get_drvdata(pdev->dev.parent); + struct lm36274 *lm36274_data; + int ret; + + lm36274_data = devm_kzalloc(&pdev->dev, sizeof(*lm36274_data), + GFP_KERNEL); + if (!lm36274_data) { + ret = -ENOMEM; + return ret; + } + + lm36274_data->pdev = pdev; + lm36274_data->dev = lmu->dev; + lm36274_data->regmap = lmu->regmap; + dev_set_drvdata(&pdev->dev, lm36274_data); + + ret = lm36274_parse_dt(lm36274_data); + if (ret) { + dev_err(lm36274_data->dev, "Failed to parse DT node\n"); + return ret; + } + + ret = lm36274_init(lm36274_data); + if (ret) { + dev_err(lm36274_data->dev, "Failed to init the device\n"); + return ret; + } + + return devm_led_classdev_register(lm36274_data->dev, + &lm36274_data->led_dev); +} + +static const struct of_device_id of_lm36274_leds_match[] = { + { .compatible = "ti,lm36274-backlight", }, + {}, +}; +MODULE_DEVICE_TABLE(of, of_lm36274_leds_match); + +static struct platform_driver lm36274_driver = { + .probe = lm36274_probe, + .driver = { + .name = "lm36274-leds", + }, +}; +module_platform_driver(lm36274_driver) + +MODULE_DESCRIPTION("Texas Instruments LM36274 LED driver"); +MODULE_AUTHOR("Dan Murphy "); +MODULE_LICENSE("GPL v2");