Lines Matching defs:jzpc

97 	struct ingenic_pinctrl *jzpc;
2010 regmap_read(jzgc->jzpc->map, jzgc->reg_base + reg, &val);
2023 regmap_write(jzgc->jzpc->map, jzgc->reg_base + reg, BIT(offset));
2034 regmap_write(jzgc->jzpc->map, REG_PZ_BASE(
2035 jzgc->jzpc->info->reg_offset) + reg, BIT(offset));
2040 regmap_write(jzgc->jzpc->map, REG_PZ_GID2LD(
2041 jzgc->jzpc->info->reg_offset),
2056 if (jzgc->jzpc->info->version >= ID_JZ4770)
2086 if (jzgc->jzpc->info->version >= ID_JZ4770) {
2094 if (jzgc->jzpc->info->version >= ID_X1000) {
2126 if (jzgc->jzpc->info->version >= ID_JZ4770)
2142 if (jzgc->jzpc->info->version >= ID_JZ4770)
2167 if (jzgc->jzpc->info->version >= ID_JZ4770)
2224 if (jzgc->jzpc->info->version >= ID_JZ4770)
2262 static inline void ingenic_config_pin(struct ingenic_pinctrl *jzpc,
2268 regmap_write(jzpc->map, offt * jzpc->info->reg_offset +
2272 static inline void ingenic_shadow_config_pin(struct ingenic_pinctrl *jzpc,
2277 regmap_write(jzpc->map, REG_PZ_BASE(jzpc->info->reg_offset) +
2281 static inline void ingenic_shadow_config_pin_load(struct ingenic_pinctrl *jzpc,
2284 regmap_write(jzpc->map, REG_PZ_GID2LD(jzpc->info->reg_offset),
2288 static inline bool ingenic_get_pin_config(struct ingenic_pinctrl *jzpc,
2295 regmap_read(jzpc->map, offt * jzpc->info->reg_offset + reg, &val);
2303 struct ingenic_pinctrl *jzpc = jzgc->jzpc;
2306 if (jzpc->info->version >= ID_JZ4770) {
2307 if (ingenic_get_pin_config(jzpc, pin, JZ4760_GPIO_INT) ||
2308 ingenic_get_pin_config(jzpc, pin, JZ4760_GPIO_PAT1))
2313 if (ingenic_get_pin_config(jzpc, pin, JZ4740_GPIO_SELECT))
2316 if (ingenic_get_pin_config(jzpc, pin, JZ4740_GPIO_DIR))
2349 static int ingenic_pinmux_set_pin_fn(struct ingenic_pinctrl *jzpc,
2355 dev_dbg(jzpc->dev, "set pin P%c%u to function %u\n",
2358 if (jzpc->info->version >= ID_X1000) {
2359 ingenic_shadow_config_pin(jzpc, pin, JZ4760_GPIO_INT, false);
2360 ingenic_shadow_config_pin(jzpc, pin, GPIO_MSK, false);
2361 ingenic_shadow_config_pin(jzpc, pin, JZ4760_GPIO_PAT1, func & 0x2);
2362 ingenic_shadow_config_pin(jzpc, pin, JZ4760_GPIO_PAT0, func & 0x1);
2363 ingenic_shadow_config_pin_load(jzpc, pin);
2364 } else if (jzpc->info->version >= ID_JZ4770) {
2365 ingenic_config_pin(jzpc, pin, JZ4760_GPIO_INT, false);
2366 ingenic_config_pin(jzpc, pin, GPIO_MSK, false);
2367 ingenic_config_pin(jzpc, pin, JZ4760_GPIO_PAT1, func & 0x2);
2368 ingenic_config_pin(jzpc, pin, JZ4760_GPIO_PAT0, func & 0x1);
2370 ingenic_config_pin(jzpc, pin, JZ4740_GPIO_FUNC, true);
2371 ingenic_config_pin(jzpc, pin, JZ4740_GPIO_TRIG, func & 0x2);
2372 ingenic_config_pin(jzpc, pin, JZ4740_GPIO_SELECT, func & 0x1);
2381 struct ingenic_pinctrl *jzpc = pinctrl_dev_get_drvdata(pctldev);
2400 ingenic_pinmux_set_pin_fn(jzpc, grp->pins[i], pin_modes[i]);
2410 struct ingenic_pinctrl *jzpc = pinctrl_dev_get_drvdata(pctldev);
2417 if (jzpc->info->version >= ID_X1000) {
2418 ingenic_shadow_config_pin(jzpc, pin, JZ4760_GPIO_INT, false);
2419 ingenic_shadow_config_pin(jzpc, pin, GPIO_MSK, true);
2420 ingenic_shadow_config_pin(jzpc, pin, JZ4760_GPIO_PAT1, input);
2421 ingenic_shadow_config_pin_load(jzpc, pin);
2422 } else if (jzpc->info->version >= ID_JZ4770) {
2423 ingenic_config_pin(jzpc, pin, JZ4760_GPIO_INT, false);
2424 ingenic_config_pin(jzpc, pin, GPIO_MSK, true);
2425 ingenic_config_pin(jzpc, pin, JZ4760_GPIO_PAT1, input);
2427 ingenic_config_pin(jzpc, pin, JZ4740_GPIO_SELECT, false);
2428 ingenic_config_pin(jzpc, pin, JZ4740_GPIO_DIR, !input);
2429 ingenic_config_pin(jzpc, pin, JZ4740_GPIO_FUNC, false);
2446 struct ingenic_pinctrl *jzpc = pinctrl_dev_get_drvdata(pctldev);
2452 if (jzpc->info->version >= ID_JZ4770)
2453 pull = !ingenic_get_pin_config(jzpc, pin, JZ4760_GPIO_PEN);
2455 pull = !ingenic_get_pin_config(jzpc, pin, JZ4740_GPIO_PULL_DIS);
2464 if (!pull || !(jzpc->info->pull_ups[offt] & BIT(idx)))
2469 if (!pull || !(jzpc->info->pull_downs[offt] & BIT(idx)))
2481 static void ingenic_set_bias(struct ingenic_pinctrl *jzpc,
2484 if (jzpc->info->version >= ID_X1830) {
2491 regmap_write(jzpc->map, offt * jzpc->info->reg_offset +
2493 regmap_write(jzpc->map, offt * jzpc->info->reg_offset +
2496 regmap_write(jzpc->map, offt * jzpc->info->reg_offset +
2498 regmap_write(jzpc->map, offt * jzpc->info->reg_offset +
2502 } else if (jzpc->info->version >= ID_JZ4770) {
2503 ingenic_config_pin(jzpc, pin, JZ4760_GPIO_PEN, !bias);
2505 ingenic_config_pin(jzpc, pin, JZ4740_GPIO_PULL_DIS, !bias);
2509 static void ingenic_set_output_level(struct ingenic_pinctrl *jzpc,
2512 if (jzpc->info->version >= ID_JZ4770)
2513 ingenic_config_pin(jzpc, pin, JZ4760_GPIO_PAT0, high);
2515 ingenic_config_pin(jzpc, pin, JZ4740_GPIO_DATA, high);
2521 struct ingenic_pinctrl *jzpc = pinctrl_dev_get_drvdata(pctldev);
2544 dev_dbg(jzpc->dev, "disable pull-over for pin P%c%u\n",
2546 ingenic_set_bias(jzpc, pin, GPIO_PULL_DIS);
2550 if (!(jzpc->info->pull_ups[offt] & BIT(idx)))
2552 dev_dbg(jzpc->dev, "set pull-up for pin P%c%u\n",
2554 ingenic_set_bias(jzpc, pin, GPIO_PULL_UP);
2558 if (!(jzpc->info->pull_downs[offt] & BIT(idx)))
2560 dev_dbg(jzpc->dev, "set pull-down for pin P%c%u\n",
2562 ingenic_set_bias(jzpc, pin, GPIO_PULL_DOWN);
2570 ingenic_set_output_level(jzpc, pin, arg);
2654 static int __init ingenic_gpio_probe(struct ingenic_pinctrl *jzpc,
2658 struct device *dev = jzpc->dev;
2673 jzgc->jzpc = jzpc;
2674 jzgc->reg_base = bank * jzpc->info->reg_offset;
2737 struct ingenic_pinctrl *jzpc;
2745 jzpc = devm_kzalloc(dev, sizeof(*jzpc), GFP_KERNEL);
2746 if (!jzpc)
2753 jzpc->map = devm_regmap_init_mmio(dev, base,
2755 if (IS_ERR(jzpc->map)) {
2757 return PTR_ERR(jzpc->map);
2760 jzpc->dev = dev;
2761 jzpc->info = chip_info = of_device_get_match_data(dev);
2774 pctl_desc->pins = jzpc->pdesc = devm_kcalloc(&pdev->dev,
2775 pctl_desc->npins, sizeof(*jzpc->pdesc), GFP_KERNEL);
2776 if (!jzpc->pdesc)
2780 jzpc->pdesc[i].number = i;
2781 jzpc->pdesc[i].name = kasprintf(GFP_KERNEL, "P%c%d",
2786 jzpc->pctl = devm_pinctrl_register(dev, pctl_desc, jzpc);
2787 if (IS_ERR(jzpc->pctl)) {
2789 return PTR_ERR(jzpc->pctl);
2795 err = pinctrl_generic_add_group(jzpc->pctl, group->name,
2807 err = pinmux_generic_add_function(jzpc->pctl, func->name,
2817 dev_set_drvdata(dev, jzpc->map);
2821 err = ingenic_gpio_probe(jzpc, node);