hcg 32 drivers/gpio/gpio-creg-snps.c struct creg_gpio *hcg = gpiochip_get_data(gc); hcg 33 drivers/gpio/gpio-creg-snps.c const struct creg_layout *layout = hcg->layout; hcg 38 drivers/gpio/gpio-creg-snps.c value = val ? hcg->layout->on[offset] : hcg->layout->off[offset]; hcg 44 drivers/gpio/gpio-creg-snps.c spin_lock_irqsave(&hcg->lock, flags); hcg 45 drivers/gpio/gpio-creg-snps.c reg = readl(hcg->regs); hcg 48 drivers/gpio/gpio-creg-snps.c writel(reg, hcg->regs); hcg 49 drivers/gpio/gpio-creg-snps.c spin_unlock_irqrestore(&hcg->lock, flags); hcg 59 drivers/gpio/gpio-creg-snps.c static int creg_gpio_validate_pg(struct device *dev, struct creg_gpio *hcg, hcg 62 drivers/gpio/gpio-creg-snps.c const struct creg_layout *layout = hcg->layout; hcg 81 drivers/gpio/gpio-creg-snps.c static int creg_gpio_validate(struct device *dev, struct creg_gpio *hcg, hcg 87 drivers/gpio/gpio-creg-snps.c if (hcg->layout->ngpio < 1 || hcg->layout->ngpio > MAX_GPIO) hcg 90 drivers/gpio/gpio-creg-snps.c if (ngpios < 1 || ngpios > hcg->layout->ngpio) { hcg 91 drivers/gpio/gpio-creg-snps.c dev_err(dev, "ngpios must be in [1:%u]\n", hcg->layout->ngpio); hcg 95 drivers/gpio/gpio-creg-snps.c for (i = 0; i < hcg->layout->ngpio; i++) { hcg 96 drivers/gpio/gpio-creg-snps.c if (creg_gpio_validate_pg(dev, hcg, i)) hcg 99 drivers/gpio/gpio-creg-snps.c reg_len += hcg->layout->shift[i] + hcg->layout->bit_per_gpio[i]; hcg 139 drivers/gpio/gpio-creg-snps.c struct creg_gpio *hcg; hcg 143 drivers/gpio/gpio-creg-snps.c hcg = devm_kzalloc(dev, sizeof(struct creg_gpio), GFP_KERNEL); hcg 144 drivers/gpio/gpio-creg-snps.c if (!hcg) hcg 147 drivers/gpio/gpio-creg-snps.c hcg->regs = devm_platform_ioremap_resource(pdev, 0); hcg 148 drivers/gpio/gpio-creg-snps.c if (IS_ERR(hcg->regs)) hcg 149 drivers/gpio/gpio-creg-snps.c return PTR_ERR(hcg->regs); hcg 152 drivers/gpio/gpio-creg-snps.c hcg->layout = match->data; hcg 153 drivers/gpio/gpio-creg-snps.c if (!hcg->layout) hcg 160 drivers/gpio/gpio-creg-snps.c ret = creg_gpio_validate(dev, hcg, ngpios); hcg 164 drivers/gpio/gpio-creg-snps.c spin_lock_init(&hcg->lock); hcg 166 drivers/gpio/gpio-creg-snps.c hcg->gc.label = dev_name(dev); hcg 167 drivers/gpio/gpio-creg-snps.c hcg->gc.base = -1; hcg 168 drivers/gpio/gpio-creg-snps.c hcg->gc.ngpio = ngpios; hcg 169 drivers/gpio/gpio-creg-snps.c hcg->gc.set = creg_gpio_set; hcg 170 drivers/gpio/gpio-creg-snps.c hcg->gc.direction_output = creg_gpio_dir_out; hcg 171 drivers/gpio/gpio-creg-snps.c hcg->gc.of_node = dev->of_node; hcg 173 drivers/gpio/gpio-creg-snps.c ret = devm_gpiochip_add_data(dev, &hcg->gc, hcg);