From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S933870AbdJQHpV (ORCPT ); Tue, 17 Oct 2017 03:45:21 -0400 Received: from mx.dave-tech.it ([2.229.21.40]:46527 "EHLO mx.dave-tech.it" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753350AbdJQHpT (ORCPT ); Tue, 17 Oct 2017 03:45:19 -0400 X-Greylist: delayed 548 seconds by postgrey-1.27 at vger.kernel.org; Tue, 17 Oct 2017 03:45:19 EDT To: =?UTF-8?Q?C=c3=a9dric_Le_Goater?= From: Andrea Scian - DAVE Embedded Systems Subject: about pca955x led driver gpio management Organization: DAVE Embedded Systems Cc: Bryan Wu , Richard Purdie , Jacek Anaszewski , linux-leds@vger.kernel.org, linux-kernel Message-ID: Date: Tue, 17 Oct 2017 09:36:07 +0200 User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:52.0) Gecko/20100101 Thunderbird/52.4.0 MIME-Version: 1.0 Content-Type: text/plain; charset=iso-8859-15; format=flowed Content-Transfer-Encoding: 8bit Content-Language: en-US X-Antivirus: avast! (VPS 171016-6, 16/10/2017), Outbound message X-Antivirus-Status: Clean Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Dear all, I'm working on an iMX6 based board with a PCA9555 which is used both to drive LEDs and manage some GPIOs. My current kernel is quite old (4.1.15) but I've found Cédric patches on mainline and backported to this old revision. I'm facing an issue with it, because it seems that it fails when it's used in a mixed (led/gpios) environment. E.g.: let's say that I have one led connected to LED0 output and one GPIO connected at LED1 output. I define it as                         pca9551: pca9551@60 {                                 compatible = "nxp,pca9551";                                 reg = <0x60>;                                 #address-cells = <1>;                                 #size-cells = <0>;                                 #gpio-cells = <1>;                                 led@0 {                                         label = "led0";                                         reg = <0>;                                         linux,default-trigger = "none";                                 };                                 gpio@1 {                                         label = "gpio1";                                         reg = <1>;                                         type = <2>; /* GPIO */                                 };                 }; At boot it's probed as root@sbc-lynx:~# dmesg | grep pca [    5.315425] leds-pca955x 5-0060: leds-pca955x: Using pca9551 8-bit LED driver at slave address 0x60 [    5.350349] leds-pca955x 5-0060: gpios 511...511 But I cannot access it: root@sbc-lynx:~# echo 511 > /sys/class/gpio/export -sh: echo: write error: Device or resource busy Because for pca955x_gpio_request_pin() this is at offset 0 (in fact is the first gpio registered of this gpio_chip) but it's the index 1 inside pca955x->leds[] Am I missing something? (maybe I made a mistake in my backport and/or I'm missing some patches about the GPIO subsystems). If I'm right I think I can send a patch to fix this (I'm thinking about having an array of GPIO index to map offset -> pca955x->leds[] index or just register all pins as GPIOs and then just report the busy state) WDYT? Kind Regards, -- Andrea SCIAN *DAVE Embedded Systems* via Talponedo 29/A 33080 Porcia (PN) - Italy Telephone: +39.0434.921215 Telefax: +39.0434.1994030 web: www.dave.eu get in touch: