Lines Matching refs:mpc8xxx_gc

65 	struct mpc8xxx_gpio_chip *mpc8xxx_gc = gpiochip_get_data(gc);  in mpc8572_gpio_get()  local
68 out_mask = gc->read_reg(mpc8xxx_gc->regs + GPIO_DIR); in mpc8572_gpio_get()
69 val = gc->read_reg(mpc8xxx_gc->regs + GPIO_DAT) & ~out_mask; in mpc8572_gpio_get()
78 struct mpc8xxx_gpio_chip *mpc8xxx_gc = gpiochip_get_data(gc); in mpc5121_gpio_dir_out() local
83 return mpc8xxx_gc->direction_output(gc, gpio, val); in mpc5121_gpio_dir_out()
89 struct mpc8xxx_gpio_chip *mpc8xxx_gc = gpiochip_get_data(gc); in mpc5125_gpio_dir_out() local
94 return mpc8xxx_gc->direction_output(gc, gpio, val); in mpc5125_gpio_dir_out()
99 struct mpc8xxx_gpio_chip *mpc8xxx_gc = gpiochip_get_data(gc); in mpc8xxx_gpio_to_irq() local
101 if (mpc8xxx_gc->irq && offset < MPC8XXX_GPIO_PINS) in mpc8xxx_gpio_to_irq()
102 return irq_create_mapping(mpc8xxx_gc->irq, offset); in mpc8xxx_gpio_to_irq()
109 struct mpc8xxx_gpio_chip *mpc8xxx_gc = data; in mpc8xxx_gpio_irq_cascade() local
110 struct gpio_chip *gc = &mpc8xxx_gc->gc; in mpc8xxx_gpio_irq_cascade()
114 mask = gc->read_reg(mpc8xxx_gc->regs + GPIO_IER) in mpc8xxx_gpio_irq_cascade()
115 & gc->read_reg(mpc8xxx_gc->regs + GPIO_IMR); in mpc8xxx_gpio_irq_cascade()
117 generic_handle_domain_irq(mpc8xxx_gc->irq, 31 - i); in mpc8xxx_gpio_irq_cascade()
124 struct mpc8xxx_gpio_chip *mpc8xxx_gc = irq_data_get_irq_chip_data(d); in mpc8xxx_irq_unmask() local
125 struct gpio_chip *gc = &mpc8xxx_gc->gc; in mpc8xxx_irq_unmask()
128 raw_spin_lock_irqsave(&mpc8xxx_gc->lock, flags); in mpc8xxx_irq_unmask()
130 gc->write_reg(mpc8xxx_gc->regs + GPIO_IMR, in mpc8xxx_irq_unmask()
131 gc->read_reg(mpc8xxx_gc->regs + GPIO_IMR) in mpc8xxx_irq_unmask()
134 raw_spin_unlock_irqrestore(&mpc8xxx_gc->lock, flags); in mpc8xxx_irq_unmask()
139 struct mpc8xxx_gpio_chip *mpc8xxx_gc = irq_data_get_irq_chip_data(d); in mpc8xxx_irq_mask() local
140 struct gpio_chip *gc = &mpc8xxx_gc->gc; in mpc8xxx_irq_mask()
143 raw_spin_lock_irqsave(&mpc8xxx_gc->lock, flags); in mpc8xxx_irq_mask()
145 gc->write_reg(mpc8xxx_gc->regs + GPIO_IMR, in mpc8xxx_irq_mask()
146 gc->read_reg(mpc8xxx_gc->regs + GPIO_IMR) in mpc8xxx_irq_mask()
149 raw_spin_unlock_irqrestore(&mpc8xxx_gc->lock, flags); in mpc8xxx_irq_mask()
154 struct mpc8xxx_gpio_chip *mpc8xxx_gc = irq_data_get_irq_chip_data(d); in mpc8xxx_irq_ack() local
155 struct gpio_chip *gc = &mpc8xxx_gc->gc; in mpc8xxx_irq_ack()
157 gc->write_reg(mpc8xxx_gc->regs + GPIO_IER, in mpc8xxx_irq_ack()
163 struct mpc8xxx_gpio_chip *mpc8xxx_gc = irq_data_get_irq_chip_data(d); in mpc8xxx_irq_set_type() local
164 struct gpio_chip *gc = &mpc8xxx_gc->gc; in mpc8xxx_irq_set_type()
170 raw_spin_lock_irqsave(&mpc8xxx_gc->lock, flags); in mpc8xxx_irq_set_type()
171 gc->write_reg(mpc8xxx_gc->regs + GPIO_ICR, in mpc8xxx_irq_set_type()
172 gc->read_reg(mpc8xxx_gc->regs + GPIO_ICR) in mpc8xxx_irq_set_type()
174 raw_spin_unlock_irqrestore(&mpc8xxx_gc->lock, flags); in mpc8xxx_irq_set_type()
178 raw_spin_lock_irqsave(&mpc8xxx_gc->lock, flags); in mpc8xxx_irq_set_type()
179 gc->write_reg(mpc8xxx_gc->regs + GPIO_ICR, in mpc8xxx_irq_set_type()
180 gc->read_reg(mpc8xxx_gc->regs + GPIO_ICR) in mpc8xxx_irq_set_type()
182 raw_spin_unlock_irqrestore(&mpc8xxx_gc->lock, flags); in mpc8xxx_irq_set_type()
194 struct mpc8xxx_gpio_chip *mpc8xxx_gc = irq_data_get_irq_chip_data(d); in mpc512x_irq_set_type() local
195 struct gpio_chip *gc = &mpc8xxx_gc->gc; in mpc512x_irq_set_type()
202 reg = mpc8xxx_gc->regs + GPIO_ICR; in mpc512x_irq_set_type()
205 reg = mpc8xxx_gc->regs + GPIO_ICR2; in mpc512x_irq_set_type()
212 raw_spin_lock_irqsave(&mpc8xxx_gc->lock, flags); in mpc512x_irq_set_type()
215 raw_spin_unlock_irqrestore(&mpc8xxx_gc->lock, flags); in mpc512x_irq_set_type()
220 raw_spin_lock_irqsave(&mpc8xxx_gc->lock, flags); in mpc512x_irq_set_type()
223 raw_spin_unlock_irqrestore(&mpc8xxx_gc->lock, flags); in mpc512x_irq_set_type()
227 raw_spin_lock_irqsave(&mpc8xxx_gc->lock, flags); in mpc512x_irq_set_type()
229 raw_spin_unlock_irqrestore(&mpc8xxx_gc->lock, flags); in mpc512x_irq_set_type()
302 struct mpc8xxx_gpio_chip *mpc8xxx_gc; in mpc8xxx_probe() local
308 mpc8xxx_gc = devm_kzalloc(&pdev->dev, sizeof(*mpc8xxx_gc), GFP_KERNEL); in mpc8xxx_probe()
309 if (!mpc8xxx_gc) in mpc8xxx_probe()
312 platform_set_drvdata(pdev, mpc8xxx_gc); in mpc8xxx_probe()
314 raw_spin_lock_init(&mpc8xxx_gc->lock); in mpc8xxx_probe()
316 mpc8xxx_gc->regs = devm_platform_ioremap_resource(pdev, 0); in mpc8xxx_probe()
317 if (IS_ERR(mpc8xxx_gc->regs)) in mpc8xxx_probe()
318 return PTR_ERR(mpc8xxx_gc->regs); in mpc8xxx_probe()
320 gc = &mpc8xxx_gc->gc; in mpc8xxx_probe()
325 mpc8xxx_gc->regs + GPIO_DAT, in mpc8xxx_probe()
327 mpc8xxx_gc->regs + GPIO_DIR, NULL, in mpc8xxx_probe()
334 mpc8xxx_gc->regs + GPIO_DAT, in mpc8xxx_probe()
336 mpc8xxx_gc->regs + GPIO_DIR, NULL, in mpc8xxx_probe()
344 mpc8xxx_gc->direction_output = gc->direction_output; in mpc8xxx_probe()
376 gc->write_reg(mpc8xxx_gc->regs + GPIO_IBE, 0xffffffff); in mpc8xxx_probe()
378 gc->bgpio_data = gc->read_reg(mpc8xxx_gc->regs + GPIO_DAT) & in mpc8xxx_probe()
379 gc->read_reg(mpc8xxx_gc->regs + GPIO_DIR); in mpc8xxx_probe()
382 ret = devm_gpiochip_add_data(&pdev->dev, gc, mpc8xxx_gc); in mpc8xxx_probe()
389 mpc8xxx_gc->irqn = platform_get_irq(pdev, 0); in mpc8xxx_probe()
390 if (mpc8xxx_gc->irqn < 0) in mpc8xxx_probe()
391 return mpc8xxx_gc->irqn; in mpc8xxx_probe()
393 mpc8xxx_gc->irq = irq_domain_create_linear(fwnode, in mpc8xxx_probe()
396 mpc8xxx_gc); in mpc8xxx_probe()
398 if (!mpc8xxx_gc->irq) in mpc8xxx_probe()
402 gc->write_reg(mpc8xxx_gc->regs + GPIO_IER, 0xffffffff); in mpc8xxx_probe()
403 gc->write_reg(mpc8xxx_gc->regs + GPIO_IMR, 0); in mpc8xxx_probe()
405 ret = devm_request_irq(&pdev->dev, mpc8xxx_gc->irqn, in mpc8xxx_probe()
408 mpc8xxx_gc); in mpc8xxx_probe()
412 mpc8xxx_gc->irqn, ret); in mpc8xxx_probe()
418 irq_domain_remove(mpc8xxx_gc->irq); in mpc8xxx_probe()
424 struct mpc8xxx_gpio_chip *mpc8xxx_gc = platform_get_drvdata(pdev); in mpc8xxx_remove() local
426 if (mpc8xxx_gc->irq) { in mpc8xxx_remove()
427 irq_set_chained_handler_and_data(mpc8xxx_gc->irqn, NULL, NULL); in mpc8xxx_remove()
428 irq_domain_remove(mpc8xxx_gc->irq); in mpc8xxx_remove()