Lines Matching refs:jzpc

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