Lines Matching refs:vg
554 static struct intel_community *byt_get_community(struct intel_pinctrl *vg, in byt_get_community() argument
560 for (i = 0; i < vg->ncommunities; i++) { in byt_get_community()
561 comm = vg->communities + i; in byt_get_community()
569 static void __iomem *byt_gpio_reg(struct intel_pinctrl *vg, unsigned int offset, in byt_gpio_reg() argument
572 struct intel_community *comm = byt_get_community(vg, offset); in byt_gpio_reg()
596 struct intel_pinctrl *vg = pinctrl_dev_get_drvdata(pctldev); in byt_get_groups_count() local
598 return vg->soc->ngroups; in byt_get_groups_count()
604 struct intel_pinctrl *vg = pinctrl_dev_get_drvdata(pctldev); in byt_get_group_name() local
606 return vg->soc->groups[selector].grp.name; in byt_get_group_name()
614 struct intel_pinctrl *vg = pinctrl_dev_get_drvdata(pctldev); in byt_get_group_pins() local
616 *pins = vg->soc->groups[selector].grp.pins; in byt_get_group_pins()
617 *num_pins = vg->soc->groups[selector].grp.npins; in byt_get_group_pins()
630 struct intel_pinctrl *vg = pinctrl_dev_get_drvdata(pctldev); in byt_get_functions_count() local
632 return vg->soc->nfunctions; in byt_get_functions_count()
638 struct intel_pinctrl *vg = pinctrl_dev_get_drvdata(pctldev); in byt_get_function_name() local
640 return vg->soc->functions[selector].func.name; in byt_get_function_name()
648 struct intel_pinctrl *vg = pinctrl_dev_get_drvdata(pctldev); in byt_get_function_groups() local
650 *groups = vg->soc->functions[selector].func.groups; in byt_get_function_groups()
651 *ngroups = vg->soc->functions[selector].func.ngroups; in byt_get_function_groups()
656 static void byt_set_group_simple_mux(struct intel_pinctrl *vg, in byt_set_group_simple_mux() argument
669 padcfg0 = byt_gpio_reg(vg, group.grp.pins[i], BYT_CONF0_REG); in byt_set_group_simple_mux()
671 dev_warn(vg->dev, in byt_set_group_simple_mux()
686 static void byt_set_group_mixed_mux(struct intel_pinctrl *vg, in byt_set_group_mixed_mux() argument
699 padcfg0 = byt_gpio_reg(vg, group.grp.pins[i], BYT_CONF0_REG); in byt_set_group_mixed_mux()
701 dev_warn(vg->dev, in byt_set_group_mixed_mux()
719 struct intel_pinctrl *vg = pinctrl_dev_get_drvdata(pctldev); in byt_set_mux() local
720 const struct intel_function func = vg->soc->functions[func_selector]; in byt_set_mux()
721 const struct intel_pingroup group = vg->soc->groups[group_selector]; in byt_set_mux()
724 byt_set_group_mixed_mux(vg, group, group.modes); in byt_set_mux()
726 byt_set_group_simple_mux(vg, group, BYT_DEFAULT_GPIO_MUX); in byt_set_mux()
728 byt_set_group_simple_mux(vg, group, group.mode); in byt_set_mux()
733 static u32 byt_get_gpio_mux(struct intel_pinctrl *vg, unsigned int offset) in byt_get_gpio_mux() argument
736 if (!strcmp(vg->soc->uid, BYT_SCORE_ACPI_UID) && in byt_get_gpio_mux()
741 if (!strcmp(vg->soc->uid, BYT_SUS_ACPI_UID) && in byt_get_gpio_mux()
748 static void byt_gpio_clear_triggering(struct intel_pinctrl *vg, unsigned int offset) in byt_gpio_clear_triggering() argument
750 void __iomem *reg = byt_gpio_reg(vg, offset, BYT_CONF0_REG); in byt_gpio_clear_triggering()
771 struct intel_pinctrl *vg = pinctrl_dev_get_drvdata(pctl_dev); in byt_gpio_request_enable() local
772 void __iomem *reg = byt_gpio_reg(vg, offset, BYT_CONF0_REG); in byt_gpio_request_enable()
788 gpio_mux = byt_get_gpio_mux(vg, offset); in byt_gpio_request_enable()
794 dev_warn(vg->dev, FW_BUG "pin %u forcibly re-configured as GPIO\n", offset); in byt_gpio_request_enable()
799 pm_runtime_get(vg->dev); in byt_gpio_request_enable()
808 struct intel_pinctrl *vg = pinctrl_dev_get_drvdata(pctl_dev); in byt_gpio_disable_free() local
810 byt_gpio_clear_triggering(vg, offset); in byt_gpio_disable_free()
811 pm_runtime_put(vg->dev); in byt_gpio_disable_free()
814 static void byt_gpio_direct_irq_check(struct intel_pinctrl *vg, in byt_gpio_direct_irq_check() argument
817 void __iomem *conf_reg = byt_gpio_reg(vg, offset, BYT_CONF0_REG); in byt_gpio_direct_irq_check()
826 dev_info_once(vg->dev, "Potential Error: Setting GPIO with direct_irq_en to output"); in byt_gpio_direct_irq_check()
834 struct intel_pinctrl *vg = pinctrl_dev_get_drvdata(pctl_dev); in byt_gpio_set_direction() local
835 void __iomem *val_reg = byt_gpio_reg(vg, offset, BYT_VAL_REG); in byt_gpio_set_direction()
846 byt_gpio_direct_irq_check(vg, offset); in byt_gpio_set_direction()
910 struct intel_pinctrl *vg = pinctrl_dev_get_drvdata(pctl_dev); in byt_pin_config_get() local
912 void __iomem *conf_reg = byt_gpio_reg(vg, offset, BYT_CONF0_REG); in byt_pin_config_get()
913 void __iomem *val_reg = byt_gpio_reg(vg, offset, BYT_VAL_REG); in byt_pin_config_get()
914 void __iomem *db_reg = byt_gpio_reg(vg, offset, BYT_DEBOUNCE_REG); in byt_pin_config_get()
995 struct intel_pinctrl *vg = pinctrl_dev_get_drvdata(pctl_dev); in byt_pin_config_set() local
997 void __iomem *conf_reg = byt_gpio_reg(vg, offset, BYT_CONF0_REG); in byt_pin_config_set()
998 void __iomem *val_reg = byt_gpio_reg(vg, offset, BYT_VAL_REG); in byt_pin_config_set()
999 void __iomem *db_reg = byt_gpio_reg(vg, offset, BYT_DEBOUNCE_REG); in byt_pin_config_set()
1029 dev_warn(vg->dev, in byt_pin_config_set()
1051 dev_warn(vg->dev, in byt_pin_config_set()
1138 struct intel_pinctrl *vg = gpiochip_get_data(chip); in byt_gpio_get() local
1139 void __iomem *reg = byt_gpio_reg(vg, offset, BYT_VAL_REG); in byt_gpio_get()
1152 struct intel_pinctrl *vg = gpiochip_get_data(chip); in byt_gpio_set() local
1153 void __iomem *reg = byt_gpio_reg(vg, offset, BYT_VAL_REG); in byt_gpio_set()
1171 struct intel_pinctrl *vg = gpiochip_get_data(chip); in byt_gpio_get_direction() local
1172 void __iomem *reg = byt_gpio_reg(vg, offset, BYT_VAL_REG); in byt_gpio_get_direction()
1193 struct intel_pinctrl *vg = gpiochip_get_data(chip); in byt_gpio_direction_input() local
1194 void __iomem *val_reg = byt_gpio_reg(vg, offset, BYT_VAL_REG); in byt_gpio_direction_input()
1218 struct intel_pinctrl *vg = gpiochip_get_data(chip); in byt_gpio_direction_output() local
1219 void __iomem *val_reg = byt_gpio_reg(vg, offset, BYT_VAL_REG); in byt_gpio_direction_output()
1225 byt_gpio_direct_irq_check(vg, offset); in byt_gpio_direction_output()
1242 struct intel_pinctrl *vg = gpiochip_get_data(chip); in byt_gpio_dbg_show() local
1246 for (i = 0; i < vg->soc->npins; i++) { in byt_gpio_dbg_show()
1256 pin = vg->soc->pins[i].number; in byt_gpio_dbg_show()
1257 reg = byt_gpio_reg(vg, pin, BYT_CONF0_REG); in byt_gpio_dbg_show()
1267 reg = byt_gpio_reg(vg, pin, BYT_VAL_REG); in byt_gpio_dbg_show()
1277 comm = byt_get_community(vg, pin); in byt_gpio_dbg_show()
1352 struct intel_pinctrl *vg = gpiochip_get_data(gc); in byt_irq_ack() local
1356 reg = byt_gpio_reg(vg, hwirq, BYT_INT_STAT_REG); in byt_irq_ack()
1368 struct intel_pinctrl *vg = gpiochip_get_data(gc); in byt_irq_mask() local
1371 byt_gpio_clear_triggering(vg, hwirq); in byt_irq_mask()
1378 struct intel_pinctrl *vg = gpiochip_get_data(gc); in byt_irq_unmask() local
1386 reg = byt_gpio_reg(vg, hwirq, BYT_CONF0_REG); in byt_irq_unmask()
1418 struct intel_pinctrl *vg = gpiochip_get_data(irq_data_get_irq_chip_data(d)); in byt_irq_type() local
1424 reg = byt_gpio_reg(vg, hwirq, BYT_CONF0_REG); in byt_irq_type()
1468 struct intel_pinctrl *vg = gpiochip_get_data(irq_desc_get_handler_data(desc)); in byt_gpio_irq_handler() local
1475 for (base = 0; base < vg->chip.ngpio; base += 32) { in byt_gpio_irq_handler()
1476 reg = byt_gpio_reg(vg, base, BYT_INT_STAT_REG); in byt_gpio_irq_handler()
1479 dev_warn(vg->dev, in byt_gpio_irq_handler()
1489 generic_handle_domain_irq(vg->chip.irq.domain, base + pin); in byt_gpio_irq_handler()
1494 static bool byt_direct_irq_sanity_check(struct intel_pinctrl *vg, int pin, u32 conf0) in byt_direct_irq_sanity_check() argument
1500 memcpy_fromio(direct_irq_mux, vg->communities->pad_regs + BYT_DIRECT_IRQ_REG, in byt_direct_irq_sanity_check()
1504 dev_warn(vg->dev, FW_BUG "pin %i: direct_irq_en set but no IRQ assigned, clearing\n", pin); in byt_direct_irq_sanity_check()
1510 ioapic_direct_irq_base = (vg->communities->npins == BYT_NGPIO_SCORE) ? 51 : 67; in byt_direct_irq_sanity_check()
1511 dev_dbg(vg->dev, "Pin %i: uses direct IRQ %d (IO-APIC %d)\n", pin, in byt_direct_irq_sanity_check()
1531 dev_warn(vg->dev, FW_BUG "pin %i: direct_irq_en set without trigger (conf0: %xh), clearing\n", in byt_direct_irq_sanity_check()
1543 struct intel_pinctrl *vg = gpiochip_get_data(chip); in byt_init_irq_valid_mask() local
1553 for (i = 0; i < vg->soc->npins; i++) { in byt_init_irq_valid_mask()
1554 unsigned int pin = vg->soc->pins[i].number; in byt_init_irq_valid_mask()
1556 reg = byt_gpio_reg(vg, pin, BYT_CONF0_REG); in byt_init_irq_valid_mask()
1558 dev_warn(vg->dev, in byt_init_irq_valid_mask()
1566 if (byt_direct_irq_sanity_check(vg, i, value)) { in byt_init_irq_valid_mask()
1573 } else if ((value & BYT_PIN_MUX) == byt_get_gpio_mux(vg, i)) { in byt_init_irq_valid_mask()
1574 byt_gpio_clear_triggering(vg, i); in byt_init_irq_valid_mask()
1575 dev_dbg(vg->dev, "disabling GPIO %d\n", i); in byt_init_irq_valid_mask()
1582 struct intel_pinctrl *vg = gpiochip_get_data(chip); in byt_gpio_irq_init_hw() local
1587 for (base = 0; base < vg->soc->npins; base += 32) { in byt_gpio_irq_init_hw()
1588 reg = byt_gpio_reg(vg, base, BYT_INT_STAT_REG); in byt_gpio_irq_init_hw()
1591 dev_warn(vg->dev, in byt_gpio_irq_init_hw()
1602 dev_err(vg->dev, in byt_gpio_irq_init_hw()
1612 struct intel_pinctrl *vg = gpiochip_get_data(chip); in byt_gpio_add_pin_ranges() local
1613 struct device *dev = vg->dev; in byt_gpio_add_pin_ranges()
1616 ret = gpiochip_add_pin_range(chip, dev_name(dev), 0, 0, vg->soc->npins); in byt_gpio_add_pin_ranges()
1623 static int byt_gpio_probe(struct intel_pinctrl *vg) in byt_gpio_probe() argument
1625 struct platform_device *pdev = to_platform_device(vg->dev); in byt_gpio_probe()
1630 vg->chip = byt_gpio_chip; in byt_gpio_probe()
1631 gc = &vg->chip; in byt_gpio_probe()
1632 gc->label = dev_name(vg->dev); in byt_gpio_probe()
1636 gc->parent = vg->dev; in byt_gpio_probe()
1637 gc->ngpio = vg->soc->npins; in byt_gpio_probe()
1640 vg->context.pads = devm_kcalloc(vg->dev, gc->ngpio, sizeof(*vg->context.pads), in byt_gpio_probe()
1642 if (!vg->context.pads) in byt_gpio_probe()
1657 girq->parents = devm_kcalloc(vg->dev, girq->num_parents, in byt_gpio_probe()
1666 ret = devm_gpiochip_add_data(vg->dev, gc, vg); in byt_gpio_probe()
1668 dev_err(vg->dev, "failed adding byt-gpio chip\n"); in byt_gpio_probe()
1675 static int byt_set_soc_data(struct intel_pinctrl *vg, in byt_set_soc_data() argument
1678 struct platform_device *pdev = to_platform_device(vg->dev); in byt_set_soc_data()
1681 vg->soc = soc; in byt_set_soc_data()
1683 vg->ncommunities = vg->soc->ncommunities; in byt_set_soc_data()
1684 vg->communities = devm_kcalloc(vg->dev, vg->ncommunities, in byt_set_soc_data()
1685 sizeof(*vg->communities), GFP_KERNEL); in byt_set_soc_data()
1686 if (!vg->communities) in byt_set_soc_data()
1689 for (i = 0; i < vg->soc->ncommunities; i++) { in byt_set_soc_data()
1690 struct intel_community *comm = vg->communities + i; in byt_set_soc_data()
1692 *comm = vg->soc->communities[i]; in byt_set_soc_data()
1712 struct intel_pinctrl *vg; in byt_pinctrl_probe() local
1719 vg = devm_kzalloc(dev, sizeof(*vg), GFP_KERNEL); in byt_pinctrl_probe()
1720 if (!vg) in byt_pinctrl_probe()
1723 vg->dev = dev; in byt_pinctrl_probe()
1724 ret = byt_set_soc_data(vg, soc_data); in byt_pinctrl_probe()
1730 vg->pctldesc = byt_pinctrl_desc; in byt_pinctrl_probe()
1731 vg->pctldesc.name = dev_name(dev); in byt_pinctrl_probe()
1732 vg->pctldesc.pins = vg->soc->pins; in byt_pinctrl_probe()
1733 vg->pctldesc.npins = vg->soc->npins; in byt_pinctrl_probe()
1735 vg->pctldev = devm_pinctrl_register(dev, &vg->pctldesc, vg); in byt_pinctrl_probe()
1736 if (IS_ERR(vg->pctldev)) { in byt_pinctrl_probe()
1738 return PTR_ERR(vg->pctldev); in byt_pinctrl_probe()
1741 ret = byt_gpio_probe(vg); in byt_pinctrl_probe()
1745 platform_set_drvdata(pdev, vg); in byt_pinctrl_probe()
1754 struct intel_pinctrl *vg = dev_get_drvdata(dev); in byt_gpio_suspend() local
1760 for (i = 0; i < vg->soc->npins; i++) { in byt_gpio_suspend()
1763 unsigned int pin = vg->soc->pins[i].number; in byt_gpio_suspend()
1765 reg = byt_gpio_reg(vg, pin, BYT_CONF0_REG); in byt_gpio_suspend()
1767 dev_warn(vg->dev, in byt_gpio_suspend()
1773 vg->context.pads[i].conf0 = value; in byt_gpio_suspend()
1775 reg = byt_gpio_reg(vg, pin, BYT_VAL_REG); in byt_gpio_suspend()
1777 vg->context.pads[i].val = value; in byt_gpio_suspend()
1786 struct intel_pinctrl *vg = dev_get_drvdata(dev); in byt_gpio_resume() local
1792 for (i = 0; i < vg->soc->npins; i++) { in byt_gpio_resume()
1795 unsigned int pin = vg->soc->pins[i].number; in byt_gpio_resume()
1797 reg = byt_gpio_reg(vg, pin, BYT_CONF0_REG); in byt_gpio_resume()
1799 dev_warn(vg->dev, in byt_gpio_resume()
1806 vg->context.pads[i].conf0) { in byt_gpio_resume()
1808 value |= vg->context.pads[i].conf0; in byt_gpio_resume()
1813 reg = byt_gpio_reg(vg, pin, BYT_VAL_REG); in byt_gpio_resume()
1816 vg->context.pads[i].val) { in byt_gpio_resume()
1820 v |= vg->context.pads[i].val; in byt_gpio_resume()