• Tomasz Figa's avatar
    pinctrl: samsung: Allow grouping multiple pinmux/pinconf nodes · 9a2c1c3b
    Tomasz Figa authored
    One of remaining limitations of current pinctrl-samsung driver was
    the inability to parse multiple pinmux/pinconf group nodes grouped
    inside a single device tree node. It made defining groups of pins for
    single purpose, but with different parameters very inconvenient.
    
    This patch implements Tegra-like support for grouping multiple pinctrl
    groups inside one device tree node, by completely changing the way
    pin groups and functions are parsed from device tree. The code creating
    pinctrl maps from DT nodes has been borrowed from pinctrl-tegra, while
    the initial creation of groups and functions has been completely
    rewritten with following assumptions:
     - each group consists of just one pin and does not depend on data
       from device tree,
     - each function is represented by a device tree child node of the
       pin controller, which in turn can contain multiple child nodes
       for pins that need to have different configuration values.
    
    Device Tree bindings are fully backwards compatible. New functionality
    can be used by defining a new pinctrl group consisting of several child
    nodes, as on following example:
    
    	sd4_bus8: sd4-bus-width8 {
    		part-1 {
    			samsung,pins = "gpk0-3", "gpk0-4",
    					"gpk0-5", "gpk0-6";
    			samsung,pin-function = <3>;
    			samsung,pin-pud = <3>;
    			samsung,pin-drv = <3>;
    		};
    		part-2 {
    			samsung,pins = "gpk1-3", "gpk1-4",
    					"gpk1-5", "gpk1-6";
    			samsung,pin-function = <4>;
    			samsung,pin-pud = <4>;
    			samsung,pin-drv = <3>;
    		};
    	};
    
    Tested on Exynos4210-Trats board and a custom Exynos4212-based one.
    Signed-off-by: default avatarTomasz Figa <t.figa@samsung.com>
    Acked-by: default avatarKyungmin Park <kyungmin.park@samsung.com>
    Reviewed-by: default avatarStephen Warren <swarren@nvidia.com>
    Cc: devicetree@vger.kernel.org
    Cc: Rob Herring <robh+dt@kernel.org>
    Cc: Mark Rutland <mark.rutland@arm.com>
    Signed-off-by: default avatarLinus Walleij <linus.walleij@linaro.org>
    9a2c1c3b
samsung-pinctrl.txt 12 KB