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);