SH pinctrl DT support
Subsystems (7)
v5 cover SH pinctrl DT support
Hello,
Here's the fifth version of the SuperH and SH Mobile pin controllers (PFC) DT support patch set.
The patches are based on tags/renesas-next-20130611v2 from Simon's tree
(git://git.kernel.org/pub/scm/linux/kernel/git/horms/renesas.git) and the R-Car GPIO DT bindings proposal ("[RFC/PATCH v2 0/2] R-Car GPIO DT bindings"). The result is available in my tree at
git://linuxtv.org/pinchartl/fbdev.git pinmux/3.10/dt
The series starts with a proposal for generic pinconf DT bindings, already posted as "[RFC] pinctrl: generic: Add DT bindings". The rest is pretty self-explanatory. DT bindings are added in patch 03/22, and the following patches gradually move SoC code and board code over to the device tree for the armadilla800eva-reference, kzm9g-reference and marzen-reference boards. The code has been tested on the three boards, but armadillo800eva has received less testing as it can't be booted all the way to userspace with network support due to missing DT bindings.
Comments will be very appreciated on the DT bindings (01/22 and 03/22). Points I'm a bit unsure about include:
- Should the driver support pin configuration subnodes as currently implemented, or should the subnodes be promoted to regular pin configuration nodes, with clients referencing multiple nodes ?
- Should the driver allow mixing function and configuration properties in a pin configuration node as currently implemented, or should it restrict the pin configuration nodes to either a function or one (or more) configuration(s) ?
I'd like to get this series in v3.11. Linus, do you think that would be possible ? If the generic pinconf DT bindings can't make it in time I can respin the patches with pinconf support removed, and add it back along with the generic pinconf DT bindings for v3.12.
Changes since v4:
- Added generic pinconf bindings
- Use symbolic names for GPIO flags
Changes since v3:
- Fixed the GPIO flags description in the DT bindings documentation
- Mention the gpio-rcar driver in the DT bindings documentation for platforms that use it
- Removed unneeded #ifdef CONFIG_OF...#endif
- Removed unused support for platform data
- Simplified error path in sh_pfc_dt_node_to_map()
- Added gpio-ranges for r8a7778, r8a7779 and r8a7790
Changes since v2:
- Added pin configuration properties
- Rewrote all arch changes
Changes since v1:
- Fixed gpio cell number 2 documentation
- Added missing gpio-controller and #gpio-cells properties to r8a7740 DT
- Split kzm9g DT patch into SoC and board patches
- Dropped pinctrl mappings move to DT
Laurent Pinchart (22):
pinctrl: generic: Add DT bindings
sh-pfc: Remove support for platform data
sh-pfc: Add DT support
ARM: shmobile: r8a73a4: Add pin control device to device tree
ARM: shmobile: r8a7740: Add pin control device to device tree
ARM: shmobile: r8a7778: Add pin control device to device tree
ARM: shmobile: r8a7778: Add GPIO controller devices to device tree
ARM: shmobile: r8a7779: Add pin control device to device tree
ARM: shmobile: r8a7779: Add GPIO controller devices to device tree
ARM: shmobile: r8a7790: Add pin control device to device tree
ARM: shmobile: r8a7790: Add GPIO controller devices to device tree
ARM: shmobile: sh7372: Add pin control device to device tree
ARM: shmobile: sh73a0: Add pin control device to device tree
ARM: shmobile: armadillo-reference: Move pinctrl mappings to device
tree
ARM: shmobile: armadillo-reference: Add st1232 pin mappings
ARM: shmobile: armadillo-reference: Move st1232 reset GPIO to DT
ARM: shmobile: armadillo-reference: Add LED1-LED4 to the device tree
ARM: shmobile: kzm9g-reference: Move pinctrl mappings to device tree
ARM: shmobile: kzm9g-reference: Move SDHI regulators to DT
ARM: shmobile: kzm9g-reference: Add LED1-LED4 to the device tree
ARM: shmobile: marzen-reference: Move pinctrl mappings to device tree
ARM: shmobile: marzen-reference: Add LED2-LED4 to the device tree
.../bindings/pinctrl/pinctrl-bindings.txt | 29 +++ .../bindings/pinctrl/renesas,pfc-pinctrl.txt | 156 ++++++++++++++++ arch/arm/boot/dts/r8a73a4.dtsi | 7 + .../boot/dts/r8a7740-armadillo800eva-reference.dts | 34 ++++ arch/arm/boot/dts/r8a7740.dtsi | 8 + arch/arm/boot/dts/r8a7778.dtsi | 56 ++++++ arch/arm/boot/dts/r8a7779-marzen-reference.dts | 49 +++++ arch/arm/boot/dts/r8a7779.dtsi | 76 ++++++++ arch/arm/boot/dts/r8a7790.dtsi | 66 +++++++ arch/arm/boot/dts/sh7372.dtsi | 8 + arch/arm/boot/dts/sh73a0-kzm9g-reference.dts | 90 +++++++++- arch/arm/boot/dts/sh73a0.dtsi | 8 + .../board-armadillo800eva-reference.c | 18 +- arch/arm/mach-shmobile/board-kzm9g-reference.c | 47 ----- arch/arm/mach-shmobile/board-marzen-reference.c | 28 --- drivers/pinctrl/pinconf-generic.c | 94 ++++++++++ drivers/pinctrl/pinconf.h | 17 ++ drivers/pinctrl/sh-pfc/core.c | 65 ++++++- drivers/pinctrl/sh-pfc/pinctrl.c | 199 +++++++++++++++++++++ 19 files changed, 959 insertions(+), 96 deletions(-) create mode 100644 Documentation/devicetree/bindings/pinctrl/renesas,pfc-pinctrl.txt
Signature · 3 lines
Regards, Laurent Pinchart
PATCH v5 1/22 pinctrl: generic: Add DT bindings
Document DT properties for the generic pinctrl parameters and add a parser function.
--- .../bindings/pinctrl/pinctrl-bindings.txt | 29 +++++++ drivers/pinctrl/pinconf-generic.c | 94 ++++++++++++++++++++++ drivers/pinctrl/pinconf.h | 17 ++++ 3 files changed, 140 insertions(+)
Documentation/devicetree/bindings/pinctrl/pinctrl-bindings.txt +29 -0
@@ -126,3 +126,32 @@ device; they may be grandchildren, for example. Whether this is legal, and whether there is any interaction between the child and intermediate parent nodes, is again defined entirely by the binding for the individual pin controller device. + +== Generic pinconf parameters == + +Pin configuration parameters are expressed by DT properties in the pin +controller device state nodes and child nodes. For devices that use the generic +pinconf parameters the following properties are defined. + +- tristate: A boolean, put the pin into high impedance state when set. + +- pull-up: An integer representing the pull-up strength. 0 disables the pull-up, + non-zero values enable it. + +- pull-down: An integer representing the pull-down strength. 0 disables the + pull-down, non-zero values enables it. + +- schmitt: An integer, enable or disable Schmitt trigger mode for the pins. + Valid values are + 0: Schmitt trigger disabled (no hysteresis) + 1: Schmitt trigger enabled + +- slew-rate: An integer controlling the pin slew rate. Values are device- + dependent. + +- drive-strength: An integer representing the drive strength of pins in mA. + Valid values are device-dependent. + +The pinctrl device DT bindings documentation must list the properties that +apply to the device, and define the valid range for all device-dependent +values.
drivers/pinctrl/pinconf-generic.c +94 -0
103 lines not on this page · raw message
drivers/pinctrl/pinconf.h +17 -0
@@ -90,6 +90,23 @@ static inline void pinconf_init_device_debugfs(struct dentry *devroot,* pin config. */ +#if defined(CONFIG_GENERIC_PINCONF ) + +int pinconf_generic_parse_params (struct device *dev,struct device_node *np, +unsigned long **cfgs); + +#else + +static inline int pinconf_generic_parse_params (struct device *dev, +struct device_node *np, +unsigned long **cfgs) +{ + *cfgs =NULL ; +return 0 ; +} + +#endif +#if defined(CONFIG_GENERIC_PINCONF ) && defined(CONFIG_DEBUG_FS ) void pinconf_generic_dump_pin(struct pinctrl_dev *pctldev,
Signature · 1 line
1.8.1.5
PATCH v5 1/22 pinctrl: generic: Add DT bindings
Quoted 4 lines · Laurent Pinchart
Document DT properties for the generic pinctrl parameters and add a parser function.
Signed-off-by Laurent Pinchart <[email protected]>
It appears we have a race here, as something like three people, or four, happened to do generic pinconf bindings at the same time.
Yesterday I applied Heiko St?bners patch
"pinctrl: add function to parse generic pinconfig properties from a dt node" doing basically the same thing. With subtle differences...
but it already supports schmittrigging and some more.
It appears to be close to your idea though!
Would it be possible for you to look at what I have on my "devel" branch now (same as submitted for -next), rebase on that and patch any problems?
drivers/pinctrl/pinconf-generic.c void pinconf_generic_dump_config(struct pinctrl_dev *pctldev, · line 210
Quoted 7 lines
drivers/pinctrl/pinconf-generic.c +7
-0+if (param->flag) { + ret =of_property_read_bool (np, param->property) + ?0 : -EINVAL ; + val =1 ; + }else { + ret =of_property_read_u32 (np, param->property, &val); + }
This construct is done differently in Heiko's code, please review it so we know we have a nice, efficient parser.
Yours,
Linus Walleij
PATCH v5 1/22 pinctrl: generic: Add DT bindings
Hi Linus,
Quoted 15 lines · On Wednesday 12 June 2013 11:24:38 Linus Walleij wrote:
Quoted 5 lines · Laurent Pinchart
Document DT properties for the generic pinctrl parameters and add a parser function.
Signed-off-by: Laurent Pinchart
<[email protected]>It appears we have a race here, as something like three people, or four, happened to do generic pinconf bindings at the same time.
Yesterday I applied Heiko St?bners patch
"pinctrl: add function to parse generic pinconfig properties from a dt node" doing basically the same thing. With subtle differences...
but it already supports schmittrigging and some more.
Quoted 4 lines
It appears to be close to your idea though!
Would it be possible for you to look at what I have on my "devel" branch now (same as submitted for -next), rebase on that and patch any problems?
OK, I will do so. In the meantime I'll resubmit this patch series without the pinconf DT bindings for inclusion in v3.11, and will then post follow-up patches to add pinconf DT support, for v3.11 or v3.12 depending on the timing.
Quoted 10 lines
Quoted 7 lines
drivers/pinctrl/pinconf-generic.c +6
-0+if (param->flag) { + ret =of_property_read_bool (np, param->property) + ?0 : -EINVAL ; + val =1 ; + }else { + ret = of_property_read_u32(np, param->property,&val); + }
This construct is done differently in Heiko's code, please review it so we know we have a nice, efficient parser.
Signature · 3 lines
Regards, Laurent Pinchart
PATCH v5 2/22 sh-pfc: Remove support for platform data
In reply to Laurent PinchartPlatform data isn't used, support can thus be removed.
--- drivers/pinctrl/sh-pfc/core.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-)
drivers/pinctrl/sh-pfc/core.c +1 -2
@@ -354,8 +354,7 @@ static int sh_pfc_probe(struct platform_device *pdev)struct sh_pfc *pfc;int ret; - info = pdev->id_entry->driver_data - ? (void *)pdev->id_entry->driver_data : pdev->dev.platform_data; + info = (void *)pdev->id_entry->driver_data;if (info ==NULL )return -ENODEV ;
Signature · 1 line
1.8.1.5
PATCH v5 3/22 sh-pfc: Add DT support
In reply to Laurent PinchartSupport device instantiation through the device tree. The compatible property is used to select the SoC pinmux information.
Set the gpio_chip device field to the PFC device to enable automatic GPIO OF support.
--- .../bindings/pinctrl/renesas,pfc-pinctrl.txt | 156 ++++++++++++++++ drivers/pinctrl/sh-pfc/core.c | 64 ++++++- drivers/pinctrl/sh-pfc/pinctrl.c | 199 +++++++++++++++++++++ 3 files changed, 418 insertions(+), 1 deletion(-) create mode 100644 Documentation/devicetree/bindings/pinctrl/renesas,pfc-pinctrl.txt
Documentation/devicetree/bindings/pinctrl/renesas,pfc-pinctrl.txt new file +156 -0
@@ -0,0 +1,156 @@ +* Renesas Pin Function Controller (GPIO and Pin Mux/Config) + +The Pin Function Controller (PFC) is a Pin Mux/Config controller. On SH7372, +SH73A0, R8A73A4 and R8A7740 it also acts as a GPIO controller. + + +Pin Control +----------- + +Required Properties: + + - compatible: should be one of the following. + - "renesas,pfc-r8a73a4": for R8A73A4 (R-Mobile APE6) compatible pin-controller. + - "renesas,pfc-r8a7740": for R8A7740 (R-Mobile A1) compatible pin-controller. + - "renesas,pfc-r8a7778": for R8A7778 (R-Mobile M1) compatible pin-controller. + - "renesas,pfc-r8a7779": for R8A7779 (R-Car H1) compatible pin-controller. + - "renesas,pfc-r8a7790": for R8A7790 (R-Car H2) compatible pin-controller. + - "renesas,pfc-sh7372": for SH7372 (SH-Mobile AP4) compatible pin-controller. + - "renesas,pfc-sh73a0": for SH73A0 (SH-Mobile AG5) compatible pin-controller. + + - reg: Base address and length of each memory resource used by the pin + controller hardware module. + +Optional properties: + + - #gpio-range-cells: Mandatory when the PFC doesn't handle GPIO, forbidden + otherwise. Should be 3. + +The PFC node also acts as a container for pin configuration nodes. Please refer +to pinctrl-bindings.txt in this directory for the definition of the term "pin +configuration node" and for the common pinctrl bindings used by client devices. + +Each pin configuration node represents a desired configuration for a pin, a +pin group, or a list of pins or pin groups. The configuration can include the +function to select on those pin(s) and pin configuration parameters (such as +pull-up and pull-down). + +Pin configuration nodes contain pin configuration properties, either directly +or grouped in child subnodes. Both pin muxing and configuration parameters can +be grouped in that way and referenced as a single pin configuration node by +client devices. + +A configuration node or subnode must reference at least one pin (through the +pins or pin groups properties) and contain at least a function or one +configuration parameter. When the function is present only pin groups can be +used to reference pins. + +All pin configuration nodes and subnodes names are ignored. All of those nodes +are parsed through phandles and processed purely based on their content. + +Pin Configuration Node Properties: + +- renesas,pins : An array of strings, each string containing the name of a pin. +- renesas,groups : An array of strings, each string containing the name of a pin + group. + +- renesas,function: A string containing the name of the function to mux to the + pin group(s) specified by the renesas,groups property + + Valid values for pin, group and function names can be found in the group and + function arrays of the PFC data file corresponding to the SoC + (drivers/pinctrl/sh-pfc/pfc-*.c) + +The pin configuration parameters use the generic pinconf bindings defined in +pinctrl-bindings.txt in this directory. The supported parameters and values are: + +- pull-up: 0 disables the pull-up, 1 enables it. Other values must not be used. +- pull-down: 0 disables the pull-down, 1 enables it. Other values must not be + used. + + +GPIO +---- + +On SH7372, SH73A0, R8A73A4 and R8A7740 the PFC node is also a GPIO controller +node. + +Required Properties: + + - gpio-controller: Marks the device node as a gpio controller. + + - #gpio-cells: Should be 2. The first cell is the GPIO number and the second + cell specifies GPIO flags, as defined in <dt-bindings/gpio/gpio.h>. Only the + GPIO_ACTIVE_HIGH and GPIO_ACTIVE_LOW flags are supported. + +The syntax of the gpio specifier used by client nodes should be the following +with values derived from the SoC user manual. + + <[phandle of the gpio controller node] + [pin number within the gpio controller] + [flags]> + +On other mach-shmobile platforms GPIO is handled by the gpio-rcar driver. +Please refer to Documentation/devicetree/bindings/gpio/renesas,gpio-rcar.txt +for documentation of the GPIO device tree bindings on those platforms. + + +Examples +-------- + +Example 1: SH73A0 (SH-Mobile AG5) pin controller node + + pfc: pfc at e6050000 { + compatible = "renesas,pfc-sh73a0"; + reg = <0xe6050000 0x8000>, + <0xe605801c 0x1c>; + gpio-controller; + #gpio-cells = <2>; + }; + +Example 2: A GPIO LED node that references a GPIO + + #include <dt-bindings/gpio/gpio.h> + + leds { + compatible = "gpio-leds"; + led1 { + gpios = <&pfc 20 GPIO_ACTIVE_LOW>; + }; + }; + +Example 3: KZM-A9-GT (SH-Mobile AG5) default pin state hog and pin control maps + for the MMCIF and SCIFA4 devices + + &pfc { + pinctrl-0 = <&scifa4_pins>; + pinctrl-names = "default"; + + mmcif_pins: mmcif { + mux { + renesas,groups = "mmc0_data8_0", "mmc0_ctrl_0"; + renesas,function = "mmc0"; + }; + cfg { + renesas,groups = "mmc0_data8_0"; + renesas,pins = "PORT279"; + pull-up = <1>; + }; + }; + + scifa4_pins: scifa4 { + renesas,groups = "scifa4_data", "scifa4_ctrl"; + renesas,function = "scifa4"; + }; + }; + +Example 4: KZM-A9-GT (SH-Mobile AG5) default pin state for the MMCIF device + + &mmcif { + pinctrl-0 = <&mmcif_pins>; + pinctrl-names = "default"; + + bus-width = <8>; + vmmc-supply = <®_1p8v>; + status = "okay"; + };
drivers/pinctrl/sh-pfc/core.c +63 -1
88 lines not on this page · raw message
drivers/pinctrl/sh-pfc/pinctrl.c +199 -0
217 lines not on this page · raw message
Signature · 1 line
1.8.1.5
PATCH v5 4/22 ARM: shmobile: r8a73a4: Add pin control device to device tree
In reply to Laurent PinchartAdd a pfc node to the r8a73a4 device tree.
--- arch/arm/boot/dts/r8a73a4.dtsi | 7 +++++++ 1 file changed, 7 insertions(+)
arch/arm/boot/dts/r8a73a4.dtsi +7 -0
@@ -85,4 +85,11 @@ interrupt-parent = <&gic>; interrupts = <0 69 4>; }; + + pfc: pfc at e6050000 { + compatible = "renesas,pfc-r8a73a4"; + reg = <0xe6050000 0x9000>; + gpio-controller; + #gpio-cells = <2>; + }; };
Signature · 1 line
1.8.1.5
PATCH v5 5/22 ARM: shmobile: r8a7740: Add pin control device to device tree
In reply to Laurent PinchartAdd a pfc node to the r8a7740 device tree and remove manual pinmux initialization from the corresponding board files.
--- arch/arm/boot/dts/r8a7740.dtsi | 8 ++++++++ arch/arm/mach-shmobile/board-armadillo800eva-reference.c | 16 ++++++++-------- 2 files changed, 16 insertions(+), 8 deletions(-)
arch/arm/boot/dts/r8a7740.dtsi +8 -0
@@ -135,4 +135,12 @@ 0 72 0x4 0 73 0x4>; }; + + pfc: pfc at e6050000 { + compatible = "renesas,pfc-r8a7740"; + reg = <0xe6050000 0x8000>, + <0xe605800c 0x20>; + gpio-controller; + #gpio-cells = <2>; + }; };
arch/arm/mach-shmobile/board-armadillo800eva-reference.c +8 -8
@@ -121,7 +121,7 @@static const struct pinctrl_map eva_pinctrl_map[] = {/* SCIFA1 */ -PIN_MAP_MUX_GROUP_DEFAULT ("sh-sci.1" ,"pfc-r8a7740" , +PIN_MAP_MUX_GROUP_DEFAULT ("sh-sci.1" ,"e6050000.pfc" ,"scifa1_data" ,"scifa1" ), };
@@ -170,22 +170,22 @@ static void __init eva_init(void)eva_clock_init ();pinctrl_register_mappings (eva_pinctrl_map,ARRAY_SIZE (eva_pinctrl_map)); -r8a7740_pinmux_init ();r8a7740_meram_workaround (); -/* -* Touchscreen -* TODO: Move reset GPIO over to .dts when we can reference it -*/ -gpio_request_one (166 ,GPIOF_OUT_INIT_HIGH ,NULL );/* TP_RST_B */ -#ifdef CONFIG_CACHE_L2X0 /* Early BRESP enable, Shared attribute override enable, 32K*8way */ l2x0_init (IOMEM (0xf0002000 ),0x40440000 ,0x82000fff );#endif r8a7740_add_standard_devices_dt (); + +/* +* Touchscreen +* TODO: Move reset GPIO over to .dts when we can reference it +*/ +gpio_request_one (166 ,GPIOF_OUT_INIT_HIGH ,NULL );/* TP_RST_B */ +r8a7740_pm_init (); }
Signature · 1 line
1.8.1.5
PATCH v5 6/22 ARM: shmobile: r8a7778: Add pin control device to device tree
In reply to Laurent PinchartAdd a pfc node to the r8a7778 device tree.
--- arch/arm/boot/dts/r8a7778.dtsi | 5 +++++ 1 file changed, 5 insertions(+)
arch/arm/boot/dts/r8a7778.dtsi +5 -0
@@ -32,4 +32,9 @@ reg = <0xfe438000 0x1000>, <0xfe430000 0x100>; }; + + pfc: pfc at fffc0000 { + compatible = "renesas,pfc-r8a7778"; + reg = <0xfffc000 0x118>; + }; };
Signature · 1 line
1.8.1.5
PATCH v5 7/22 ARM: shmobile: r8a7778: Add GPIO controller devices to device tree
In reply to Laurent PinchartAdd GPIO controller nodes to the r8a7778 core device tree.
--- arch/arm/boot/dts/r8a7778.dtsi | 51 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+)
arch/arm/boot/dts/r8a7778.dtsi +51 -0
@@ -33,8 +33,59 @@ <0xfe430000 0x100>; }; + gpio0: gpio at ffc40000 { + compatible = "renesas,gpio-r8a7778", "renesas,gpio-rcar"; + reg = <0xffc40000 0x2c>; + interrupt-parent = <&gic>; + interrupts = <0 103 0x4>; + #gpio-cells = <2>; + gpio-controller; + gpio-ranges = <&pfc 0 0 32>; + }; + + gpio1: gpio at ffc41000 { + compatible = "renesas,gpio-r8a7778", "renesas,gpio-rcar"; + reg = <0xffc41000 0x2c>; + interrupt-parent = <&gic>; + interrupts = <0 103 0x4>; + #gpio-cells = <2>; + gpio-controller; + gpio-ranges = <&pfc 0 32 32>; + }; + + gpio2: gpio at ffc42000 { + compatible = "renesas,gpio-r8a7778", "renesas,gpio-rcar"; + reg = <0xffc42000 0x2c>; + interrupt-parent = <&gic>; + interrupts = <0 103 0x4>; + #gpio-cells = <2>; + gpio-controller; + gpio-ranges = <&pfc 0 64 32>; + }; + + gpio3: gpio at ffc43000 { + compatible = "renesas,gpio-r8a7778", "renesas,gpio-rcar"; + reg = <0xffc43000 0x2c>; + interrupt-parent = <&gic>; + interrupts = <0 103 0x4>; + #gpio-cells = <2>; + gpio-controller; + gpio-ranges = <&pfc 0 96 32>; + }; + + gpio4: gpio at ffc44000 { + compatible = "renesas,gpio-r8a7778", "renesas,gpio-rcar"; + reg = <0xffc44000 0x2c>; + interrupt-parent = <&gic>; + interrupts = <0 103 0x4>; + #gpio-cells = <2>; + gpio-controller; + gpio-ranges = <&pfc 0 128 27>; + }; + pfc: pfc at fffc0000 { compatible = "renesas,pfc-r8a7778"; reg = <0xfffc000 0x118>; + #gpio-range-cells = <3>; }; };
Signature · 1 line
1.8.1.5
PATCH v5 8/22 ARM: shmobile: r8a7779: Add pin control device to device tree
In reply to Laurent PinchartAdd a pfc node to the r8a7779 device tree and remove manual pinmux initialization from the corresponding board files.
--- arch/arm/boot/dts/r8a7779.dtsi | 5 +++++ arch/arm/mach-shmobile/board-marzen-reference.c | 17 ++++++++--------- 2 files changed, 13 insertions(+), 9 deletions(-)
arch/arm/boot/dts/r8a7779.dtsi +5 -0
@@ -101,6 +101,11 @@ interrupts = <0 81 0x4>; }; + pfc: pfc at fffc0000 { + compatible = "renesas,pfc-r8a7779"; + reg = <0xfffc0000 0x23c>; + }; + thermal at ffc48000 { compatible = "renesas,rcar-thermal"; reg = <0xffc48000 0x38>;
arch/arm/mach-shmobile/board-marzen-reference.c +8 -9
@@ -28,24 +28,24 @@static const struct pinctrl_map marzen_pinctrl_map[] = {/* SCIF2 (CN18: DEBUG0) */ -PIN_MAP_MUX_GROUP_DEFAULT ("sh-sci.2" ,"pfc-r8a7779" , +PIN_MAP_MUX_GROUP_DEFAULT ("sh-sci.2" ,"fffc0000.pfc" ,"scif2_data_c" ,"scif2" ),/* SCIF4 (CN19: DEBUG1) */ -PIN_MAP_MUX_GROUP_DEFAULT ("sh-sci.4" ,"pfc-r8a7779" , +PIN_MAP_MUX_GROUP_DEFAULT ("sh-sci.4" ,"fffc0000.pfc" ,"scif4_data" ,"scif4" ),/* SDHI0 */ -PIN_MAP_MUX_GROUP_DEFAULT ("sh_mobile_sdhi.0" ,"pfc-r8a7779" , +PIN_MAP_MUX_GROUP_DEFAULT ("sh_mobile_sdhi.0" ,"fffc0000.pfc" ,"sdhi0_data4" ,"sdhi0" ), -PIN_MAP_MUX_GROUP_DEFAULT ("sh_mobile_sdhi.0" ,"pfc-r8a7779" , +PIN_MAP_MUX_GROUP_DEFAULT ("sh_mobile_sdhi.0" ,"fffc0000.pfc" ,"sdhi0_ctrl" ,"sdhi0" ), -PIN_MAP_MUX_GROUP_DEFAULT ("sh_mobile_sdhi.0" ,"pfc-r8a7779" , +PIN_MAP_MUX_GROUP_DEFAULT ("sh_mobile_sdhi.0" ,"fffc0000.pfc" ,"sdhi0_cd" ,"sdhi0" ), -PIN_MAP_MUX_GROUP_DEFAULT ("sh_mobile_sdhi.0" ,"pfc-r8a7779" , +PIN_MAP_MUX_GROUP_DEFAULT ("sh_mobile_sdhi.0" ,"fffc0000.pfc" ,"sdhi0_wp" ,"sdhi0" ),/* SMSC */ -PIN_MAP_MUX_GROUP_DEFAULT ("smsc911x" ,"pfc-r8a7779" , +PIN_MAP_MUX_GROUP_DEFAULT ("smsc911x" ,"fffc0000.pfc" ,"intc_irq1_b" ,"intc" ), -PIN_MAP_MUX_GROUP_DEFAULT ("smsc911x" ,"pfc-r8a7779" , +PIN_MAP_MUX_GROUP_DEFAULT ("smsc911x" ,"fffc0000.pfc" ,"lbsc_ex_cs0" ,"lbsc" ), };
@@ -53,7 +53,6 @@ static void __init marzen_init(void) {pinctrl_register_mappings (marzen_pinctrl_map,ARRAY_SIZE (marzen_pinctrl_map)); -r8a7779_pinmux_init ();r8a7779_add_standard_devices_dt (); }
Signature · 1 line
1.8.1.5
PATCH v5 9/22 ARM: shmobile: r8a7779: Add GPIO controller devices to device tree
In reply to Laurent PinchartAdd GPIO controller nodes to the r8a7779 core device tree.
--- arch/arm/boot/dts/r8a7779.dtsi | 71 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 71 insertions(+)
arch/arm/boot/dts/r8a7779.dtsi +71 -0
@@ -48,6 +48,76 @@ <0xf0000100 0x100>; }; + gpio0: gpio at ffc40000 { + compatible = "renesas,gpio-r8a7779", "renesas,gpio-rcar"; + reg = <0xffc40000 0x2c>; + interrupt-parent = <&gic>; + interrupts = <0 141 0x4>; + #gpio-cells = <2>; + gpio-controller; + gpio-ranges = <&pfc 0 0 32>; + }; + + gpio1: gpio at ffc41000 { + compatible = "renesas,gpio-r8a7779", "renesas,gpio-rcar"; + reg = <0xffc41000 0x2c>; + interrupt-parent = <&gic>; + interrupts = <0 142 0x4>; + #gpio-cells = <2>; + gpio-controller; + gpio-ranges = <&pfc 0 32 32>; + }; + + gpio2: gpio at ffc42000 { + compatible = "renesas,gpio-r8a7779", "renesas,gpio-rcar"; + reg = <0xffc42000 0x2c>; + interrupt-parent = <&gic>; + interrupts = <0 143 0x4>; + #gpio-cells = <2>; + gpio-controller; + gpio-ranges = <&pfc 0 64 32>; + }; + + gpio3: gpio at ffc43000 { + compatible = "renesas,gpio-r8a7779", "renesas,gpio-rcar"; + reg = <0xffc43000 0x2c>; + interrupt-parent = <&gic>; + interrupts = <0 144 0x4>; + #gpio-cells = <2>; + gpio-controller; + gpio-ranges = <&pfc 0 96 32>; + }; + + gpio4: gpio at ffc44000 { + compatible = "renesas,gpio-r8a7779", "renesas,gpio-rcar"; + reg = <0xffc44000 0x2c>; + interrupt-parent = <&gic>; + interrupts = <0 145 0x4>; + #gpio-cells = <2>; + gpio-controller; + gpio-ranges = <&pfc 0 128 32>; + }; + + gpio5: gpio at ffc45000 { + compatible = "renesas,gpio-r8a7779", "renesas,gpio-rcar"; + reg = <0xffc45000 0x2c>; + interrupt-parent = <&gic>; + interrupts = <0 146 0x4>; + #gpio-cells = <2>; + gpio-controller; + gpio-ranges = <&pfc 0 160 32>; + }; + + gpio6: gpio at ffc46000 { + compatible = "renesas,gpio-r8a7779", "renesas,gpio-rcar"; + reg = <0xffc46000 0x2c>; + interrupt-parent = <&gic>; + interrupts = <0 147 0x4>; + #gpio-cells = <2>; + gpio-controller; + gpio-ranges = <&pfc 0 192 9>; + }; + irqpin0: irqpin at fe780010 { compatible = "renesas,intc-irqpin"; #interrupt-cells = <2>;
@@ -104,6 +174,7 @@ pfc: pfc at fffc0000 { compatible = "renesas,pfc-r8a7779"; reg = <0xfffc0000 0x23c>; + #gpio-range-cells = <3>; }; thermal at ffc48000 {
Signature · 1 line
1.8.1.5
PATCH v5 10/22 ARM: shmobile: r8a7790: Add pin control device to device tree
In reply to Laurent PinchartAdd a pfc node to the r8a7790 device tree.
--- arch/arm/boot/dts/r8a7790.dtsi | 5 +++++ 1 file changed, 5 insertions(+)
arch/arm/boot/dts/r8a7790.dtsi +5 -0
@@ -54,4 +54,9 @@ interrupt-parent = <&gic>; interrupts = <0 0 4>, <0 1 4>, <0 2 4>, <0 3 4>; }; + + pfc: pfc at e6060000 { + compatible = "renesas,pfc-r8a7790"; + reg = <0 0xe6060000 0 0x250>; + }; };
Signature · 1 line
1.8.1.5
PATCH v5 11/22 ARM: shmobile: r8a7790: Add GPIO controller devices to device tree
In reply to Laurent PinchartAdd GPIO controller nodes to the r8a7790 core device tree.
--- arch/arm/boot/dts/r8a7790.dtsi | 61 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 61 insertions(+)
arch/arm/boot/dts/r8a7790.dtsi +61 -0
@@ -38,6 +38,66 @@ interrupts = <1 9 0xf04>; }; + gpio0: gpio at ffc40000 { + compatible = "renesas,gpio-r8a7790", "renesas,gpio-rcar"; + reg = <0 0xffc40000 0 0x2c>; + interrupt-parent = <&gic>; + interrupts = <0 4 0x4>; + #gpio-cells = <2>; + gpio-controller; + gpio-ranges = <&pfc 0 0 32>; + }; + + gpio1: gpio at ffc41000 { + compatible = "renesas,gpio-r8a7790", "renesas,gpio-rcar"; + reg = <0 0xffc41000 0 0x2c>; + interrupt-parent = <&gic>; + interrupts = <0 5 0x4>; + #gpio-cells = <2>; + gpio-controller; + gpio-ranges = <&pfc 0 32 32>; + }; + + gpio2: gpio at ffc42000 { + compatible = "renesas,gpio-r8a7790", "renesas,gpio-rcar"; + reg = <0 0xffc42000 0 0x2c>; + interrupt-parent = <&gic>; + interrupts = <0 6 0x4>; + #gpio-cells = <2>; + gpio-controller; + gpio-ranges = <&pfc 0 64 32>; + }; + + gpio3: gpio at ffc43000 { + compatible = "renesas,gpio-r8a7790", "renesas,gpio-rcar"; + reg = <0 0xffc43000 0 0x2c>; + interrupt-parent = <&gic>; + interrupts = <0 7 0x4>; + #gpio-cells = <2>; + gpio-controller; + gpio-ranges = <&pfc 0 96 32>; + }; + + gpio4: gpio at ffc44000 { + compatible = "renesas,gpio-r8a7790", "renesas,gpio-rcar"; + reg = <0 0xffc44000 0 0x2c>; + interrupt-parent = <&gic>; + interrupts = <0 8 0x4>; + #gpio-cells = <2>; + gpio-controller; + gpio-ranges = <&pfc 0 128 32>; + }; + + gpio5: gpio at ffc45000 { + compatible = "renesas,gpio-r8a7790", "renesas,gpio-rcar"; + reg = <0 0xffc45000 0 0x2c>; + interrupt-parent = <&gic>; + interrupts = <0 9 0x4>; + #gpio-cells = <2>; + gpio-controller; + gpio-ranges = <&pfc 0 160 32>; + }; + timer { compatible = "arm,armv7-timer"; interrupts = <1 13 0xf08>,
@@ -58,5 +118,6 @@ pfc: pfc at e6060000 { compatible = "renesas,pfc-r8a7790"; reg = <0 0xe6060000 0 0x250>; + #gpio-range-cells = <3>; }; };
Signature · 1 line
1.8.1.5
PATCH v5 12/22 ARM: shmobile: sh7372: Add pin control device to device tree
In reply to Laurent PinchartAdd a pfc node to the sh7372 device tree.
--- arch/arm/boot/dts/sh7372.dtsi | 8 ++++++++ 1 file changed, 8 insertions(+)
arch/arm/boot/dts/sh7372.dtsi +8 -0
@@ -18,4 +18,12 @@ compatible = "arm,cortex-a8"; }; }; + + pfc: pfc at e6050000 { + compatible = "renesas,pfc-sh7372"; + reg = <0xe6050000 0x8000>, + <0xe605801c 0x1c>; + gpio-controller; + #gpio-cells = <2>; + }; };
Signature · 1 line
1.8.1.5
PATCH v5 13/22 ARM: shmobile: sh73a0: Add pin control device to device tree
In reply to Laurent PinchartAdd a pfc node to the sh73a0 device tree and remove manual pinmux initialization from the corresponding board files.
--- arch/arm/boot/dts/sh73a0.dtsi | 8 ++++++++ arch/arm/mach-shmobile/board-kzm9g-reference.c | 27 +++++++++++++------------- 2 files changed, 21 insertions(+), 14 deletions(-)
arch/arm/boot/dts/sh73a0.dtsi +8 -0
@@ -222,4 +222,12 @@ cap-sd-highspeed; status = "disabled"; }; + + pfc: pfc at e6050000 { + compatible = "renesas,pfc-sh73a0"; + reg = <0xe6050000 0x8000>, + <0xe605801c 0x1c>; + gpio-controller; + #gpio-cells = <2>; + }; };
arch/arm/mach-shmobile/board-kzm9g-reference.c +13 -14
@@ -40,35 +40,35 @@ static unsigned long pin_pullup_conf[] = { };static const struct pinctrl_map kzm_pinctrl_map[] = { -PIN_MAP_MUX_GROUP_DEFAULT ("e6826000.i2c" ,"pfc-sh73a0" , +PIN_MAP_MUX_GROUP_DEFAULT ("e6826000.i2c" ,"e6050000.pfc" ,"i2c3_1" ,"i2c3" ),/* MMCIF */ -PIN_MAP_MUX_GROUP_DEFAULT ("e6bd0000.mmcif" ,"pfc-sh73a0" , +PIN_MAP_MUX_GROUP_DEFAULT ("e6bd0000.mmcif" ,"e6050000.pfc" ,"mmc0_data8_0" ,"mmc0" ), -PIN_MAP_MUX_GROUP_DEFAULT ("e6bd0000.mmcif" ,"pfc-sh73a0" , +PIN_MAP_MUX_GROUP_DEFAULT ("e6bd0000.mmcif" ,"e6050000.pfc" ,"mmc0_ctrl_0" ,"mmc0" ), -PIN_MAP_CONFIGS_PIN_DEFAULT ("e6bd0000.mmcif" ,"pfc-sh73a0" , +PIN_MAP_CONFIGS_PIN_DEFAULT ("e6bd0000.mmcif" ,"e6050000.pfc" ,"PORT279" , pin_pullup_conf), -PIN_MAP_CONFIGS_GROUP_DEFAULT ("e6bd0000.mmcif" ,"pfc-sh73a0" , +PIN_MAP_CONFIGS_GROUP_DEFAULT ("e6bd0000.mmcif" ,"e6050000.pfc" ,"mmc0_data8_0" , pin_pullup_conf),/* SCIFA4 */ -PIN_MAP_MUX_GROUP_DEFAULT ("sh-sci.4" ,"pfc-sh73a0" , +PIN_MAP_MUX_GROUP_DEFAULT ("sh-sci.4" ,"e6050000.pfc" ,"scifa4_data" ,"scifa4" ), -PIN_MAP_MUX_GROUP_DEFAULT ("sh-sci.4" ,"pfc-sh73a0" , +PIN_MAP_MUX_GROUP_DEFAULT ("sh-sci.4" ,"e6050000.pfc" ,"scifa4_ctrl" ,"scifa4" ),/* SDHI0 */ -PIN_MAP_MUX_GROUP_DEFAULT ("ee100000.sdhi" ,"pfc-sh73a0" , +PIN_MAP_MUX_GROUP_DEFAULT ("ee100000.sdhi" ,"e6050000.pfc" ,"sdhi0_data4" ,"sdhi0" ), -PIN_MAP_MUX_GROUP_DEFAULT ("ee100000.sdhi" ,"pfc-sh73a0" , +PIN_MAP_MUX_GROUP_DEFAULT ("ee100000.sdhi" ,"e6050000.pfc" ,"sdhi0_ctrl" ,"sdhi0" ), -PIN_MAP_MUX_GROUP_DEFAULT ("ee100000.sdhi" ,"pfc-sh73a0" , +PIN_MAP_MUX_GROUP_DEFAULT ("ee100000.sdhi" ,"e6050000.pfc" ,"sdhi0_cd" ,"sdhi0" ), -PIN_MAP_MUX_GROUP_DEFAULT ("ee100000.sdhi" ,"pfc-sh73a0" , +PIN_MAP_MUX_GROUP_DEFAULT ("ee100000.sdhi" ,"e6050000.pfc" ,"sdhi0_wp" ,"sdhi0" ),/* SDHI2 */ -PIN_MAP_MUX_GROUP_DEFAULT ("ee140000.sdhi" ,"pfc-sh73a0" , +PIN_MAP_MUX_GROUP_DEFAULT ("ee140000.sdhi" ,"e6050000.pfc" ,"sdhi2_data4" ,"sdhi2" ), -PIN_MAP_MUX_GROUP_DEFAULT ("ee140000.sdhi" ,"pfc-sh73a0" , +PIN_MAP_MUX_GROUP_DEFAULT ("ee140000.sdhi" ,"e6050000.pfc" ,"sdhi2_ctrl" ,"sdhi2" ), };
@@ -76,7 +76,6 @@ static void __init kzm_init(void) {sh73a0_add_standard_devices_dt ();pinctrl_register_mappings (kzm_pinctrl_map,ARRAY_SIZE (kzm_pinctrl_map)); -sh73a0_pinmux_init ();/* enable SD */ gpio_request_one (15 ,GPIOF_OUT_INIT_HIGH ,NULL );/* power */
Signature · 1 line
1.8.1.5
PATCH v5 14/22 ARM: shmobile: armadillo-reference: Move pinctrl mappings to device tree
In reply to Laurent PinchartReplace the pinctrl mappings in board code by device tree mappings. For devices that are still instantiated from board code reference the mappings as the default pin controller state to apply them at boot time.
--- arch/arm/boot/dts/r8a7740-armadillo800eva-reference.dts | 10 ++++++++++ arch/arm/mach-shmobile/board-armadillo800eva-reference.c | 9 --------- 2 files changed, 10 insertions(+), 9 deletions(-)
arch/arm/boot/dts/r8a7740-armadillo800eva-reference.dts +10 -0
@@ -43,3 +43,13 @@ interrupts = <2 0>; /* IRQ10: hwirq 2 on irqpin1 */ }; }; + +&pfc { + pinctrl-0 = <&scifa1_pins>; + pinctrl-names = "default"; + + scifa1_pins: scifa1 { + renesas,groups = "scifa1_data"; + renesas,function = "scifa1"; + }; +};
arch/arm/mach-shmobile/board-armadillo800eva-reference.c +0 -9
@@ -24,7 +24,6 @@#include <linux/kernel.h> #include <linux/gpio.h> #include <linux/io.h> -#include <linux/pinctrl/machine.h> #include <mach/common.h> #include <mach/r8a7740.h> #include <asm/mach/arch.h>
@@ -119,12 +118,6 @@* usbhsf_power_ctrl() */ -static const struct pinctrl_map eva_pinctrl_map[] = { -/* SCIFA1 */ -PIN_MAP_MUX_GROUP_DEFAULT ("sh-sci.1" ,"e6050000.pfc" , -"scifa1_data" ,"scifa1" ), -}; -static void __init eva_clock_init (void ) {struct clk *system =clk_get (NULL ,"system_clk" );
@@ -169,8 +162,6 @@ static void __init eva_init(void)r8a7740_clock_init (MD_CK0 |MD_CK2 );eva_clock_init (); -pinctrl_register_mappings (eva_pinctrl_map,ARRAY_SIZE (eva_pinctrl_map)); -r8a7740_meram_workaround ();#ifdef CONFIG_CACHE_L2X0
Signature · 1 line
1.8.1.5
PATCH v5 15/22 ARM: shmobile: armadillo-reference: Add st1232 pin mappings
In reply to Laurent PinchartAdd pin mappings for the st1232 device to the device tree and reference them as the default state for the device.
--- arch/arm/boot/dts/r8a7740-armadillo800eva-reference.dts | 7 +++++++ 1 file changed, 7 insertions(+)
arch/arm/boot/dts/r8a7740-armadillo800eva-reference.dts +7 -0
@@ -41,6 +41,8 @@ reg = <0x55>; interrupt-parent = <&irqpin1>; interrupts = <2 0>; /* IRQ10: hwirq 2 on irqpin1 */ + pinctrl-0 = <&st1232_pins>; + pinctrl-names = "default"; }; };
@@ -52,4 +54,9 @@ renesas,groups = "scifa1_data"; renesas,function = "scifa1"; }; + + st1232_pins: st1232 { + renesas,groups = "intc_irq10"; + renesas,function = "intc"; + }; };
Signature · 1 line
1.8.1.5
PATCH v5 16/22 ARM: shmobile: armadillo-reference: Move st1232 reset GPIO to DT
In reply to Laurent PinchartReference the st1232 reset GPIO from the device tree and remove it from board code.
--- arch/arm/boot/dts/r8a7740-armadillo800eva-reference.dts | 2 ++ arch/arm/mach-shmobile/board-armadillo800eva-reference.c | 7 ------- 2 files changed, 2 insertions(+), 7 deletions(-)
arch/arm/boot/dts/r8a7740-armadillo800eva-reference.dts +2 -0
@@ -10,6 +10,7 @@ /dts-v1/; /include/ "r8a7740.dtsi" +#include <dt-bindings/gpio/gpio.h> / { model = "armadillo 800 eva reference";
@@ -43,6 +44,7 @@ interrupts = <2 0>; /* IRQ10: hwirq 2 on irqpin1 */ pinctrl-0 = <&st1232_pins>; pinctrl-names = "default"; + gpios = <&pfc 166 GPIO_ACTIVE_LOW>; }; };
arch/arm/mach-shmobile/board-armadillo800eva-reference.c +0 -7
@@ -158,7 +158,6 @@ clock_error:*/ static void __init eva_init (void ) { -r8a7740_clock_init (MD_CK0 |MD_CK2 );eva_clock_init ();
@@ -171,12 +170,6 @@ static void __init eva_init(void)r8a7740_add_standard_devices_dt (); -/* -* Touchscreen -* TODO: Move reset GPIO over to .dts when we can reference it -*/ -gpio_request_one (166 ,GPIOF_OUT_INIT_HIGH ,NULL );/* TP_RST_B */ -r8a7740_pm_init (); }
Signature · 1 line
1.8.1.5
PATCH v5 17/22 ARM: shmobile: armadillo-reference: Add LED1-LED4 to the device tree
In reply to Laurent PinchartLED1 to LED4 are GPIO LEDs. Add corresponding DT nodes.
--- arch/arm/boot/dts/r8a7740-armadillo800eva-reference.dts | 15 +++++++++++++++ 1 file changed, 15 insertions(+)
arch/arm/boot/dts/r8a7740-armadillo800eva-reference.dts +15 -0
@@ -34,6 +34,21 @@ regulator-boot-on; }; + leds { + compatible = "gpio-leds"; + led1 { + gpios = <&pfc 102 GPIO_ACTIVE_HIGH>; + }; + led2 { + gpios = <&pfc 111 GPIO_ACTIVE_HIGH>; + }; + led3 { + gpios = <&pfc 110 GPIO_ACTIVE_HIGH>; + }; + led4 { + gpios = <&pfc 177 GPIO_ACTIVE_HIGH>; + }; + }; }; &i2c0 {
Signature · 1 line
1.8.1.5
PATCH v5 18/22 ARM: shmobile: kzm9g-reference: Move pinctrl mappings to device tree
In reply to Laurent PinchartReplace the pinctrl mappings in board code by device tree mappings. For devices that are still instantiated from board code reference the mappings as the default pin controller state to apply them at boot time.
--- arch/arm/boot/dts/sh73a0-kzm9g-reference.dts | 51 ++++++++++++++++++++++++++ arch/arm/mach-shmobile/board-kzm9g-reference.c | 40 -------------------- 2 files changed, 51 insertions(+), 40 deletions(-)
arch/arm/boot/dts/sh73a0-kzm9g-reference.dts +51 -0
@@ -145,19 +145,70 @@ }; }; +&i2c3 { + pinctrl-0 = <&i2c3_pins>; + pinctrl-names = "default"; +}; + &mmcif { + pinctrl-0 = <&mmcif_pins>; + pinctrl-names = "default"; + bus-width = <8>; vmmc-supply = <®_1p8v>; status = "okay"; }; +&pfc { + pinctrl-0 = <&scifa4_pins>; + pinctrl-names = "default"; + + i2c3_pins: i2c3 { + renesas,groups = "i2c3_1"; + renesas,function = "i2c3"; + }; + + mmcif_pins: mmcif { + mux { + renesas,groups = "mmc0_data8_0", "mmc0_ctrl_0"; + renesas,function = "mmc0"; + }; + cfg { + renesas,groups = "mmc0_data8_0"; + renesas,pins = "PORT279"; + pull-up = <1>; + }; + }; + + scifa4_pins: scifa4 { + renesas,groups = "scifa4_data", "scifa4_ctrl"; + renesas,function = "scifa4"; + }; + + sdhi0_pins: sdhi0 { + renesas,groups = "sdhi0_data4", "sdhi0_ctrl", "sdhi0_cd", "sdhi0_wp"; + renesas,function = "sdhi0"; + }; + + sdhi2_pins: sdhi2 { + renesas,groups = "sdhi2_data4", "sdhi2_ctrl"; + renesas,function = "sdhi2"; + }; +}; + &sdhi0 { + pinctrl-0 = <&sdhi0_pins>; + pinctrl-names = "default"; + vmmc-supply = <®_3p3v>; bus-width = <4>; status = "okay"; }; &sdhi2 { + pinctrl-0 = <&sdhi2_pins>; + pinctrl-names = "default"; + vmmc-supply = <®_3p3v>; bus-width = <4>; broken-cd;
arch/arm/mach-shmobile/board-kzm9g-reference.c +0 -40
@@ -27,55 +27,15 @@#include <linux/irqchip.h> #include <linux/input.h> #include <linux/of_platform.h> -#include <linux/pinctrl/machine.h> -#include <linux/pinctrl/pinconf-generic.h> #include <mach/sh73a0.h> #include <mach/common.h> #include <asm/hardware/cache-l2x0.h> #include <asm/mach-types.h> #include <asm/mach/arch.h> -static unsigned long pin_pullup_conf[] = { -PIN_CONF_PACKED (PIN_CONFIG_BIAS_PULL_UP ,0 ), -}; - -static const struct pinctrl_map kzm_pinctrl_map[] = { -PIN_MAP_MUX_GROUP_DEFAULT ("e6826000.i2c" ,"e6050000.pfc" , -"i2c3_1" ,"i2c3" ), -/* MMCIF */ -PIN_MAP_MUX_GROUP_DEFAULT ("e6bd0000.mmcif" ,"e6050000.pfc" , -"mmc0_data8_0" ,"mmc0" ), -PIN_MAP_MUX_GROUP_DEFAULT ("e6bd0000.mmcif" ,"e6050000.pfc" , -"mmc0_ctrl_0" ,"mmc0" ), -PIN_MAP_CONFIGS_PIN_DEFAULT ("e6bd0000.mmcif" ,"e6050000.pfc" , -"PORT279" , pin_pullup_conf), -PIN_MAP_CONFIGS_GROUP_DEFAULT ("e6bd0000.mmcif" ,"e6050000.pfc" , -"mmc0_data8_0" , pin_pullup_conf), -/* SCIFA4 */ -PIN_MAP_MUX_GROUP_DEFAULT ("sh-sci.4" ,"e6050000.pfc" , -"scifa4_data" ,"scifa4" ), -PIN_MAP_MUX_GROUP_DEFAULT ("sh-sci.4" ,"e6050000.pfc" , -"scifa4_ctrl" ,"scifa4" ), -/* SDHI0 */ -PIN_MAP_MUX_GROUP_DEFAULT ("ee100000.sdhi" ,"e6050000.pfc" , -"sdhi0_data4" ,"sdhi0" ), -PIN_MAP_MUX_GROUP_DEFAULT ("ee100000.sdhi" ,"e6050000.pfc" , -"sdhi0_ctrl" ,"sdhi0" ), -PIN_MAP_MUX_GROUP_DEFAULT ("ee100000.sdhi" ,"e6050000.pfc" , -"sdhi0_cd" ,"sdhi0" ), -PIN_MAP_MUX_GROUP_DEFAULT ("ee100000.sdhi" ,"e6050000.pfc" , -"sdhi0_wp" ,"sdhi0" ), -/* SDHI2 */ -PIN_MAP_MUX_GROUP_DEFAULT ("ee140000.sdhi" ,"e6050000.pfc" , -"sdhi2_data4" ,"sdhi2" ), -PIN_MAP_MUX_GROUP_DEFAULT ("ee140000.sdhi" ,"e6050000.pfc" , -"sdhi2_ctrl" ,"sdhi2" ), -}; -static void __init kzm_init (void ) {sh73a0_add_standard_devices_dt (); -pinctrl_register_mappings (kzm_pinctrl_map,ARRAY_SIZE (kzm_pinctrl_map));/* enable SD */ gpio_request_one (15 ,GPIOF_OUT_INIT_HIGH ,NULL );/* power */
Signature · 1 line
1.8.1.5
PATCH v5 19/22 ARM: shmobile: kzm9g-reference: Move SDHI regulators to DT
In reply to Laurent PinchartCreate two GPIO-controlled fixed-voltage regulators in the kzm9g-reference DT and remove manual configuration of the corresponding GPIOs from board code.
--- arch/arm/boot/dts/sh73a0-kzm9g-reference.dts | 23 +++++++++++++++++++++-- arch/arm/mach-shmobile/board-kzm9g-reference.c | 6 ------ 2 files changed, 21 insertions(+), 8 deletions(-)
arch/arm/boot/dts/sh73a0-kzm9g-reference.dts +21 -2
@@ -13,6 +13,7 @@ /dts-v1/; /include/ "sh73a0.dtsi" +#include <dt-bindings/gpio/gpio.h> / { model = "KZM-A9-GT";
@@ -58,6 +59,24 @@ regulator-boot-on; }; + vmmc_sdhi0: regulator at 2 { + compatible = "regulator-fixed"; + regulator-name = "SDHI0 Vcc"; + regulator-min-microvolt = <3300000>; + regulator-max-microvolt = <3300000>; + gpio = <&pfc 15 GPIO_ACTIVE_HIGH>; + enable-active-high; + }; + + vmmc_sdhi2: regulator at 3 { + compatible = "regulator-fixed"; + regulator-name = "SDHI2 Vcc"; + regulator-min-microvolt = <3300000>; + regulator-max-microvolt = <3300000>; + gpio = <&pfc 14 GPIO_ACTIVE_HIGH>; + enable-active-high; + }; + lan9220 at 10000000 { compatible = "smsc,lan9220", "smsc,lan9115"; reg = <0x10000000 0x100>;
@@ -200,7 +219,7 @@ pinctrl-0 = <&sdhi0_pins>; pinctrl-names = "default"; - vmmc-supply = <®_3p3v>; + vmmc-supply = <&vmmc_sdhi0>; bus-width = <4>; status = "okay"; };
@@ -209,7 +228,7 @@ pinctrl-0 = <&sdhi2_pins>; pinctrl-names = "default"; - vmmc-supply = <®_3p3v>; + vmmc-supply = <&vmmc_sdhi2>; bus-width = <4>; broken-cd; status = "okay";
arch/arm/mach-shmobile/board-kzm9g-reference.c +0 -6
@@ -21,7 +21,6 @@*/ #include <linux/delay.h> -#include <linux/gpio.h> #include <linux/io.h> #include <linux/irq.h> #include <linux/irqchip.h>
@@ -37,11 +36,6 @@ static void __init kzm_init(void) {sh73a0_add_standard_devices_dt (); -/* enable SD */ -gpio_request_one (15 ,GPIOF_OUT_INIT_HIGH ,NULL );/* power */ - -gpio_request_one (14 ,GPIOF_OUT_INIT_HIGH ,NULL );/* power */ -#ifdef CONFIG_CACHE_L2X0 /* Early BRESP enable, Shared attribute override enable, 64K*8way */ l2x0_init (IOMEM (0xf0100000 ),0x40460000 ,0x82000fff );
Signature · 1 line
1.8.1.5
PATCH v5 20/22 ARM: shmobile: kzm9g-reference: Add LED1-LED4 to the device tree
In reply to Laurent PinchartLED1 to LED4 are GPIO LEDs. Add corresponding DT nodes.
--- arch/arm/boot/dts/sh73a0-kzm9g-reference.dts | 16 ++++++++++++++++ 1 file changed, 16 insertions(+)
arch/arm/boot/dts/sh73a0-kzm9g-reference.dts +16 -0
@@ -89,6 +89,22 @@ vddvario-supply = <®_1p8v>; vdd33a-supply = <®_3p3v>; }; + + leds { + compatible = "gpio-leds"; + led1 { + gpios = <&pfc 20 GPIO_ACTIVE_LOW>; + }; + led2 { + gpios = <&pfc 21 GPIO_ACTIVE_LOW>; + }; + led3 { + gpios = <&pfc 22 GPIO_ACTIVE_LOW>; + }; + led4 { + gpios = <&pfc 23 GPIO_ACTIVE_LOW>; + }; + }; }; &i2c0 {
Signature · 1 line
1.8.1.5
PATCH v5 21/22 ARM: shmobile: marzen-reference: Move pinctrl mappings to device tree
In reply to Laurent PinchartReplace the pinctrl mappings in board code by device tree mappings. For devices that are still instantiated from board code reference the mappings as the default pin controller state to apply them at boot time.
--- arch/arm/boot/dts/r8a7779-marzen-reference.dts | 35 +++++++++++++++++++++++++ arch/arm/mach-shmobile/board-marzen-reference.c | 27 ------------------- 2 files changed, 35 insertions(+), 27 deletions(-)
arch/arm/boot/dts/r8a7779-marzen-reference.dts +35 -0
@@ -37,6 +37,9 @@ lan0 at 18000000 { compatible = "smsc,lan9220", "smsc,lan9115"; reg = <0x18000000 0x100>; + pinctrl-0 = <&lan0_pins>; + pinctrl-names = "default"; + phy-mode = "mii"; interrupt-parent = <&gic>; interrupts = <0 28 0x4>;
@@ -45,3 +48,35 @@ vdd33a-supply = <&fixedregulator3v3>; }; }; + +&pfc { + pinctrl-0 = <&scif2_pins &scif4_pins &sdhi0_pins>; + pinctrl-names = "default"; + + lan0_pins: lan0 { + intc { + renesas,groups = "intc_irq1_b"; + renesas,function = "intc"; + }; + lbsc { + renesas,groups = "lbsc_ex_cs0"; + renesas,function = "lbsc"; + }; + }; + + scif2_pins: scif2 { + renesas,groups = "scif2_data_c"; + renesas,function = "scif2"; + }; + + scif4_pins: scif4 { + renesas,groups = "scif4_data"; + renesas,function = "scif4"; + }; + + sdhi0_pins: sdhi0 { + renesas,groups = "sdhi0_data4", "sdhi0_ctrl", "sdhi0_cd", + "sdhi0_wp"; + renesas,function = "sdhi0"; + }; +};
arch/arm/mach-shmobile/board-marzen-reference.c +0 -27
@@ -19,41 +19,14 @@* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ -#include <linux/pinctrl/machine.h> #include <mach/r8a7779.h> #include <mach/common.h> #include <mach/irqs.h> #include <asm/irq.h> #include <asm/mach/arch.h> -static const struct pinctrl_map marzen_pinctrl_map[] = { -/* SCIF2 (CN18: DEBUG0) */ -PIN_MAP_MUX_GROUP_DEFAULT ("sh-sci.2" ,"fffc0000.pfc" , -"scif2_data_c" ,"scif2" ), -/* SCIF4 (CN19: DEBUG1) */ -PIN_MAP_MUX_GROUP_DEFAULT ("sh-sci.4" ,"fffc0000.pfc" , -"scif4_data" ,"scif4" ), -/* SDHI0 */ -PIN_MAP_MUX_GROUP_DEFAULT ("sh_mobile_sdhi.0" ,"fffc0000.pfc" , -"sdhi0_data4" ,"sdhi0" ), -PIN_MAP_MUX_GROUP_DEFAULT ("sh_mobile_sdhi.0" ,"fffc0000.pfc" , -"sdhi0_ctrl" ,"sdhi0" ), -PIN_MAP_MUX_GROUP_DEFAULT ("sh_mobile_sdhi.0" ,"fffc0000.pfc" , -"sdhi0_cd" ,"sdhi0" ), -PIN_MAP_MUX_GROUP_DEFAULT ("sh_mobile_sdhi.0" ,"fffc0000.pfc" , -"sdhi0_wp" ,"sdhi0" ), -/* SMSC */ -PIN_MAP_MUX_GROUP_DEFAULT ("smsc911x" ,"fffc0000.pfc" , -"intc_irq1_b" ,"intc" ), -PIN_MAP_MUX_GROUP_DEFAULT ("smsc911x" ,"fffc0000.pfc" , -"lbsc_ex_cs0" ,"lbsc" ), -}; -static void __init marzen_init (void ) { -pinctrl_register_mappings (marzen_pinctrl_map, -ARRAY_SIZE (marzen_pinctrl_map)); -r8a7779_add_standard_devices_dt (); }
Signature · 1 line
1.8.1.5
PATCH v5 22/22 ARM: shmobile: marzen-reference: Add LED2-LED4 to the device tree
In reply to Laurent PinchartLED2 to LED4 are GPIO LEDs. Add corresponding DT nodes.
--- arch/arm/boot/dts/r8a7779-marzen-reference.dts | 14 ++++++++++++++ 1 file changed, 14 insertions(+)
arch/arm/boot/dts/r8a7779-marzen-reference.dts +14 -0
@@ -11,6 +11,7 @@ /dts-v1/; /include/ "r8a7779.dtsi" +#include <dt-bindings/gpio/gpio.h> / { model = "marzen";
@@ -47,6 +48,19 @@ vddvario-supply = <&fixedregulator3v3>; vdd33a-supply = <&fixedregulator3v3>; }; + + leds { + compatible = "gpio-leds"; + led2 { + gpios = <&gpio4 29 GPIO_ACTIVE_HIGH>; + }; + led3 { + gpios = <&gpio4 30 GPIO_ACTIVE_HIGH>; + }; + led4 { + gpios = <&gpio4 31 GPIO_ACTIVE_HIGH>; + }; + }; }; &pfc {
Signature · 1 line
1.8.1.5