Thread (23 messages) 23 messages, 7 authors, 2015-06-30

Re: [PATCH v2 3/6] pinctrl: sh-pfc: r8a7790: Add separate functions for SDHI 1.8V operation

From: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Date: 2015-06-15 02:02:50
Also in: linux-mmc, linux-sh

Hi Ben,

On Monday 15 June 2015 01:40:40 Ben Hutchings wrote:
On Fri, 2015-06-12 at 22:07 +0300, Laurent Pinchart wrote:
quoted
On Friday 12 June 2015 14:23:55 Ben Hutchings wrote:
quoted
On Fri, 2015-06-12 at 10:18 +0300, Laurent Pinchart wrote:
quoted
On Wednesday 10 June 2015 00:23:31 Ben Hutchings wrote:
quoted
All the SHDIs can operate with either 3.3V or 1.8V signals,
depending on negotiation with the card.

Add separate functions for the 1.8V mode, and implement the set_mux
operation on all SDHI functions to configure the voltage for each
group of pins.
I don't think duplicating all functions for 1.8V and 3.3V is the right
way to go. Can't we use the pinconf API instead, and in particular the
PIN_CONFIG_POWER_SOURCE configuration ?
[...]

So far as I could see, you can't use the pinconf API with pinmux groups.
Can't you ? Both Documentation/devicetree/bindings/pinctrl/pinctrl-
bindings.txt and Documentation/devicetree/bindings/pinctrl/renesas,pfc-
pinctrl.txt document the usage of pinconf with groups (see for instance
example 3 in the latter).
Sorry, I should say you can't use them with pinmux *functions*.  You can
either bind a group to a function *or* set the various pinconf
properties for the group, but not both.  Unless I'm very much mistaken.
One of us probably is :-)

I'd have to recheck whether this is really a standard behaviour, but the PFC 
driver at least supports setting both functions and configuration as far as I 
can tell. The relevant example from the PFC bindings is

        mmcif_pins: mmcif {
                mux {
                        renesas,groups = "mmc0_data8_0", "mmc0_ctrl_0";
                        renesas,function = "mmc0";
                };
                cfg {
                        renesas,groups = "mmc0_data8_0";
                        renesas,pins = "PORT279";
                        bias-pull-up;
                };
        };

It's a bit more verbose than I'd like, but I think the following should work 
too.

        mmcif_pins: mmcif {
                renesas,groups = "mmc0_data8_0";
                renesas,function = "mmc0";
                bias-pull-up;
        };

(it requires all pins from the groups to use the same configuration though)

I believe the former is the intended way to set both function and config, 
while the latter is a PFC "extension".

On a side note, I have a patch to support the standard "groups", "functions" 
and "pins" properties instead of the Renesas-specific versions, I'll try to 
revive it.

-- 
Regards,

Laurent Pinchart
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help