Module Name: src Committed By: marty Date: Thu Dec 24 01:10:51 UTC 2015
Modified Files: src/sys/arch/arm/samsung: exynos_gpio.c exynos_pinctrl.c exynos_var.h files.exynos Log Message: XU4 GPIO Review Changes Implement suggestions from Jared. To generate a diff of this commit: cvs rdiff -u -r1.17 -r1.18 src/sys/arch/arm/samsung/exynos_gpio.c \ src/sys/arch/arm/samsung/files.exynos cvs rdiff -u -r1.5 -r1.6 src/sys/arch/arm/samsung/exynos_pinctrl.c cvs rdiff -u -r1.21 -r1.22 src/sys/arch/arm/samsung/exynos_var.h Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/sys/arch/arm/samsung/exynos_gpio.c diff -u src/sys/arch/arm/samsung/exynos_gpio.c:1.17 src/sys/arch/arm/samsung/exynos_gpio.c:1.18 --- src/sys/arch/arm/samsung/exynos_gpio.c:1.17 Tue Dec 22 22:19:07 2015 +++ src/sys/arch/arm/samsung/exynos_gpio.c Thu Dec 24 01:10:51 2015 @@ -1,4 +1,4 @@ -/* $NetBSD: exynos_gpio.c,v 1.17 2015/12/22 22:19:07 jmcneill Exp $ */ +/* $NetBSD: exynos_gpio.c,v 1.18 2015/12/24 01:10:51 marty Exp $ */ /*- * Copyright (c) 2014 The NetBSD Foundation, Inc. @@ -34,7 +34,7 @@ #include "gpio.h" #include <sys/cdefs.h> -__KERNEL_RCSID(1, "$NetBSD: exynos_gpio.c,v 1.17 2015/12/22 22:19:07 jmcneill Exp $"); +__KERNEL_RCSID(1, "$NetBSD: exynos_gpio.c,v 1.18 2015/12/24 01:10:51 marty Exp $"); #include <sys/param.h> #include <sys/bus.h> @@ -281,7 +281,8 @@ exynos_gpio_pin_ctl(void *cookie, int pi } void -exynos_gpio_bank_config(struct exynos_pinctrl_softc * parent, int node) +exynos_gpio_bank_config(struct exynos_pinctrl_softc * parent, + const struct fdt_attach_args *faa, int node) { struct exynos_gpio_bank *bank = kmem_zalloc(sizeof(*bank), KM_SLEEP); struct exynos_gpio_softc *sc = kmem_zalloc(sizeof(*sc), KM_SLEEP); @@ -320,32 +321,35 @@ exynos_gpio_bank_config(struct exynos_pi bank->bank_cfg.drv = GPIO_READ(bank, EXYNOS_GPIO_DRV); bank->bank_cfg.conpwd = GPIO_READ(bank, EXYNOS_GPIO_CONPWD); bank->bank_cfg.pudpwd = GPIO_READ(bank, EXYNOS_GPIO_PUDPWD); + + fdtbus_register_gpio_controller(bank->bank_dev, faa->faa_phandle, + &exynos_gpio_funcs); } /* - * pinmame = gpLD-N + * pinmame = gpLD[-N] * L = 'a' - 'z' -+ - * D = '0' - '8' -+ ===== bank name - * N = '0' - '8' ===== pin number + * D = '0' - '9' -+ ===== bank name + * N = '0' - '7' ===== pin number */ static struct exynos_gpio_bank * exynos_gpio_pin_lookup(const char *pinname, int *ppin) { char bankname[5]; - int pin; + int pin = 0; int n; struct exynos_gpio_bank *bank; memset(bankname, 0, sizeof(bankname)); - bankname[0] = pinname[0]; /* 'g' */ - bankname[1] = pinname[1]; /* 'p' */ - bankname[2] = pinname[2]; /* L */ - bankname[3] = pinname[3]; /* D */ - bankname[4] = 0; - if (ppin) + for (n = 0; n < 4; n++) + bankname[n] = pinname[n]; + bankname[n] = 0; + if (ppin && pinname[4] == '-') { pin = pinname[5] - '0'; /* skip the '-' */ - + if (pin < 0 || pin > 8) + return NULL; + } for (n = 0; n < __arraycount(exynos5_banks); n++) { bank = &exynos_gpio_banks[n]; if (strcmp(bank->bank_name, bankname) == 0) { Index: src/sys/arch/arm/samsung/files.exynos diff -u src/sys/arch/arm/samsung/files.exynos:1.17 src/sys/arch/arm/samsung/files.exynos:1.18 --- src/sys/arch/arm/samsung/files.exynos:1.17 Mon Dec 21 04:58:50 2015 +++ src/sys/arch/arm/samsung/files.exynos Thu Dec 24 01:10:51 2015 @@ -1,4 +1,4 @@ -# $NetBSD: files.exynos,v 1.17 2015/12/21 04:58:50 marty Exp $ +# $NetBSD: files.exynos,v 1.18 2015/12/24 01:10:51 marty Exp $ # # Configuration info for Samsung Exynos SoC ARM Peripherals # @@ -87,11 +87,6 @@ attach exyopctl at fdt with exynos_pinc file arch/arm/samsung/exynos_pinctrl.c exynos_pinctrl needs-flag file arch/arm/samsung/exynos_gpio.c exynos_pinctrl needs-flag -# GPIO -#device exyogpio : gpiobus -#attach exyogpio at fdt with exynos_gpio -#file arch/arm/samsung/exynos_gpio.c exynos_gpio needs-flag - # USB2 Host Controller (EHCI/OHCI) device exyousb { } : fdtbus attach exyousb at fdt with exyo_usb @@ -99,7 +94,7 @@ attach ohci at exyousb with ohci_exyousb attach ehci at exyousb with ehci_exyousb file arch/arm/samsung/exynos_usb.c exyo_usb -# I2C support, bitbanging trough GPIO +# I2C support, bitbanging through GPIO device exyoi2c: i2cbus, i2c_bitbang attach exyoi2c at fdt with exynos_i2c file arch/arm/samsung/exynos_i2c.c exynos_i2c needs-flag Index: src/sys/arch/arm/samsung/exynos_pinctrl.c diff -u src/sys/arch/arm/samsung/exynos_pinctrl.c:1.5 src/sys/arch/arm/samsung/exynos_pinctrl.c:1.6 --- src/sys/arch/arm/samsung/exynos_pinctrl.c:1.5 Tue Dec 22 22:34:42 2015 +++ src/sys/arch/arm/samsung/exynos_pinctrl.c Thu Dec 24 01:10:51 2015 @@ -1,4 +1,4 @@ -/* $NetBSD: exynos_pinctrl.c,v 1.5 2015/12/22 22:34:42 jmcneill Exp $ */ +/* $NetBSD: exynos_pinctrl.c,v 1.6 2015/12/24 01:10:51 marty Exp $ */ /*- * Copyright (c) 2015 The NetBSD Foundation, Inc. @@ -34,7 +34,7 @@ #include "gpio.h" #include <sys/cdefs.h> -__KERNEL_RCSID(1, "$NetBSD: exynos_pinctrl.c,v 1.5 2015/12/22 22:34:42 jmcneill Exp $"); +__KERNEL_RCSID(1, "$NetBSD: exynos_pinctrl.c,v 1.6 2015/12/24 01:10:51 marty Exp $"); #include <sys/param.h> #include <sys/bus.h> @@ -98,12 +98,9 @@ exynos_pinctrl_attach(device_t parent, d child = OF_peer(child)) { if (of_getprop_bool(child, "gpio-controller") == false) continue; - exynos_gpio_bank_config(sc,child); + exynos_gpio_bank_config(sc, faa, child); } - fdtbus_register_gpio_controller(self, faa->faa_phandle, - &exynos_gpio_funcs); - aprint_naive("\n"); aprint_normal("\n"); Index: src/sys/arch/arm/samsung/exynos_var.h diff -u src/sys/arch/arm/samsung/exynos_var.h:1.21 src/sys/arch/arm/samsung/exynos_var.h:1.22 --- src/sys/arch/arm/samsung/exynos_var.h:1.21 Sat Dec 19 21:42:31 2015 +++ src/sys/arch/arm/samsung/exynos_var.h Thu Dec 24 01:10:51 2015 @@ -1,4 +1,4 @@ -/* $NetBSD: exynos_var.h,v 1.21 2015/12/19 21:42:31 marty Exp $ */ +/* $NetBSD: exynos_var.h,v 1.22 2015/12/24 01:10:51 marty Exp $ */ /*- * Copyright (c) 2013, 2014 The NetBSD Foundation, Inc. @@ -125,8 +125,11 @@ extern bus_space_handle_t exynos_sysreg_ extern void exynos_bootstrap(vaddr_t, vaddr_t); extern void exynos_dma_bootstrap(psize_t memsize); + struct exynos_pinctrl_softc; -extern void exynos_gpio_bank_config(struct exynos_pinctrl_softc *, int); +struct fdt_attach_args; +extern void exynos_gpio_bank_config(struct exynos_pinctrl_softc *, + const struct fdt_attach_args *, int); extern void exynos_wdt_reset(void); extern void exynos_init_clkout_for_usb(void); // board specific