About new gpio API in linux/gpio.h adopted by kernel 4.8

Wang, Kuiying kuiying.wang at intel.com
Fri Sep 7 20:10:57 AEST 2018


Yes, you are right. There is no configuration for gpio-line-names property for aspeed g5.
I plan to upstream a patch for aspeed g5 as following:

commit 9dfd72ff5f628d7aaa10728756ce42bd5f768d4f (HEAD -> dev-4.18)
Author: Kuiying Wang <kuiying.wang at intel.com>
Date:   Fri Sep 7 18:01:41 2018 +0800

    Define the gpio-line-names property for aspeed-g5

    Based on aspeed AST-2500 Datasheet spec, there are 232 gpios.
    So defines the gpio line name from "A0" to "AC7".

    Signed-off-by: Kuiying Wang <kuiying.wang at intel.com>

diff --git a/arch/arm/boot/dts/aspeed-g5.dtsi b/arch/arm/boot/dts/aspeed-g5.dtsi
index d92f047907de..6d664f4f1621 100644
--- a/arch/arm/boot/dts/aspeed-g5.dtsi
+++ b/arch/arm/boot/dts/aspeed-g5.dtsi
@@ -265,6 +265,36 @@
                                gpio-ranges = <&pinctrl 0 0 220>;
                                clocks = <&syscon ASPEED_CLK_APB>;
                                interrupt-controller;
+                   gpio-line-names = "A0","A1","A2","A3","A4","A5","A6","A7",
+                                   "B0","B1","B2","B3","B4","B5","B6","B7",
+                                   "C0","C1","C2","C3","C4","C5","C6","C7",
+                                   "D0","D1","D2","D3","D4","D5","D6","D7",
+                                   "E0","E1","E2","E3","E4","E5","E6","E7",
+                                   "F0","F1","F2","F3","F4","F5","F6","F7",
+                                   "G0","G1","G2","G3","G4","G5","G6","G7",
+                                   "H0","H1","H2","H3","H4","H5","H6","H7",
+                                   "I0","I1","I2","I3","I4","I5","I6","I7",
+                                   "J0","J1","J2","J3","J4","J5","J6","J7",
+                                   "K0","E1","E2","E3","E4","E5","E6","E7",
+                                   "L0","L1","L2","L3","L4","L5","L6","L7",
+                                   "M0","M1","M2","M3","M4","M5","M6","M7",
+                                   "N0","N1","N2","N3","N4","N5","N6","N7",
+                                   "O0","O1","O2","O3","O4","O5","O6","O7",
+                                   "P0","P1","P2","P3","P4","P5","P6","P7",
+                                   "Q0","Q1","Q2","Q3","Q4","Q5","Q6","Q7",
+                                   "R0","R1","R2","R3","R4","R5","R6","R7",
+                                   "S0","S1","S2","S3","S4","S5","S6","S7",
+                                   "T0","T1","T2","T3","T4","T5","T6","T7",
+                                   "U0","U1","U2","U3","U4","U5","U6","U7",
+                                   "V0","V1","V2","V3","V4","V5","V6","V7",
+                                   "W0","W1","W2","W3","W4","W5","W6","W7",
+                                   "X0","X1","X2","X3","X4","X5","X6","X7",
+                                   "Y0","Y1","Y2","Y3","Y4","Y5","Y6","Y7",
+                                   "Z0","Z1","Z2","Z3","Z4","Z5","Z6","Z7",
+                                   "AA0","AA1","AA2","AA3","AA4","AA5","AA6","AA7",
+                                   "AB0","AB1","AB2","AB3","AB4","AB5","AB6","AB7",
+                                   "AC0","AC1","AC2","AC3","AC4","AC5","AC6","AC7"
+                   ;
                        };

Do you all agree on this?
If no what's your suggestion?

Thanks,
Kuiying.


-----Original Message-----
From: Andrew Jeffery [mailto:andrew at aj.id.au] 
Sent: Thursday, September 06, 2018 9:30 PM
To: Andrew Geissler <geissonator at gmail.com>; Wang, Kuiying <kuiying.wang at intel.com>
Cc: Brad Bishop <bradleyb at fuzziesquirrel.com>; Andrew Geissler <geissonator at yahoo.com>; chunhui.jia at linux.intel.com; kunyi731 at gmail.com; Mihm, James <james.mihm at intel.com>; Tanous, Ed <ed.tanous at intel.com>; Feist, James <james.feist at intel.com>; Jia, Chunhui <chunhui.jia at intel.com>; Patrick Venture <venture at google.com>; OpenBMC Maillist <openbmc at lists.ozlabs.org>; Li, Yong B <yong.b.li at intel.com>; Yang, Cheng C <cheng.c.yang at intel.com>; Xu, Qiang <qiang.xu at intel.com>; Nguyen, Hai V <hai.v.nguyen at intel.com>; Joel Stanley <joel at jms.id.au>
Subject: Re: About new gpio API in linux/gpio.h adopted by kernel 4.8

