From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753340AbdHGM1z (ORCPT ); Mon, 7 Aug 2017 08:27:55 -0400 Received: from mail-eopbgr20065.outbound.protection.outlook.com ([40.107.2.65]:33856 "EHLO EUR02-VE1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1753252AbdHGM1t (ORCPT ); Mon, 7 Aug 2017 08:27:49 -0400 Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=peng.fan@nxp.com; From: Peng Fan To: linus.walleij@linaro.org, robh@kernel.org Cc: linux-gpio@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, Peng Fan Subject: [PATCH 2/2] gpio: 74x164: handling enable-gpios Date: Mon, 7 Aug 2017 20:27:13 +0800 Message-Id: <1502108833-10317-2-git-send-email-peng.fan@nxp.com> X-Mailer: git-send-email 2.6.6 In-Reply-To: <1502108833-10317-1-git-send-email-peng.fan@nxp.com> References: <1502108833-10317-1-git-send-email-peng.fan@nxp.com> MIME-Version: 1.0 Content-Type: text/plain X-Originating-IP: [192.158.241.86] X-ClientProxiedBy: HK2PR04CA0086.apcprd04.prod.outlook.com (2603:1096:202:15::30) To DB6PR04MB3224.eurprd04.prod.outlook.com (2603:10a6:6:6::20) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: a94b9a6f-41f0-4e20-fb16-08d4dd8fb5ba X-MS-Office365-Filtering-HT: Tenant X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(300000500095)(300135000095)(300000501095)(300135300095)(22001)(300000502095)(300135100095)(2017030254152)(300000503095)(300135400095)(48565401081)(201703131423075)(201703031133081)(201702281549075)(300000504095)(300135200095)(300000505095)(300135600095)(300000506095)(300135500095);SRVR:DB6PR04MB3224; X-Microsoft-Exchange-Diagnostics: 1;DB6PR04MB3224;3:mkTUR31HgJZIRlqU+w/ODfLNKAzFsrhwLL9HDrgha1rdIdNA4koLxmi30j7RXzevePraOZw0JKaUiJ0Xnt2zMjsnB1HDwPtN+lVKt/AvCmVZpecmzQaXthy3KfZADfl3ph2NKCpRWD6rNtx/39R2aN1m+1k+jRYr40fpnafu5P/v49Dn0FQTa122rOK9FATbX6worsWZ3DnTltDuwHoTcSl5iPXieojDjAUs6HYcVL0FU8c9FlcrjFgfjEiM7PFO;25:7IdIbbtWBabdB/M4pjIHrq6Z9Z5k8KBMGgep3WCemjD5NTrSdubtJSuRq7sXS9/hULYHnkoQvPnzrDRkTiaC4lWpRZiESOaYC7zoow6W/eAcGEd2vnFDi49RBDov0XgvoQ25TbDWnMZy43LXyiru1qiDm3jtt9n4b4miWwmKL4P+ZufJs4bdQg+laYut2FcOe/c0nmn0tHBRke1RbBh8Vq0O1k0vmW/zLMEtYRssa4m4kwntbyRVD+bgzz5zU4ZQxpYrLEBxIvDCneDITmxT0lp4ezgdQavwgFVenRyXZa3OFvFj+w4kRQJeSyP5b/ZKJRIah37zrSBwkgojr0lX2w==;31:1GZrya5sc4W0UY0IstrANen0j0rS26dGvyju7sgOhdZ6JlbbYm21EbPU0unup7wRzgWcbUZjCBQhe60nuZ6D/wkrjXVjQzCzzKQ4XeRDpsmYx8V7p+YcKfSPEBLgYbsMlaV8ctRxyVJU/tvoBXUSexYgvIuZIlCTsDOhdLxBHc13HW17p78y+oTYyykMRgWOO6zXOAgO7HNY04gHtPB4Ws+28ZW6d6BAivdoHmBz/Co= X-MS-TrafficTypeDiagnostic: DB6PR04MB3224: X-Microsoft-Exchange-Diagnostics: 1;DB6PR04MB3224;20:EPyrIUSds3EOqNrnolRaks2iJ5dEwlEOAk+5C9xjDzSiNbuziSWye5juBIY4sbT6u6TVr0ELVdjdzg+Rdo0Xq8gfLqGifdwXSC7MGswnDdQkyE8CeZis64CbpbmxlNaFVeK9az1XJapSTRdmDKInwfY53/Fb9lpO2gsJgDow6mIoKEyRd4gvHbgE8Eoz+KOQfSrsc9ZWmBE5grGo+5lG93omEXobZ7Oll22VbZx3ZfH6zV+QZeOaY1EIsLuBhcmTyzxBdUx0F/Aw+vIC879r+N5ITkPH5k1PorsVuRlTx6DCN/kd7WEwI2BwMCg/fvWuMpKmKf7LDHi2w5oOb5hREYOJJCBaVY3VBsLP8oRSiwhuVt5s7bKSfxTyVDHFE1tNzIGEaUzE/A0G2WNhijAtXsTj+HFS43Twb6RBfNYBo2C5ycK5+9dwQjgy+rNwfq8Sr6qvaRp7vgKzS7tXuC0zY6ERWIFzP8AUV6GHsmh22xFJfFOnErSVskdGvRL9VKMv;4:821s9S8r56jITyQtyRsd/nHNutxZaqQpfgzzTyZH+1qrQ6acqZu99vRPqU6YxVWHSbcLfn0KwJjrp5Z6gmyoAwB/yZ/6XIdopirXWm/lLjqJdv84xNLRudB6OvUYreZ/hYMb/1nZZnvQOFd+8LBNMyYcCrrAvfN0iQUc+mhhd+1ukHbFcARMgh0Cxbbg1OkA/wdYDKe2MSATy5oWv3jSKYxieAix/hDdBFOCX8pv0ePnYVFJ8Dxj2yymbSYB92fZrS77OIVIum41pscfUq3aVmg4E5iermPOyDUqnzIeKTM= X-Exchange-Antispam-Report-Test: UriScan:(185117386973197); X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(6040450)(601004)(2401047)(8121501046)(5005006)(100000703101)(100105400095)(93006095)(93001095)(10201501046)(3002001)(6055026)(6041248)(20161123562025)(20161123564025)(20161123560025)(20161123555025)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123558100)(6072148)(100000704101)(100105200095)(100000705101)(100105500095);SRVR:DB6PR04MB3224;BCL:0;PCL:0;RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095);SRVR:DB6PR04MB3224; X-Forefront-PRVS: 0392679D18 X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10009020)(7370300001)(4630300001)(6009001)(39400400002)(39410400002)(39840400002)(39450400003)(39850400002)(199003)(189002)(6506006)(106356001)(478600001)(105586002)(50226002)(76176999)(50986999)(6116002)(101416001)(3846002)(25786009)(97736004)(2906002)(5660300001)(7736002)(42186005)(305945005)(4326008)(8676002)(50466002)(53936002)(36756003)(5003940100001)(38730400002)(110136004)(48376002)(6512007)(33646002)(7350300001)(68736007)(189998001)(66066001)(47776003)(81156014)(86362001)(81166006)(6486002)(2950100002)(6666003);DIR:OUT;SFP:1101;SCL:1;SRVR:DB6PR04MB3224;H:linux-u7w5.ap.freescale.net;FPR:;SPF:None;PTR:InfoNoRecords;A:1;MX:1;LANG:en; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1;DB6PR04MB3224;23:LFp5646E0G96g0PBE++sNqDq72RO/rst4PR8dxiJ/?= =?us-ascii?Q?gGYkZV315XFj1lyP9yQzKec9PeRvQO8trNYLgG9idFpDSPSuZC0947OUwrZY?= =?us-ascii?Q?JB3FDevRV2RXljpr1OU5NVIeHWmxP9WTe+PHKFWHmhOdPDle7a6YIi/Stfpz?= =?us-ascii?Q?Cxoxc4XrPtispJO20hhcJ8gUX9Ul+4Q1EaDUZ4/+dgj/BhgGOgSL3ISYk9Jp?= =?us-ascii?Q?PROT7UZaj0j6K3TT6oNxvgfi16k4avWds5S/SSB/lO21efgpwZXTWH1KSOie?= =?us-ascii?Q?m+VlXjgfOP4qU0Y0SPbhzdYmLf0zpTZwMnKd0iVuMCkH61SJK3l2HCVWu9Zw?= =?us-ascii?Q?wEm8GCgmg3FDZjwUUANQNawfqVXCT2g4lNtVHlbFJy3mP95Kvj+H9drRJ2qO?= =?us-ascii?Q?FeXoYn3E6Yk1qw/QaNJko/d13YwrZc1+JXBWL4QUEW1u5jCqwWv3P38hB7Zl?= =?us-ascii?Q?3Rjbf4B+o48g0x0e+2iFCvCoQLv0UvN1nJvjdxYDgcUdTcPgA/o3NPFv9ZOG?= =?us-ascii?Q?C0QspRNDWgSiGZKdNT5AHTEg611schEfAYe/G9BZlrwWg5HXjkwEMR+c6UHi?= =?us-ascii?Q?LW5QU9ebymKq4NKDkladQ8x9W9JPoPnkR8c2YM9xL6QG7Qj8q2Nx+Eqkd0XT?= =?us-ascii?Q?aVH7gxJRB2HK5SBNuMNHmI+MGBHBh5Q/yLWnqhjHonbx+VPLZv3LsaNgSn5R?= =?us-ascii?Q?RFwAk5jUVV9E/vE2eTmvxuIBCIocl+T9MFMpHTtwdN2zSUanuGa01JNUXFZe?= =?us-ascii?Q?hfqlsXaJFOZuK9BDRjlYqBQ8NAzCmJBjBj2msA3dzfkvjms00ppVcGr3B0t3?= =?us-ascii?Q?6BEjyTh1NB3cJpTFxiF8/CMehnp9xPoXAhX7KcqJdiVMQJzQNwVWE9MrNtaY?= =?us-ascii?Q?XN90TzSw79mzq0/YGyiS6L0eaLSBgMkJdgC65Jyw5MN62S9YTJ+qVJIkNhHk?= =?us-ascii?Q?Mkdcs6JCLjA4Txi8usDpEMpHtfgJethk98qLdoK/IPfm7jakOx6SniwSDaj3?= =?us-ascii?Q?PlhRGjVfRrmJDXPP9QYq3yhIVWCVPKs+X6strMdj2k+ouweXv5wsUfqb3HyH?= =?us-ascii?Q?MaxX78VS8jinWNtcQUWchMlcTvav+bjkcoE5HIxv8tS7SJiYh2rDuUT8ghr/?= =?us-ascii?Q?u6Bo9itxBfqoR9sE1A+n0GqteIekCVMD9t6WheArYUXA/vUE0AF5U2k+CCIu?= =?us-ascii?Q?ou2nnY3mslHCfAF9gzpF/GMTqGKsDndlM6REdtB/J0mrgA0A6HmZ4f5pA=3D?= =?us-ascii?Q?=3D?= X-Microsoft-Exchange-Diagnostics: 1;DB6PR04MB3224;6:UzZMmt2vcSDiFodI3SBldW7gwIrFxSFg/MUsb1pAG9ezJuaLW2vVCNqMqCMknc0uyxoQM7b9sVoa8EY0Y9lAJi5cxrahyi5qh6av67VjtkaW6/HiesPo6TW+Hf4HRtY/QH371gHbrQcKS7/8duEVEMO6Cr5sJo8JSU/kaw/hlhEYJBuepn5zb7A2UUVOMnyYhF7VfjSXW9OZYszQxywvlJc5ayRTLAVux/E6ORFs7Y2vvPIPQ3btMam7pTjXz0pIG52XrKGmXte0MIPZgz0IjdzPcJ5aPhhNYyl9VaW1btFBTNv7RYxOgy2sf3w6OnGqWObcrRiFUjIy5nyduZ1e8Q==;5:UHN8uBEFq4GdWCN8B3fYV5OZWtRXg9tq3yiImxBDLOaGL8/8UJbJTyj4Lus1z9d2hrWSHoEPoB6jcsO5ZJEy3x8zSp+uzF9cbjty0q1yLSpXZTBI6P3X9Vj8Dicl+kL/kqm8MvZ8UOnoTh6EidA73Q==;24:ifWA7wolRD+MV5OQosy5oVluIQ2FKRW4/LxdeHcWrilK8IVzvzTWHNO/No52oJrMcSdTAe05/Ug73kXdstgB7An5sgBH6zTMPmqFA6lcoac=;7:to36vnY+aqRJwgf2l/PI5lJoAHB9f3Kd3o6Ej//a5qDH3SN9Pc0AHJ/XsecMWWHMyAehxU9yWL1HKDwrXIOErpp3n+2mxbeDZuYA54VRcc1EkSHi+5g7Fwb/1lX4D9FF9v8E/xm6gvlWuBA9nU5Fe9O3z6ZUC7AcGcf2oDYnDcPEspHvj/NMO0TSnZeVRKSdfXWTv755tSL5v8w3kJSAGhATBMKU4BdtYGOLJcskYD8= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Aug 2017 12:27:43.4918 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB6PR04MB3224 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org To 74hc595 and 74lv595, there is an OE(low active) input pin. To some boards, this pin is controller by GPIO, so handling this pin in driver. When driver probe, use GPIOD_OUT_LOW flag when requesting the gpio, so OE is set to low when probe. Signed-off-by: Peng Fan Cc: Linus Walleij --- drivers/gpio/gpio-74x164.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/drivers/gpio/gpio-74x164.c b/drivers/gpio/gpio-74x164.c index a6607fa..e44422c 100644 --- a/drivers/gpio/gpio-74x164.c +++ b/drivers/gpio/gpio-74x164.c @@ -23,6 +23,7 @@ struct gen_74x164_chip { struct gpio_chip gpio_chip; struct mutex lock; u32 registers; + struct gpio_desc *enable_gpio; /* * Since the registers are chained, every byte sent will make * the previous byte shift to the next register in the @@ -142,6 +143,12 @@ static int gen_74x164_probe(struct spi_device *spi) chip->gpio_chip.parent = &spi->dev; chip->gpio_chip.owner = THIS_MODULE; + chip->enable_gpio = devm_gpiod_get(&spi->dev, "enable", GPIOD_OUT_LOW); + if (IS_ERR(chip->enable_gpio)) { + dev_dbg(&spi->dev, "No enable-gpios property\n"); + chip->enable_gpio = NULL; + } + mutex_init(&chip->lock); ret = __gen_74x164_write_config(chip); @@ -164,6 +171,8 @@ static int gen_74x164_remove(struct spi_device *spi) { struct gen_74x164_chip *chip = spi_get_drvdata(spi); + if (chip->enable_gpio) + gpiod_set_value(chip->enable_gpio, 0); gpiochip_remove(&chip->gpio_chip); mutex_destroy(&chip->lock); -- 2.6.6