static const struct pinctrl_map __initdata mapping[] = {
{
.dev_name = "foo-spi.0",
+ .name = PINCTRL_STATE_DEFAULT,
.ctrl_dev_name = "pinctrl-foo",
.function = "spi0",
},
{
.dev_name = "foo-i2c.0",
+ .name = PINCTRL_STATE_DEFAULT,
.ctrl_dev_name = "pinctrl-foo",
.function = "i2c0",
},
{
.dev_name = "foo-mmc.0",
+ .name = PINCTRL_STATE_DEFAULT,
.ctrl_dev_name = "pinctrl-foo",
.function = "mmc0",
},
pinctrl_put(state->p);
}
-If you want to grab a specific control mapping and not just the first one
-found for this device you can specify a specific mapping name, for example in
-the above example the second i2c0 setting: pinctrl_get(&device, "spi0-pos-B");
-
This get/enable/disable/put sequence can just as well be handled by bus drivers
if you don't want each and every driver to handle it and you know the
arrangement on your bus.
PIN_MAP_SYS_HOG("pinctrl-u300", "emif0"),
PIN_MAP_SYS_HOG("pinctrl-u300", "emif1"),
/* per-device maps for MMC/SD, SPI and UART */
- PIN_MAP("MMCSD", "pinctrl-u300", "mmc0", "mmci"),
- PIN_MAP("SPI", "pinctrl-u300", "spi0", "pl022"),
- PIN_MAP("UART0", "pinctrl-u300", "uart0", "uart0"),
+ PIN_MAP(PINCTRL_STATE_DEFAULT, "pinctrl-u300", "mmc0", "mmci"),
+ PIN_MAP(PINCTRL_STATE_DEFAULT, "pinctrl-u300", "spi0", "pl022"),
+ PIN_MAP(PINCTRL_STATE_DEFAULT, "pinctrl-u300", "uart0", "uart0"),
};
struct u300_mux_hog {
struct pinctrl *p;
int ret;
- p = pinctrl_get(u300_mux_hogs[i].dev, NULL);
+ p = pinctrl_get(u300_mux_hogs[i].dev, PINCTRL_STATE_DEFAULT);
if (IS_ERR(p)) {
pr_err("u300: could not get pinmux hog %s\n",
u300_mux_hogs[i].name);
int i;
struct pinctrl_map const *map;
- /* We must have a dev name */
- if (WARN_ON(!dev))
+ /* We must have both a dev and state name */
+ if (WARN_ON(!dev || !name))
return ERR_PTR(-EINVAL);
devname = dev_name(dev);
if (strcmp(map->dev_name, devname))
continue;
- /*
- * If we're looking for a specific named map, this must match,
- * else we loop and look for the next.
- */
- if (name != NULL) {
- if (map->name == NULL)
- continue;
- if (strcmp(map->name, name))
- continue;
- }
+ /* State name must be the one we're looking for */
+ if (strcmp(map->name, name))
+ continue;
ret = pinmux_apply_muxmap(pctldev, p, dev, devname, map);
if (ret) {
port->irq = res->start;
if (sirfport->hw_flow_ctrl) {
- sirfport->p = pinctrl_get(&pdev->dev, NULL);
+ sirfport->p = pinctrl_get(&pdev->dev, PINCTRL_STATE_DEFAULT);
ret = IS_ERR(sirfport->p);
if (ret)
goto pin_err;