jzpc 88 drivers/pinctrl/pinctrl-ingenic.c struct ingenic_pinctrl *jzpc; jzpc 1337 drivers/pinctrl/pinctrl-ingenic.c regmap_read(jzgc->jzpc->map, jzgc->reg_base + reg, &val); jzpc 1350 drivers/pinctrl/pinctrl-ingenic.c regmap_write(jzgc->jzpc->map, jzgc->reg_base + reg, BIT(offset)); jzpc 1361 drivers/pinctrl/pinctrl-ingenic.c regmap_write(jzgc->jzpc->map, X1000_GPIO_PZ_BASE + reg, BIT(offset)); jzpc 1366 drivers/pinctrl/pinctrl-ingenic.c regmap_write(jzgc->jzpc->map, X1000_GPIO_PZ_GID2LD, jzpc 1381 drivers/pinctrl/pinctrl-ingenic.c if (jzgc->jzpc->version >= ID_JZ4760) jzpc 1392 drivers/pinctrl/pinctrl-ingenic.c if (jzgc->jzpc->version >= ID_JZ4760) { jzpc 1402 drivers/pinctrl/pinctrl-ingenic.c if (jzgc->jzpc->version >= ID_X1000) { jzpc 1412 drivers/pinctrl/pinctrl-ingenic.c if (jzgc->jzpc->version >= ID_X1000) { jzpc 1422 drivers/pinctrl/pinctrl-ingenic.c if (jzgc->jzpc->version >= ID_X1000) { jzpc 1433 drivers/pinctrl/pinctrl-ingenic.c if (jzgc->jzpc->version >= ID_X1000) { jzpc 1467 drivers/pinctrl/pinctrl-ingenic.c if (jzgc->jzpc->version >= ID_JZ4760) jzpc 1483 drivers/pinctrl/pinctrl-ingenic.c if (jzgc->jzpc->version >= ID_JZ4760) jzpc 1508 drivers/pinctrl/pinctrl-ingenic.c if (jzgc->jzpc->version >= ID_JZ4760) jzpc 1565 drivers/pinctrl/pinctrl-ingenic.c if (jzgc->jzpc->version >= ID_JZ4760) jzpc 1603 drivers/pinctrl/pinctrl-ingenic.c static inline void ingenic_config_pin(struct ingenic_pinctrl *jzpc, jzpc 1609 drivers/pinctrl/pinctrl-ingenic.c regmap_write(jzpc->map, offt * 0x100 + jzpc 1613 drivers/pinctrl/pinctrl-ingenic.c static inline void ingenic_shadow_config_pin(struct ingenic_pinctrl *jzpc, jzpc 1618 drivers/pinctrl/pinctrl-ingenic.c regmap_write(jzpc->map, X1000_GPIO_PZ_BASE + jzpc 1622 drivers/pinctrl/pinctrl-ingenic.c static inline void ingenic_shadow_config_pin_load(struct ingenic_pinctrl *jzpc, jzpc 1625 drivers/pinctrl/pinctrl-ingenic.c regmap_write(jzpc->map, X1000_GPIO_PZ_GID2LD, pin / PINS_PER_GPIO_CHIP); jzpc 1628 drivers/pinctrl/pinctrl-ingenic.c static inline bool ingenic_get_pin_config(struct ingenic_pinctrl *jzpc, jzpc 1635 drivers/pinctrl/pinctrl-ingenic.c regmap_read(jzpc->map, offt * 0x100 + reg, &val); jzpc 1643 drivers/pinctrl/pinctrl-ingenic.c struct ingenic_pinctrl *jzpc = jzgc->jzpc; jzpc 1646 drivers/pinctrl/pinctrl-ingenic.c if (jzpc->version >= ID_JZ4760) jzpc 1647 drivers/pinctrl/pinctrl-ingenic.c return ingenic_get_pin_config(jzpc, pin, JZ4760_GPIO_PAT1); jzpc 1649 drivers/pinctrl/pinctrl-ingenic.c if (ingenic_get_pin_config(jzpc, pin, JZ4740_GPIO_SELECT)) jzpc 1652 drivers/pinctrl/pinctrl-ingenic.c return !ingenic_get_pin_config(jzpc, pin, JZ4740_GPIO_DIR); jzpc 1663 drivers/pinctrl/pinctrl-ingenic.c static int ingenic_pinmux_set_pin_fn(struct ingenic_pinctrl *jzpc, jzpc 1669 drivers/pinctrl/pinctrl-ingenic.c dev_dbg(jzpc->dev, "set pin P%c%u to function %u\n", jzpc 1672 drivers/pinctrl/pinctrl-ingenic.c if (jzpc->version >= ID_X1000) { jzpc 1673 drivers/pinctrl/pinctrl-ingenic.c ingenic_shadow_config_pin(jzpc, pin, JZ4760_GPIO_INT, false); jzpc 1674 drivers/pinctrl/pinctrl-ingenic.c ingenic_shadow_config_pin(jzpc, pin, GPIO_MSK, false); jzpc 1675 drivers/pinctrl/pinctrl-ingenic.c ingenic_shadow_config_pin(jzpc, pin, JZ4760_GPIO_PAT1, func & 0x2); jzpc 1676 drivers/pinctrl/pinctrl-ingenic.c ingenic_shadow_config_pin(jzpc, pin, JZ4760_GPIO_PAT0, func & 0x1); jzpc 1677 drivers/pinctrl/pinctrl-ingenic.c ingenic_shadow_config_pin_load(jzpc, pin); jzpc 1678 drivers/pinctrl/pinctrl-ingenic.c } else if (jzpc->version >= ID_JZ4760) { jzpc 1679 drivers/pinctrl/pinctrl-ingenic.c ingenic_config_pin(jzpc, pin, JZ4760_GPIO_INT, false); jzpc 1680 drivers/pinctrl/pinctrl-ingenic.c ingenic_config_pin(jzpc, pin, GPIO_MSK, false); jzpc 1681 drivers/pinctrl/pinctrl-ingenic.c ingenic_config_pin(jzpc, pin, JZ4760_GPIO_PAT1, func & 0x2); jzpc 1682 drivers/pinctrl/pinctrl-ingenic.c ingenic_config_pin(jzpc, pin, JZ4760_GPIO_PAT0, func & 0x1); jzpc 1684 drivers/pinctrl/pinctrl-ingenic.c ingenic_config_pin(jzpc, pin, JZ4740_GPIO_FUNC, true); jzpc 1685 drivers/pinctrl/pinctrl-ingenic.c ingenic_config_pin(jzpc, pin, JZ4740_GPIO_TRIG, func & 0x2); jzpc 1686 drivers/pinctrl/pinctrl-ingenic.c ingenic_config_pin(jzpc, pin, JZ4740_GPIO_SELECT, func > 0); jzpc 1695 drivers/pinctrl/pinctrl-ingenic.c struct ingenic_pinctrl *jzpc = pinctrl_dev_get_drvdata(pctldev); jzpc 1714 drivers/pinctrl/pinctrl-ingenic.c ingenic_pinmux_set_pin_fn(jzpc, grp->pins[i], pin_modes[i]); jzpc 1724 drivers/pinctrl/pinctrl-ingenic.c struct ingenic_pinctrl *jzpc = pinctrl_dev_get_drvdata(pctldev); jzpc 1731 drivers/pinctrl/pinctrl-ingenic.c if (jzpc->version >= ID_X1000) { jzpc 1732 drivers/pinctrl/pinctrl-ingenic.c ingenic_shadow_config_pin(jzpc, pin, JZ4760_GPIO_INT, false); jzpc 1733 drivers/pinctrl/pinctrl-ingenic.c ingenic_shadow_config_pin(jzpc, pin, GPIO_MSK, true); jzpc 1734 drivers/pinctrl/pinctrl-ingenic.c ingenic_shadow_config_pin(jzpc, pin, JZ4760_GPIO_PAT1, input); jzpc 1735 drivers/pinctrl/pinctrl-ingenic.c ingenic_shadow_config_pin_load(jzpc, pin); jzpc 1736 drivers/pinctrl/pinctrl-ingenic.c } else if (jzpc->version >= ID_JZ4760) { jzpc 1737 drivers/pinctrl/pinctrl-ingenic.c ingenic_config_pin(jzpc, pin, JZ4760_GPIO_INT, false); jzpc 1738 drivers/pinctrl/pinctrl-ingenic.c ingenic_config_pin(jzpc, pin, GPIO_MSK, true); jzpc 1739 drivers/pinctrl/pinctrl-ingenic.c ingenic_config_pin(jzpc, pin, JZ4760_GPIO_PAT1, input); jzpc 1741 drivers/pinctrl/pinctrl-ingenic.c ingenic_config_pin(jzpc, pin, JZ4740_GPIO_SELECT, false); jzpc 1742 drivers/pinctrl/pinctrl-ingenic.c ingenic_config_pin(jzpc, pin, JZ4740_GPIO_DIR, !input); jzpc 1743 drivers/pinctrl/pinctrl-ingenic.c ingenic_config_pin(jzpc, pin, JZ4740_GPIO_FUNC, false); jzpc 1760 drivers/pinctrl/pinctrl-ingenic.c struct ingenic_pinctrl *jzpc = pinctrl_dev_get_drvdata(pctldev); jzpc 1766 drivers/pinctrl/pinctrl-ingenic.c if (jzpc->version >= ID_JZ4760) jzpc 1767 drivers/pinctrl/pinctrl-ingenic.c pull = !ingenic_get_pin_config(jzpc, pin, JZ4760_GPIO_PEN); jzpc 1769 drivers/pinctrl/pinctrl-ingenic.c pull = !ingenic_get_pin_config(jzpc, pin, JZ4740_GPIO_PULL_DIS); jzpc 1778 drivers/pinctrl/pinctrl-ingenic.c if (!pull || !(jzpc->info->pull_ups[offt] & BIT(idx))) jzpc 1783 drivers/pinctrl/pinctrl-ingenic.c if (!pull || !(jzpc->info->pull_downs[offt] & BIT(idx))) jzpc 1795 drivers/pinctrl/pinctrl-ingenic.c static void ingenic_set_bias(struct ingenic_pinctrl *jzpc, jzpc 1798 drivers/pinctrl/pinctrl-ingenic.c if (jzpc->version >= ID_JZ4760) jzpc 1799 drivers/pinctrl/pinctrl-ingenic.c ingenic_config_pin(jzpc, pin, JZ4760_GPIO_PEN, !enabled); jzpc 1801 drivers/pinctrl/pinctrl-ingenic.c ingenic_config_pin(jzpc, pin, JZ4740_GPIO_PULL_DIS, !enabled); jzpc 1807 drivers/pinctrl/pinctrl-ingenic.c struct ingenic_pinctrl *jzpc = pinctrl_dev_get_drvdata(pctldev); jzpc 1826 drivers/pinctrl/pinctrl-ingenic.c dev_dbg(jzpc->dev, "disable pull-over for pin P%c%u\n", jzpc 1828 drivers/pinctrl/pinctrl-ingenic.c ingenic_set_bias(jzpc, pin, false); jzpc 1832 drivers/pinctrl/pinctrl-ingenic.c if (!(jzpc->info->pull_ups[offt] & BIT(idx))) jzpc 1834 drivers/pinctrl/pinctrl-ingenic.c dev_dbg(jzpc->dev, "set pull-up for pin P%c%u\n", jzpc 1836 drivers/pinctrl/pinctrl-ingenic.c ingenic_set_bias(jzpc, pin, true); jzpc 1840 drivers/pinctrl/pinctrl-ingenic.c if (!(jzpc->info->pull_downs[offt] & BIT(idx))) jzpc 1842 drivers/pinctrl/pinctrl-ingenic.c dev_dbg(jzpc->dev, "set pull-down for pin P%c%u\n", jzpc 1844 drivers/pinctrl/pinctrl-ingenic.c ingenic_set_bias(jzpc, pin, true); jzpc 1938 drivers/pinctrl/pinctrl-ingenic.c static int __init ingenic_gpio_probe(struct ingenic_pinctrl *jzpc, jzpc 1942 drivers/pinctrl/pinctrl-ingenic.c struct device *dev = jzpc->dev; jzpc 1956 drivers/pinctrl/pinctrl-ingenic.c jzgc->jzpc = jzpc; jzpc 2016 drivers/pinctrl/pinctrl-ingenic.c struct ingenic_pinctrl *jzpc; jzpc 2027 drivers/pinctrl/pinctrl-ingenic.c jzpc = devm_kzalloc(dev, sizeof(*jzpc), GFP_KERNEL); jzpc 2028 drivers/pinctrl/pinctrl-ingenic.c if (!jzpc) jzpc 2036 drivers/pinctrl/pinctrl-ingenic.c jzpc->map = devm_regmap_init_mmio(dev, base, jzpc 2038 drivers/pinctrl/pinctrl-ingenic.c if (IS_ERR(jzpc->map)) { jzpc 2040 drivers/pinctrl/pinctrl-ingenic.c return PTR_ERR(jzpc->map); jzpc 2043 drivers/pinctrl/pinctrl-ingenic.c jzpc->dev = dev; jzpc 2046 drivers/pinctrl/pinctrl-ingenic.c jzpc->version = (enum jz_version)of_id->data; jzpc 2048 drivers/pinctrl/pinctrl-ingenic.c jzpc->version = (enum jz_version)id->driver_data; jzpc 2050 drivers/pinctrl/pinctrl-ingenic.c if (jzpc->version >= ID_X1500) jzpc 2052 drivers/pinctrl/pinctrl-ingenic.c else if (jzpc->version >= ID_X1000E) jzpc 2054 drivers/pinctrl/pinctrl-ingenic.c else if (jzpc->version >= ID_X1000) jzpc 2056 drivers/pinctrl/pinctrl-ingenic.c else if (jzpc->version >= ID_JZ4780) jzpc 2058 drivers/pinctrl/pinctrl-ingenic.c else if (jzpc->version >= ID_JZ4770) jzpc 2060 drivers/pinctrl/pinctrl-ingenic.c else if (jzpc->version >= ID_JZ4760B) jzpc 2062 drivers/pinctrl/pinctrl-ingenic.c else if (jzpc->version >= ID_JZ4760) jzpc 2064 drivers/pinctrl/pinctrl-ingenic.c else if (jzpc->version >= ID_JZ4725B) jzpc 2068 drivers/pinctrl/pinctrl-ingenic.c jzpc->info = chip_info; jzpc 2081 drivers/pinctrl/pinctrl-ingenic.c pctl_desc->pins = jzpc->pdesc = devm_kcalloc(&pdev->dev, jzpc 2082 drivers/pinctrl/pinctrl-ingenic.c pctl_desc->npins, sizeof(*jzpc->pdesc), GFP_KERNEL); jzpc 2083 drivers/pinctrl/pinctrl-ingenic.c if (!jzpc->pdesc) jzpc 2087 drivers/pinctrl/pinctrl-ingenic.c jzpc->pdesc[i].number = i; jzpc 2088 drivers/pinctrl/pinctrl-ingenic.c jzpc->pdesc[i].name = kasprintf(GFP_KERNEL, "P%c%d", jzpc 2093 drivers/pinctrl/pinctrl-ingenic.c jzpc->pctl = devm_pinctrl_register(dev, pctl_desc, jzpc); jzpc 2094 drivers/pinctrl/pinctrl-ingenic.c if (IS_ERR(jzpc->pctl)) { jzpc 2096 drivers/pinctrl/pinctrl-ingenic.c return PTR_ERR(jzpc->pctl); jzpc 2102 drivers/pinctrl/pinctrl-ingenic.c err = pinctrl_generic_add_group(jzpc->pctl, group->name, jzpc 2114 drivers/pinctrl/pinctrl-ingenic.c err = pinmux_generic_add_function(jzpc->pctl, func->name, jzpc 2124 drivers/pinctrl/pinctrl-ingenic.c dev_set_drvdata(dev, jzpc->map); jzpc 2128 drivers/pinctrl/pinctrl-ingenic.c err = ingenic_gpio_probe(jzpc, node);