tgi 30 drivers/gpio/gpio-tegra.c #define GPIO_REG(tgi, x) (GPIO_BANK(x) * tgi->soc->bank_stride + \ tgi 76 drivers/gpio/gpio-tegra.c struct tegra_gpio_info *tgi; tgi 96 drivers/gpio/gpio-tegra.c static inline void tegra_gpio_writel(struct tegra_gpio_info *tgi, tgi 99 drivers/gpio/gpio-tegra.c __raw_writel(val, tgi->regs + reg); tgi 102 drivers/gpio/gpio-tegra.c static inline u32 tegra_gpio_readl(struct tegra_gpio_info *tgi, u32 reg) tgi 104 drivers/gpio/gpio-tegra.c return __raw_readl(tgi->regs + reg); tgi 113 drivers/gpio/gpio-tegra.c static void tegra_gpio_mask_write(struct tegra_gpio_info *tgi, u32 reg, tgi 121 drivers/gpio/gpio-tegra.c tegra_gpio_writel(tgi, val, reg); tgi 124 drivers/gpio/gpio-tegra.c static void tegra_gpio_enable(struct tegra_gpio_info *tgi, unsigned int gpio) tgi 126 drivers/gpio/gpio-tegra.c tegra_gpio_mask_write(tgi, GPIO_MSK_CNF(tgi, gpio), gpio, 1); tgi 129 drivers/gpio/gpio-tegra.c static void tegra_gpio_disable(struct tegra_gpio_info *tgi, unsigned int gpio) tgi 131 drivers/gpio/gpio-tegra.c tegra_gpio_mask_write(tgi, GPIO_MSK_CNF(tgi, gpio), gpio, 0); tgi 141 drivers/gpio/gpio-tegra.c struct tegra_gpio_info *tgi = gpiochip_get_data(chip); tgi 144 drivers/gpio/gpio-tegra.c tegra_gpio_disable(tgi, offset); tgi 150 drivers/gpio/gpio-tegra.c struct tegra_gpio_info *tgi = gpiochip_get_data(chip); tgi 152 drivers/gpio/gpio-tegra.c tegra_gpio_mask_write(tgi, GPIO_MSK_OUT(tgi, offset), offset, value); tgi 157 drivers/gpio/gpio-tegra.c struct tegra_gpio_info *tgi = gpiochip_get_data(chip); tgi 161 drivers/gpio/gpio-tegra.c if (tegra_gpio_readl(tgi, GPIO_OE(tgi, offset)) & bval) tgi 162 drivers/gpio/gpio-tegra.c return !!(tegra_gpio_readl(tgi, GPIO_OUT(tgi, offset)) & bval); tgi 164 drivers/gpio/gpio-tegra.c return !!(tegra_gpio_readl(tgi, GPIO_IN(tgi, offset)) & bval); tgi 170 drivers/gpio/gpio-tegra.c struct tegra_gpio_info *tgi = gpiochip_get_data(chip); tgi 173 drivers/gpio/gpio-tegra.c tegra_gpio_mask_write(tgi, GPIO_MSK_OE(tgi, offset), offset, 0); tgi 174 drivers/gpio/gpio-tegra.c tegra_gpio_enable(tgi, offset); tgi 178 drivers/gpio/gpio-tegra.c dev_err(tgi->dev, tgi 189 drivers/gpio/gpio-tegra.c struct tegra_gpio_info *tgi = gpiochip_get_data(chip); tgi 193 drivers/gpio/gpio-tegra.c tegra_gpio_mask_write(tgi, GPIO_MSK_OE(tgi, offset), offset, 1); tgi 194 drivers/gpio/gpio-tegra.c tegra_gpio_enable(tgi, offset); tgi 198 drivers/gpio/gpio-tegra.c dev_err(tgi->dev, tgi 208 drivers/gpio/gpio-tegra.c struct tegra_gpio_info *tgi = gpiochip_get_data(chip); tgi 212 drivers/gpio/gpio-tegra.c cnf = tegra_gpio_readl(tgi, GPIO_CNF(tgi, offset)); tgi 216 drivers/gpio/gpio-tegra.c oe = tegra_gpio_readl(tgi, GPIO_OE(tgi, offset)); tgi 224 drivers/gpio/gpio-tegra.c struct tegra_gpio_info *tgi = gpiochip_get_data(chip); tgi 225 drivers/gpio/gpio-tegra.c struct tegra_gpio_bank *bank = &tgi->bank_info[GPIO_BANK(offset)]; tgi 231 drivers/gpio/gpio-tegra.c tegra_gpio_mask_write(tgi, GPIO_MSK_DBC_EN(tgi, offset), tgi 244 drivers/gpio/gpio-tegra.c tegra_gpio_writel(tgi, debounce_ms, GPIO_DBC_CNT(tgi, offset)); tgi 249 drivers/gpio/gpio-tegra.c tegra_gpio_mask_write(tgi, GPIO_MSK_DBC_EN(tgi, offset), offset, 1); tgi 268 drivers/gpio/gpio-tegra.c struct tegra_gpio_info *tgi = gpiochip_get_data(chip); tgi 270 drivers/gpio/gpio-tegra.c return irq_find_mapping(tgi->irq_domain, offset); tgi 276 drivers/gpio/gpio-tegra.c struct tegra_gpio_info *tgi = bank->tgi; tgi 279 drivers/gpio/gpio-tegra.c tegra_gpio_writel(tgi, 1 << GPIO_BIT(gpio), GPIO_INT_CLR(tgi, gpio)); tgi 285 drivers/gpio/gpio-tegra.c struct tegra_gpio_info *tgi = bank->tgi; tgi 288 drivers/gpio/gpio-tegra.c tegra_gpio_mask_write(tgi, GPIO_MSK_INT_ENB(tgi, gpio), gpio, 0); tgi 294 drivers/gpio/gpio-tegra.c struct tegra_gpio_info *tgi = bank->tgi; tgi 297 drivers/gpio/gpio-tegra.c tegra_gpio_mask_write(tgi, GPIO_MSK_INT_ENB(tgi, gpio), gpio, 1); tgi 304 drivers/gpio/gpio-tegra.c struct tegra_gpio_info *tgi = bank->tgi; tgi 336 drivers/gpio/gpio-tegra.c val = tegra_gpio_readl(tgi, GPIO_INT_LVL(tgi, gpio)); tgi 339 drivers/gpio/gpio-tegra.c tegra_gpio_writel(tgi, val, GPIO_INT_LVL(tgi, gpio)); tgi 343 drivers/gpio/gpio-tegra.c tegra_gpio_mask_write(tgi, GPIO_MSK_OE(tgi, gpio), gpio, 0); tgi 344 drivers/gpio/gpio-tegra.c tegra_gpio_enable(tgi, gpio); tgi 346 drivers/gpio/gpio-tegra.c ret = gpiochip_lock_as_irq(&tgi->gc, gpio); tgi 348 drivers/gpio/gpio-tegra.c dev_err(tgi->dev, tgi 350 drivers/gpio/gpio-tegra.c tegra_gpio_disable(tgi, gpio); tgi 365 drivers/gpio/gpio-tegra.c struct tegra_gpio_info *tgi = bank->tgi; tgi 369 drivers/gpio/gpio-tegra.c gpiochip_unlock_as_irq(&tgi->gc, gpio); tgi 380 drivers/gpio/gpio-tegra.c struct tegra_gpio_info *tgi = bank->tgi; tgi 386 drivers/gpio/gpio-tegra.c sta = tegra_gpio_readl(tgi, GPIO_INT_STA(tgi, gpio)) & tgi 387 drivers/gpio/gpio-tegra.c tegra_gpio_readl(tgi, GPIO_INT_ENB(tgi, gpio)); tgi 388 drivers/gpio/gpio-tegra.c lvl = tegra_gpio_readl(tgi, GPIO_INT_LVL(tgi, gpio)); tgi 391 drivers/gpio/gpio-tegra.c tegra_gpio_writel(tgi, 1 << pin, tgi 392 drivers/gpio/gpio-tegra.c GPIO_INT_CLR(tgi, gpio)); tgi 403 drivers/gpio/gpio-tegra.c generic_handle_irq(irq_find_mapping(tgi->irq_domain, tgi 416 drivers/gpio/gpio-tegra.c struct tegra_gpio_info *tgi = dev_get_drvdata(dev); tgi 422 drivers/gpio/gpio-tegra.c for (b = 0; b < tgi->bank_count; b++) { tgi 423 drivers/gpio/gpio-tegra.c struct tegra_gpio_bank *bank = &tgi->bank_info[b]; tgi 428 drivers/gpio/gpio-tegra.c tegra_gpio_writel(tgi, bank->cnf[p], tgi 429 drivers/gpio/gpio-tegra.c GPIO_CNF(tgi, gpio)); tgi 431 drivers/gpio/gpio-tegra.c if (tgi->soc->debounce_supported) { tgi 432 drivers/gpio/gpio-tegra.c tegra_gpio_writel(tgi, bank->dbc_cnt[p], tgi 433 drivers/gpio/gpio-tegra.c GPIO_DBC_CNT(tgi, gpio)); tgi 434 drivers/gpio/gpio-tegra.c tegra_gpio_writel(tgi, bank->dbc_enb[p], tgi 435 drivers/gpio/gpio-tegra.c GPIO_MSK_DBC_EN(tgi, gpio)); tgi 438 drivers/gpio/gpio-tegra.c tegra_gpio_writel(tgi, bank->out[p], tgi 439 drivers/gpio/gpio-tegra.c GPIO_OUT(tgi, gpio)); tgi 440 drivers/gpio/gpio-tegra.c tegra_gpio_writel(tgi, bank->oe[p], tgi 441 drivers/gpio/gpio-tegra.c GPIO_OE(tgi, gpio)); tgi 442 drivers/gpio/gpio-tegra.c tegra_gpio_writel(tgi, bank->int_lvl[p], tgi 443 drivers/gpio/gpio-tegra.c GPIO_INT_LVL(tgi, gpio)); tgi 444 drivers/gpio/gpio-tegra.c tegra_gpio_writel(tgi, bank->int_enb[p], tgi 445 drivers/gpio/gpio-tegra.c GPIO_INT_ENB(tgi, gpio)); tgi 455 drivers/gpio/gpio-tegra.c struct tegra_gpio_info *tgi = dev_get_drvdata(dev); tgi 460 drivers/gpio/gpio-tegra.c for (b = 0; b < tgi->bank_count; b++) { tgi 461 drivers/gpio/gpio-tegra.c struct tegra_gpio_bank *bank = &tgi->bank_info[b]; tgi 466 drivers/gpio/gpio-tegra.c bank->cnf[p] = tegra_gpio_readl(tgi, tgi 467 drivers/gpio/gpio-tegra.c GPIO_CNF(tgi, gpio)); tgi 468 drivers/gpio/gpio-tegra.c bank->out[p] = tegra_gpio_readl(tgi, tgi 469 drivers/gpio/gpio-tegra.c GPIO_OUT(tgi, gpio)); tgi 470 drivers/gpio/gpio-tegra.c bank->oe[p] = tegra_gpio_readl(tgi, tgi 471 drivers/gpio/gpio-tegra.c GPIO_OE(tgi, gpio)); tgi 472 drivers/gpio/gpio-tegra.c if (tgi->soc->debounce_supported) { tgi 473 drivers/gpio/gpio-tegra.c bank->dbc_enb[p] = tegra_gpio_readl(tgi, tgi 474 drivers/gpio/gpio-tegra.c GPIO_MSK_DBC_EN(tgi, gpio)); tgi 479 drivers/gpio/gpio-tegra.c bank->int_enb[p] = tegra_gpio_readl(tgi, tgi 480 drivers/gpio/gpio-tegra.c GPIO_INT_ENB(tgi, gpio)); tgi 481 drivers/gpio/gpio-tegra.c bank->int_lvl[p] = tegra_gpio_readl(tgi, tgi 482 drivers/gpio/gpio-tegra.c GPIO_INT_LVL(tgi, gpio)); tgi 485 drivers/gpio/gpio-tegra.c tegra_gpio_writel(tgi, bank->wake_enb[p], tgi 486 drivers/gpio/gpio-tegra.c GPIO_INT_ENB(tgi, gpio)); tgi 519 drivers/gpio/gpio-tegra.c struct tegra_gpio_info *tgi = s->private; tgi 522 drivers/gpio/gpio-tegra.c for (i = 0; i < tgi->bank_count; i++) { tgi 529 drivers/gpio/gpio-tegra.c tegra_gpio_readl(tgi, GPIO_CNF(tgi, gpio)), tgi 530 drivers/gpio/gpio-tegra.c tegra_gpio_readl(tgi, GPIO_OE(tgi, gpio)), tgi 531 drivers/gpio/gpio-tegra.c tegra_gpio_readl(tgi, GPIO_OUT(tgi, gpio)), tgi 532 drivers/gpio/gpio-tegra.c tegra_gpio_readl(tgi, GPIO_IN(tgi, gpio)), tgi 533 drivers/gpio/gpio-tegra.c tegra_gpio_readl(tgi, GPIO_INT_STA(tgi, gpio)), tgi 534 drivers/gpio/gpio-tegra.c tegra_gpio_readl(tgi, GPIO_INT_ENB(tgi, gpio)), tgi 535 drivers/gpio/gpio-tegra.c tegra_gpio_readl(tgi, GPIO_INT_LVL(tgi, gpio))); tgi 543 drivers/gpio/gpio-tegra.c static void tegra_gpio_debuginit(struct tegra_gpio_info *tgi) tgi 545 drivers/gpio/gpio-tegra.c debugfs_create_file("tegra_gpio", 0444, NULL, tgi, tgi 551 drivers/gpio/gpio-tegra.c static inline void tegra_gpio_debuginit(struct tegra_gpio_info *tgi) tgi 563 drivers/gpio/gpio-tegra.c struct tegra_gpio_info *tgi; tgi 568 drivers/gpio/gpio-tegra.c tgi = devm_kzalloc(&pdev->dev, sizeof(*tgi), GFP_KERNEL); tgi 569 drivers/gpio/gpio-tegra.c if (!tgi) tgi 572 drivers/gpio/gpio-tegra.c tgi->soc = of_device_get_match_data(&pdev->dev); tgi 573 drivers/gpio/gpio-tegra.c tgi->dev = &pdev->dev; tgi 579 drivers/gpio/gpio-tegra.c tgi->bank_count = ret; tgi 581 drivers/gpio/gpio-tegra.c if (!tgi->bank_count) { tgi 586 drivers/gpio/gpio-tegra.c tgi->gc.label = "tegra-gpio"; tgi 587 drivers/gpio/gpio-tegra.c tgi->gc.request = tegra_gpio_request; tgi 588 drivers/gpio/gpio-tegra.c tgi->gc.free = tegra_gpio_free; tgi 589 drivers/gpio/gpio-tegra.c tgi->gc.direction_input = tegra_gpio_direction_input; tgi 590 drivers/gpio/gpio-tegra.c tgi->gc.get = tegra_gpio_get; tgi 591 drivers/gpio/gpio-tegra.c tgi->gc.direction_output = tegra_gpio_direction_output; tgi 592 drivers/gpio/gpio-tegra.c tgi->gc.set = tegra_gpio_set; tgi 593 drivers/gpio/gpio-tegra.c tgi->gc.get_direction = tegra_gpio_get_direction; tgi 594 drivers/gpio/gpio-tegra.c tgi->gc.to_irq = tegra_gpio_to_irq; tgi 595 drivers/gpio/gpio-tegra.c tgi->gc.base = 0; tgi 596 drivers/gpio/gpio-tegra.c tgi->gc.ngpio = tgi->bank_count * 32; tgi 597 drivers/gpio/gpio-tegra.c tgi->gc.parent = &pdev->dev; tgi 598 drivers/gpio/gpio-tegra.c tgi->gc.of_node = pdev->dev.of_node; tgi 600 drivers/gpio/gpio-tegra.c tgi->ic.name = "GPIO"; tgi 601 drivers/gpio/gpio-tegra.c tgi->ic.irq_ack = tegra_gpio_irq_ack; tgi 602 drivers/gpio/gpio-tegra.c tgi->ic.irq_mask = tegra_gpio_irq_mask; tgi 603 drivers/gpio/gpio-tegra.c tgi->ic.irq_unmask = tegra_gpio_irq_unmask; tgi 604 drivers/gpio/gpio-tegra.c tgi->ic.irq_set_type = tegra_gpio_irq_set_type; tgi 605 drivers/gpio/gpio-tegra.c tgi->ic.irq_shutdown = tegra_gpio_irq_shutdown; tgi 607 drivers/gpio/gpio-tegra.c tgi->ic.irq_set_wake = tegra_gpio_irq_set_wake; tgi 610 drivers/gpio/gpio-tegra.c platform_set_drvdata(pdev, tgi); tgi 612 drivers/gpio/gpio-tegra.c if (tgi->soc->debounce_supported) tgi 613 drivers/gpio/gpio-tegra.c tgi->gc.set_config = tegra_gpio_set_config; tgi 615 drivers/gpio/gpio-tegra.c tgi->bank_info = devm_kcalloc(&pdev->dev, tgi->bank_count, tgi 616 drivers/gpio/gpio-tegra.c sizeof(*tgi->bank_info), GFP_KERNEL); tgi 617 drivers/gpio/gpio-tegra.c if (!tgi->bank_info) tgi 620 drivers/gpio/gpio-tegra.c tgi->irq_domain = irq_domain_add_linear(pdev->dev.of_node, tgi 621 drivers/gpio/gpio-tegra.c tgi->gc.ngpio, tgi 623 drivers/gpio/gpio-tegra.c if (!tgi->irq_domain) tgi 626 drivers/gpio/gpio-tegra.c for (i = 0; i < tgi->bank_count; i++) { tgi 631 drivers/gpio/gpio-tegra.c bank = &tgi->bank_info[i]; tgi 634 drivers/gpio/gpio-tegra.c bank->tgi = tgi; tgi 637 drivers/gpio/gpio-tegra.c tgi->regs = devm_platform_ioremap_resource(pdev, 0); tgi 638 drivers/gpio/gpio-tegra.c if (IS_ERR(tgi->regs)) tgi 639 drivers/gpio/gpio-tegra.c return PTR_ERR(tgi->regs); tgi 641 drivers/gpio/gpio-tegra.c for (i = 0; i < tgi->bank_count; i++) { tgi 645 drivers/gpio/gpio-tegra.c tegra_gpio_writel(tgi, 0x00, GPIO_INT_ENB(tgi, gpio)); tgi 649 drivers/gpio/gpio-tegra.c ret = devm_gpiochip_add_data(&pdev->dev, &tgi->gc, tgi); tgi 651 drivers/gpio/gpio-tegra.c irq_domain_remove(tgi->irq_domain); tgi 655 drivers/gpio/gpio-tegra.c for (gpio = 0; gpio < tgi->gc.ngpio; gpio++) { tgi 656 drivers/gpio/gpio-tegra.c int irq = irq_create_mapping(tgi->irq_domain, gpio); tgi 659 drivers/gpio/gpio-tegra.c bank = &tgi->bank_info[GPIO_BANK(gpio)]; tgi 662 drivers/gpio/gpio-tegra.c irq_set_chip_and_handler(irq, &tgi->ic, handle_simple_irq); tgi 665 drivers/gpio/gpio-tegra.c for (i = 0; i < tgi->bank_count; i++) { tgi 666 drivers/gpio/gpio-tegra.c bank = &tgi->bank_info[i]; tgi 677 drivers/gpio/gpio-tegra.c tegra_gpio_debuginit(tgi); tgi 95 net/netfilter/xt_TPROXY.c const struct xt_tproxy_target_info *tgi = par->targinfo; tgi 97 net/netfilter/xt_TPROXY.c return tproxy_tg4(xt_net(par), skb, tgi->laddr, tgi->lport, tgi 98 net/netfilter/xt_TPROXY.c tgi->mark_mask, tgi->mark_value); tgi 104 net/netfilter/xt_TPROXY.c const struct xt_tproxy_target_info_v1 *tgi = par->targinfo; tgi 106 net/netfilter/xt_TPROXY.c return tproxy_tg4(xt_net(par), skb, tgi->laddr.ip, tgi->lport, tgi 107 net/netfilter/xt_TPROXY.c tgi->mark_mask, tgi->mark_value); tgi 116 net/netfilter/xt_TPROXY.c const struct xt_tproxy_target_info_v1 *tgi = par->targinfo; tgi 145 net/netfilter/xt_TPROXY.c laddr = nf_tproxy_laddr6(skb, &tgi->laddr.in6, &iph->daddr); tgi 146 net/netfilter/xt_TPROXY.c lport = tgi->lport ? tgi->lport : hp->dest; tgi 150 net/netfilter/xt_TPROXY.c const struct xt_tproxy_target_info_v1 *tgi = par->targinfo; tgi 154 net/netfilter/xt_TPROXY.c &tgi->laddr.in6, tgi 155 net/netfilter/xt_TPROXY.c tgi->lport, tgi 170 net/netfilter/xt_TPROXY.c skb->mark = (skb->mark & ~tgi->mark_mask) ^ tgi->mark_value;