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