Lines Matching full:ic

54 static inline void lpc18xx_gpio_pin_ic_isel(struct lpc18xx_gpio_pin_ic *ic,  in lpc18xx_gpio_pin_ic_isel()  argument
57 u32 val = readl_relaxed(ic->base + LPC18XX_GPIO_PIN_IC_ISEL); in lpc18xx_gpio_pin_ic_isel()
64 writel_relaxed(val, ic->base + LPC18XX_GPIO_PIN_IC_ISEL); in lpc18xx_gpio_pin_ic_isel()
67 static inline void lpc18xx_gpio_pin_ic_set(struct lpc18xx_gpio_pin_ic *ic, in lpc18xx_gpio_pin_ic_set() argument
70 writel_relaxed(BIT(pin), ic->base + reg); in lpc18xx_gpio_pin_ic_set()
75 struct lpc18xx_gpio_pin_ic *ic = d->chip_data; in lpc18xx_gpio_pin_ic_mask() local
78 raw_spin_lock(&ic->lock); in lpc18xx_gpio_pin_ic_mask()
81 lpc18xx_gpio_pin_ic_set(ic, d->hwirq, in lpc18xx_gpio_pin_ic_mask()
85 lpc18xx_gpio_pin_ic_set(ic, d->hwirq, in lpc18xx_gpio_pin_ic_mask()
88 raw_spin_unlock(&ic->lock); in lpc18xx_gpio_pin_ic_mask()
95 struct lpc18xx_gpio_pin_ic *ic = d->chip_data; in lpc18xx_gpio_pin_ic_unmask() local
98 raw_spin_lock(&ic->lock); in lpc18xx_gpio_pin_ic_unmask()
101 lpc18xx_gpio_pin_ic_set(ic, d->hwirq, in lpc18xx_gpio_pin_ic_unmask()
105 lpc18xx_gpio_pin_ic_set(ic, d->hwirq, in lpc18xx_gpio_pin_ic_unmask()
108 raw_spin_unlock(&ic->lock); in lpc18xx_gpio_pin_ic_unmask()
115 struct lpc18xx_gpio_pin_ic *ic = d->chip_data; in lpc18xx_gpio_pin_ic_eoi() local
118 raw_spin_lock(&ic->lock); in lpc18xx_gpio_pin_ic_eoi()
121 lpc18xx_gpio_pin_ic_set(ic, d->hwirq, in lpc18xx_gpio_pin_ic_eoi()
124 raw_spin_unlock(&ic->lock); in lpc18xx_gpio_pin_ic_eoi()
131 struct lpc18xx_gpio_pin_ic *ic = d->chip_data; in lpc18xx_gpio_pin_ic_set_type() local
133 raw_spin_lock(&ic->lock); in lpc18xx_gpio_pin_ic_set_type()
136 lpc18xx_gpio_pin_ic_isel(ic, d->hwirq, true); in lpc18xx_gpio_pin_ic_set_type()
137 lpc18xx_gpio_pin_ic_set(ic, d->hwirq, in lpc18xx_gpio_pin_ic_set_type()
140 lpc18xx_gpio_pin_ic_isel(ic, d->hwirq, true); in lpc18xx_gpio_pin_ic_set_type()
141 lpc18xx_gpio_pin_ic_set(ic, d->hwirq, in lpc18xx_gpio_pin_ic_set_type()
144 lpc18xx_gpio_pin_ic_isel(ic, d->hwirq, false); in lpc18xx_gpio_pin_ic_set_type()
147 raw_spin_unlock(&ic->lock); in lpc18xx_gpio_pin_ic_set_type()
166 struct lpc18xx_gpio_pin_ic *ic = domain->host_data; in lpc18xx_gpio_pin_ic_domain_alloc() local
193 &lpc18xx_gpio_pin_ic, ic); in lpc18xx_gpio_pin_ic_domain_alloc()
207 struct lpc18xx_gpio_pin_ic *ic; in lpc18xx_gpio_pin_ic_probe() local
220 ic = devm_kzalloc(dev, sizeof(*ic), GFP_KERNEL); in lpc18xx_gpio_pin_ic_probe()
221 if (!ic) in lpc18xx_gpio_pin_ic_probe()
225 "gpio-pin-ic"); in lpc18xx_gpio_pin_ic_probe()
235 ic->base = devm_ioremap_resource(dev, &res); in lpc18xx_gpio_pin_ic_probe()
236 if (IS_ERR(ic->base)) { in lpc18xx_gpio_pin_ic_probe()
237 ret = PTR_ERR(ic->base); in lpc18xx_gpio_pin_ic_probe()
241 raw_spin_lock_init(&ic->lock); in lpc18xx_gpio_pin_ic_probe()
243 ic->domain = irq_domain_add_hierarchy(parent_domain, 0, in lpc18xx_gpio_pin_ic_probe()
247 ic); in lpc18xx_gpio_pin_ic_probe()
248 if (!ic->domain) { in lpc18xx_gpio_pin_ic_probe()
254 gc->pin_ic = ic; in lpc18xx_gpio_pin_ic_probe()
259 devm_iounmap(dev, ic->base); in lpc18xx_gpio_pin_ic_probe()
261 devm_kfree(dev, ic); in lpc18xx_gpio_pin_ic_probe()