On Thu, 6 Sep 2018, at 22:17, Andrew Geissler wrote:
> Hey Kuiying, this seems like more of a 4.18 kernel question for 
> Joel/AndrewJ. Put them on cc.
> On Thu, Sep 6, 2018 at 2:30 AM Wang, Kuiying <kuiying.wang at intel.com> wrote:
> >
> > Hi Brad/Andrew,
> > I found the new gpio API adopted by kernel 4.8, is not fully ready, all the lines are "unnamed".

I expect this is because no-one has given them an name in your devicetree. For example, here's some output from a system I have handy:

root at witherspoon:/tmp# gpioinfo /dev/gpiochip3
gpiochip3 - 16 lines:
        line   0: "PS_SMBUS_RESET_N" unused input active-high 
        line   1: "APSS_RESET_N" unused input active-high 
        line   2: "GPU0_TH_OVERT_N_BUFF" unused input active-high 
        line   3: "GPU1_TH_OVERT_N_BUFF" unused input active-high 
        line   4: "GPU2_TH_OVERT_N_BUFF" unused input active-high 
        line   5: "GPU3_TH_OVERT_N_BUFF" unused input active-high 
        line   6: "GPU4_TH_OVERT_N_BUFF" unused input active-high 
        line   7: "GPU5_TH_OVERT_N_BUFF" unused input active-high 
        line   8: "GPU0_PWR_GOOD_BUFF" unused input active-high 
        line   9: "GPU1_PWR_GOOD_BUFF" unused input active-high 
        line  10: "GPU2_PWR_GOOD_BUFF" unused input active-high 
        line  11: "GPU3_PWR_GOOD_BUFF" unused input active-high 
        line  12: "GPU4_PWR_GOOD_BUFF" unused input active-high 
        line  13: "GPU5_PWR_GOOD_BUFF" unused input active-high 
        line  14: "12V_BREAKER_FLT_N" unused input active-high 
        line  15: "THROTTLE_UNLATCHED_N" unused input active-high

Which corresponds to:

https://github.com/openbmc/linux/blob/dev-4.18/arch/arm/boot/dts/aspeed-bmc-opp-witherspoon.dts#L501

> > If that we cannot switch to it now.
> > Or there is special kernel based configuration I have to do?
> >
> > root at wolfpass:/tmp# ./gpiodetect
> > gpiochip0 [SGPIOA] (8 lines)
> > gpiochip1 [SGPIOB] (8 lines)
> > gpiochip10 [1e780000.gpio] (232 lines)
> > gpiochip2 [SGPIOC] (8 lines)
> > gpiochip3 [SGPIOD] (8 lines)
> > gpiochip4 [SGPIOE] (8 lines)
> > gpiochip5 [SGPIOF] (8 lines)
> > gpiochip6 [SGPIOG] (8 lines)
> > gpiochip7 [SGPIOH] (8 lines)
> > gpiochip8 [SGPIOI] (8 lines)
> > gpiochip9 [SGPIOJ] (8 lines)
> > root at wolfpass:/tmp# ./gpioinfo /dev/gpiochip1
> > gpiochip1 - 8 lines:
> >         line   0:      unnamed       unused  output  active-high
> >         line   1:      unnamed       unused  output  active-high
> >         line   2:      unnamed       unused  output  active-high
> >         line   3:      unnamed       unused  output  active-high
> >         line   4:      unnamed       unused  output  active-high
> >         line   5:      unnamed       unused  output  active-high
> >         line   6:      unnamed       unused  output  active-high
> >         line   7:      unnamed       unused  output  active-high
> > root at wolfpass:/tmp# ./gpioinfo /dev/gpiochip10
> > gpiochip10 - 232 lines:
> >         line   0:      unnamed       unused   input  active-high
> >         line   1:      unnamed       unused   input  active-high
> >         line   2:      unnamed       unused   input  active-high
> >         line   3:      unnamed       unused   input  active-high
> >         line   4:      unnamed       unused   input  active-high
> >         line   5:      unnamed       unused   input  active-high
> >         line   6:      unnamed       unused   input  active-high
> >         line   7:      unnamed       unused   input  active-high
> >         line   8:      unnamed       unused   input  active-high
> >         line   9:      unnamed       unused   input  active-high
> >         line  10:      unnamed       unused   input  active-high
> >         line  11:      unnamed       unused   input  active-high
> >         line  12:      unnamed       unused   input  active-high
> >         line  13:      unnamed       unused   input  active-high
> >         line  14:      unnamed       unused   input  active-high
> >         line  15:      unnamed       unused   input  active-high
> >         line  16:      unnamed       unused   input  active-high
> > root at wolfpass:/tmp# ./gpioget /dev/gpiochip10 219
> > ./gpioget: error reading GPIO values: Device or resource busy
> >

This all works fine for me. Busy is because the GPIO has been exported through some other means, for example the sysfs interface:

root at witherspoon:/tmp# ls /sys/class/gpio
export       gpio305      gpio347      gpio417      gpiochip238  gpiochip280
gpio281      gpio306      gpio353      gpiochip222  gpiochip254  unexport
root at witherspoon:/tmp# gpioget /dev/gpiochip0 $((305 - 280))
gpioget: error reading GPIO values: Device or resource busy

Hope that helps.

Andrew


More information about the openbmc mailing list