[U-Boot] [PATCH v9 04/12] dm: exynos: dts: Adjust device tree files for U-Boot

Przemyslaw Marczak p.marczak at samsung.com
Mon Oct 20 16:55:38 CEST 2014


Hello Simon,

On 10/15/2014 10:37 AM, Simon Glass wrote:
> The pinctrl bindings used by Linux are an incomplete description of the
> hardware. It is possible in most cases to determine the register address
> of each, but not in all cases. By adding an additional property we can
> fix this, and avoid adding a table to U-Boot for every single Exynos
> SOC.
>
> Signed-off-by: Simon Glass <sjg at chromium.org>
> ---
>
> Changes in v9: None
> Changes in v8:
> - Add missing special case reg property for exynos5420 GPX0
>
> Changes in v7: None
> Changes in v6:
> - Move U-Boot changes into their own file
> - Use exynos54xx everywhere instead of exynos5420
>
> Changes in v5: None
> Changes in v4: None
>
>   arch/arm/dts/exynos4210-pinctrl-uboot.dtsi | 27 ++++++++++++++++++
>   arch/arm/dts/exynos4210-pinctrl.dtsi       |  2 ++
>   arch/arm/dts/exynos4x12-pinctrl-uboot.dtsi | 46 ++++++++++++++++++++++++++++++
>   arch/arm/dts/exynos4x12-pinctrl.dtsi       |  2 ++
>   arch/arm/dts/exynos5250-pinctrl-uboot.dtsi | 40 ++++++++++++++++++++++++++
>   arch/arm/dts/exynos5250-pinctrl.dtsi       |  2 ++
>   arch/arm/dts/exynos54xx-pinctrl-uboot.dtsi | 40 ++++++++++++++++++++++++++
>   arch/arm/dts/exynos54xx-pinctrl.dtsi       |  2 ++
>   arch/arm/dts/exynos54xx.dtsi               |  1 +
>   9 files changed, 162 insertions(+)
>   create mode 100644 arch/arm/dts/exynos4210-pinctrl-uboot.dtsi
>   create mode 100644 arch/arm/dts/exynos4x12-pinctrl-uboot.dtsi
>   create mode 100644 arch/arm/dts/exynos5250-pinctrl-uboot.dtsi
>   create mode 100644 arch/arm/dts/exynos54xx-pinctrl-uboot.dtsi
>

... snip ...

> diff --git a/arch/arm/dts/exynos4210-pinctrl.dtsi b/arch/arm/dts/exynos4210-pinctrl.dtsi
> index bda17f7..87f162b 100644
> --- a/arch/arm/dts/exynos4210-pinctrl.dtsi
> +++ b/arch/arm/dts/exynos4210-pinctrl.dtsi
> @@ -14,6 +14,8 @@
>    * published by the Free Software Foundation.
>   */
>
> +#include "exynos4210-pinctrl-uboot.dtsi"
> +
>   / {
>   	pinctrl at 11400000 {
>   		gpa0: gpa0 {
> diff --git a/arch/arm/dts/exynos4x12-pinctrl-uboot.dtsi b/arch/arm/dts/exynos4x12-pinctrl-uboot.dtsi
> new file mode 100644
> index 0000000..c02796d
> --- /dev/null
> +++ b/arch/arm/dts/exynos4x12-pinctrl-uboot.dtsi
> @@ -0,0 +1,46 @@
> +/*
> + * U-Boot additions to enable a generic Exynos GPIO driver
> + *
> + * Copyright (c) 2014 Google, Inc
> + */
> +
> +/{
> +	pinctrl_0: pinctrl at 11400000 {
> +		#address-cells = <1>;
> +		#size-cells = <0>;

The first issue with Exynos GPIO driver starts here. If you put pinctrl* 
node data in a separated file, then the order of nodes in dtb is 
changed. So for the pinctrl 0, the first subnode is gpf0, instead of 
gpa0. And the same is for other pinctrls.

This means that function gpio_exynos_bind(), which expects proper 
subnodes order assign wrong base addresses to some GPIO pins.

Move "reg" properties into arch/arm/dts/exynos4x12-pinctrl.dtsi fixes 
this issue. But in this case, the file *-pinctrl-uboot.dtsi is quite 
useless - since the cells size can be moved to pinctrl.dtsi too.

This probably will touch all *pinctrl-uboot.dtsi files.




More information about the U-Boot mailing list