From mboxrd@z Thu Jan 1 00:00:00 1970 From: Bin Meng Date: Wed, 18 Sep 2019 15:53:00 +0800 Subject: [U-Boot] [U-BOOT PATCH v1 0/2] add gpio support for HiFive Unleashed A00 board. In-Reply-To: <1568130236-13744-1-git-send-email-sagar.kadam@sifive.com> References: <1568130236-13744-1-git-send-email-sagar.kadam@sifive.com> Message-ID: List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de Hi Sagar, On Tue, Sep 10, 2019 at 11:44 PM Sagar Shrikant Kadam wrote: > > U-Boot currently is missing GPIO support for FU540-C000 SoC which is > mounted on HiFive Unleashed A00 board. This patch is intended to add DM > based GPIO controller driver in order to access GPIO pins within the SoC > using GPIO command in U-Boot. More details on the GPIO controller within > the SoC can be found at[1] > > The driver is based above master branch of u-boot-riscv.git and provides a > method to configure Input/Output mode of the GPIO pin along with an option > to set or clear state of the GPIO pin. The patch is available in > dev/sagark/gpio_v3 branch here[2]. > > GPIO device node added to the mainline bound device tree for HiFive > Unleashed is available in dev/sagark/mlv5.3-rc5 branch of repo here[3]. > > This implementation is ported from linux driver submitted for review > at [4]. > > More details of GPIO pin routing on J1 header is available in schematic > document[5] > > [1] https://static.dev.sifive.com/FU540-C000-v1.0.pdf > [2] https://github.com/sagsifive/u-boot > [3] https://github.com/sagsifive/riscv-linux-hifive/ > [4] https://lkml.org/lkml/2018/10/9/1103 > [5] https://static.dev.sifive.com/dev-kits/hifive-unleashed/hifive-unleashed-a00-schematics.pdf > > Driver Testing: > #Set GPIO1 high. > =>gpio set 1 > Can be confirmed by probing pin No #24 on J1 Header or memory dump of > gpio register space viz: #md 0x10060000 > > #Set GPIO1 low > =>gpio clear 0 > > #Toggle GPIO1 > =>gpio toggle 1 #Toggle value of GPIO1 > =>gpio toggle 1 #Toggle value of GPIO1 > > #Configure pin as input > =>gpio input 3 #Configure gpio line 3 as input. > > #Error check > =>gpio set 16 #Not a valid GPIO number for FU540-C000 > GPIO: '16' not found > Command 'gpio' failed: Error -22 > I tested this: => gpio status -a Bank gpio at 10060000: gpio at 100600000: unknown gpio at 100600001: unknown gpio at 100600002: unknown gpio at 100600003: unknown gpio at 100600004: unknown gpio at 100600005: unknown gpio at 100600006: unknown gpio at 100600007: unknown gpio at 100600008: unknown gpio at 100600009: unknown gpio at 1006000010: unknown gpio at 1006000011: unknown gpio at 1006000012: unknown gpio at 1006000013: unknown gpio at 1006000014: unknown gpio at 1006000015: unknown The status is "unknown" for all gpio pins, which is wrong. It should be either input or output. Also the gpio pin name is weird. I think we should use "0, 1, 2 ..." Regards, Bin Regards, Bin