Lines Matching refs:hisi_gpio

35 struct hisi_gpio {  struct
46 struct hisi_gpio *hisi_gpio = in hisi_gpio_read_reg() argument
47 container_of(chip, struct hisi_gpio, chip); in hisi_gpio_read_reg()
48 void __iomem *reg = hisi_gpio->reg_base + off; in hisi_gpio_read_reg()
56 struct hisi_gpio *hisi_gpio = in hisi_gpio_write_reg() local
57 container_of(chip, struct hisi_gpio, chip); in hisi_gpio_write_reg()
58 void __iomem *reg = hisi_gpio->reg_base + off; in hisi_gpio_write_reg()
182 struct hisi_gpio *hisi_gpio = irq_desc_get_handler_data(desc); in hisi_gpio_irq_handler() local
183 unsigned long irq_msk = hisi_gpio_read_reg(&hisi_gpio->chip, in hisi_gpio_irq_handler()
190 generic_handle_domain_irq(hisi_gpio->chip.irq.domain, in hisi_gpio_irq_handler()
207 static void hisi_gpio_init_irq(struct hisi_gpio *hisi_gpio) in hisi_gpio_init_irq() argument
209 struct gpio_chip *chip = &hisi_gpio->chip; in hisi_gpio_init_irq()
215 girq_chip->parents = &hisi_gpio->irq; in hisi_gpio_init_irq()
217 girq_chip->parent_handler_data = hisi_gpio; in hisi_gpio_init_irq()
236 struct hisi_gpio *hisi_gpio) in hisi_gpio_get_pdata() argument
245 &hisi_gpio->line_num)) { in hisi_gpio_get_pdata()
249 hisi_gpio->line_num = HISI_GPIO_LINE_NUM_MAX; in hisi_gpio_get_pdata()
252 if (WARN_ON(hisi_gpio->line_num > HISI_GPIO_LINE_NUM_MAX)) in hisi_gpio_get_pdata()
253 hisi_gpio->line_num = HISI_GPIO_LINE_NUM_MAX; in hisi_gpio_get_pdata()
255 hisi_gpio->irq = platform_get_irq(pdev, idx); in hisi_gpio_get_pdata()
259 hisi_gpio->line_num); in hisi_gpio_get_pdata()
268 struct hisi_gpio *hisi_gpio; in hisi_gpio_probe() local
280 hisi_gpio = devm_kzalloc(dev, sizeof(*hisi_gpio), GFP_KERNEL); in hisi_gpio_probe()
281 if (!hisi_gpio) in hisi_gpio_probe()
284 hisi_gpio->reg_base = devm_platform_ioremap_resource(pdev, 0); in hisi_gpio_probe()
285 if (IS_ERR(hisi_gpio->reg_base)) in hisi_gpio_probe()
286 return PTR_ERR(hisi_gpio->reg_base); in hisi_gpio_probe()
288 hisi_gpio_get_pdata(dev, hisi_gpio); in hisi_gpio_probe()
290 hisi_gpio->dev = dev; in hisi_gpio_probe()
292 ret = bgpio_init(&hisi_gpio->chip, hisi_gpio->dev, 0x4, in hisi_gpio_probe()
293 hisi_gpio->reg_base + HISI_GPIO_EXT_PORT_WX, in hisi_gpio_probe()
294 hisi_gpio->reg_base + HISI_GPIO_SWPORT_DR_SET_WX, in hisi_gpio_probe()
295 hisi_gpio->reg_base + HISI_GPIO_SWPORT_DR_CLR_WX, in hisi_gpio_probe()
296 hisi_gpio->reg_base + HISI_GPIO_SWPORT_DDR_SET_WX, in hisi_gpio_probe()
297 hisi_gpio->reg_base + HISI_GPIO_SWPORT_DDR_CLR_WX, in hisi_gpio_probe()
304 hisi_gpio->chip.set_config = hisi_gpio_set_config; in hisi_gpio_probe()
305 hisi_gpio->chip.ngpio = hisi_gpio->line_num; in hisi_gpio_probe()
306 hisi_gpio->chip.bgpio_dir_unreadable = 1; in hisi_gpio_probe()
307 hisi_gpio->chip.base = -1; in hisi_gpio_probe()
309 if (hisi_gpio->irq > 0) in hisi_gpio_probe()
310 hisi_gpio_init_irq(hisi_gpio); in hisi_gpio_probe()
312 ret = devm_gpiochip_add_data(dev, &hisi_gpio->chip, hisi_gpio); in hisi_gpio_probe()