On Thu, Feb 23, 2017 at 11:54:15AM +0800, Chen-Yu Tsai wrote: > On Thu, Feb 23, 2017 at 7:18 AM, Maxime Ripard > <maxime.rip...@free-electrons.com> wrote: > > On Wed, Feb 22, 2017 at 09:47:27PM +0100, Philipp Tomsich wrote: > >> This change adds a full device-model pinctrl driver for sunxi (tested with > >> sun50iw1p1) based on the support available in Linux. > >> > >> Details are: > >> * implements a driver for pinctrl devices and assigns sun50i-a64-pinctrl > >> and sun50i-a64-r-pinctrl to it > >> * dynamically creates the driver_data for a sunxi_gpio (see sunxi_gpio.c) > >> driver and binds it to the same device-tree node > >> * lifts and reuses the pinctrl-sunxi.h and pinctrl-sun50i-a64.c files from > >> Linux (thanks to Maxime and Andre) and adds a pinctrl-sun50i-a64-r.c (to > >> be picked up for inclusion into Linux again) > >> > >> Signed-off-by: Philipp Tomsich <philipp.toms...@theobroma-systems.com> > >> --- > >> arch/arm/include/asm/arch-sunxi/gpio-internal.h | 19 + > >> .../pinctrl/allwinner,pinctrl.txt | 65 +++ > >> drivers/gpio/sunxi_gpio.c | 15 +- > >> drivers/pinctrl/Kconfig | 10 + > >> drivers/pinctrl/Makefile | 2 + > >> drivers/pinctrl/sunxi/Makefile | 10 + > >> drivers/pinctrl/sunxi/pinctrl-sun50i-a64-r.c | 92 ++++ > >> drivers/pinctrl/sunxi/pinctrl-sun50i-a64.c | 577 > >> +++++++++++++++++++++ > >> drivers/pinctrl/sunxi/pinctrl-sunxi.c | 317 +++++++++++ > >> drivers/pinctrl/sunxi/pinctrl-sunxi.h | 311 +++++++++++ > >> 10 files changed, 1411 insertions(+), 7 deletions(-) > >> create mode 100644 arch/arm/include/asm/arch-sunxi/gpio-internal.h > >> create mode 100644 doc/device-tree-bindings/pinctrl/allwinner,pinctrl.txt > >> create mode 100644 drivers/pinctrl/sunxi/Makefile > >> create mode 100644 drivers/pinctrl/sunxi/pinctrl-sun50i-a64-r.c > >> create mode 100644 drivers/pinctrl/sunxi/pinctrl-sun50i-a64.c > >> create mode 100644 drivers/pinctrl/sunxi/pinctrl-sunxi.c > >> create mode 100644 drivers/pinctrl/sunxi/pinctrl-sunxi.h > >> > >> diff --git a/arch/arm/include/asm/arch-sunxi/gpio-internal.h > >> b/arch/arm/include/asm/arch-sunxi/gpio-internal.h > >> new file mode 100644 > >> index 0000000..4dcdd34 > >> --- /dev/null > >> +++ b/arch/arm/include/asm/arch-sunxi/gpio-internal.h > >> @@ -0,0 +1,19 @@ > >> +/* > >> + * (C) Copyright 2017 Theobroma Systems Design und Consulting GmbH > >> + * > >> + * SPDX-License-Identifier: GPL-2.0+ > >> + */ > >> + > >> + > >> +#ifndef _SUNXI_GPIO_INTERNAL_H > >> +#define _SUNXI_GPIO_INTERNAL_H > >> + > >> +/* This data structure is shared between the sunxi_gpio driver and > >> + * the sunxi_pinctrl driver. > >> + */ > >> +struct sunxi_gpio_soc_data { > >> + int start; > >> + int no_banks; > >> +}; > >> + > >> +#endif > >> diff --git a/doc/device-tree-bindings/pinctrl/allwinner,pinctrl.txt > >> b/doc/device-tree-bindings/pinctrl/allwinner,pinctrl.txt > >> new file mode 100644 > >> index 0000000..946831f > >> --- /dev/null > >> +++ b/doc/device-tree-bindings/pinctrl/allwinner,pinctrl.txt > >> @@ -0,0 +1,65 @@ > >> +* Allwinner Pinmux Controller > >> + > >> +Allwinner integrates multiple banks (of 32 pins each) of pin-muxing, > >> +GPIO functionality and (optional) external interrupt functionality > >> +into a single controller. > >> + > >> +For each configurable pad (certain driver-cells, such as the IO from > >> +integrated USB PHYs or DRAM, have a fixed function and can not be > >> +configured), the muxing options (input, output or one of the several > >> +functions) can be selected. > >> + > >> +Properties for the pinctrl node: > >> + - compatible: should be "allwinner,sun50i-pinctrl" > > > > There's a typo here, the compatible is sun50i-a64-pinctrl > > > >> + - reg: address and length of the register set for the device. > >> + - interrupts: interrupt for the device > >> + - clocks: A phandle to the reference clock for this device > > > > (and ideally, this would take three clocks: the bus gate + the two > > oscillators). > > > >> + > >> +Properties for the pinconfig sub-nodes: > >> + - allwinner,pins: a list of pins (e.g. "PH2", "PH3") to configure > >> + - allwinner,function: the name of pinmux function (e.g. "mmc2") > > > > allwinner,pins and allwinner,function are also deprecated in favour of > > pins and function. > > > >> + - drive-strength: a drive-stength setting of 10, 20, 30 or 40 mA > >> + - bias-pull-up > >> + - bias-pull-down > >> + - bias-disable (default) > > > > The default is not bias-disable, but to keep the current configuration > > Shouldn't we just copy the binding docs from the Linux kernel? > Afterall they are supposed to be the same.
Yep, that would probably be the easiest. Maxime -- Maxime Ripard, Free Electrons Embedded Linux and Kernel engineering http://free-electrons.com
signature.asc
Description: PGP signature
_______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot