Lines Matching refs:tps65912
25 static inline int irq_to_tps65912_irq(struct tps65912 *tps65912, in irq_to_tps65912_irq() argument
28 return irq - tps65912->irq_base; in irq_to_tps65912_irq()
42 struct tps65912 *tps65912 = irq_data; in tps65912_irq() local
49 tps65912->read(tps65912, TPS65912_INT_STS, 1, ®); in tps65912_irq()
51 tps65912->read(tps65912, TPS65912_INT_STS2, 1, ®); in tps65912_irq()
53 tps65912->read(tps65912, TPS65912_INT_STS3, 1, ®); in tps65912_irq()
55 tps65912->read(tps65912, TPS65912_INT_STS4, 1, ®); in tps65912_irq()
58 tps65912->read(tps65912, TPS65912_INT_MSK, 1, ®); in tps65912_irq()
60 tps65912->read(tps65912, TPS65912_INT_MSK2, 1, ®); in tps65912_irq()
62 tps65912->read(tps65912, TPS65912_INT_MSK3, 1, ®); in tps65912_irq()
64 tps65912->read(tps65912, TPS65912_INT_MSK4, 1, ®); in tps65912_irq()
71 for (i = 0; i < tps65912->irq_num; i++) { in tps65912_irq()
75 handle_nested_irq(tps65912->irq_base + i); in tps65912_irq()
82 tps65912->write(tps65912, TPS65912_INT_STS, 1, ®); in tps65912_irq()
86 tps65912->write(tps65912, TPS65912_INT_STS2, 1, ®); in tps65912_irq()
90 tps65912->write(tps65912, TPS65912_INT_STS3, 1, ®); in tps65912_irq()
93 tps65912->write(tps65912, TPS65912_INT_STS4, 1, ®); in tps65912_irq()
100 struct tps65912 *tps65912 = irq_data_get_irq_chip_data(data); in tps65912_irq_lock() local
102 mutex_lock(&tps65912->irq_lock); in tps65912_irq_lock()
107 struct tps65912 *tps65912 = irq_data_get_irq_chip_data(data); in tps65912_irq_sync_unlock() local
111 tps65912->read(tps65912, TPS65912_INT_MSK, 1, ®); in tps65912_irq_sync_unlock()
113 tps65912->read(tps65912, TPS65912_INT_MSK2, 1, ®); in tps65912_irq_sync_unlock()
115 tps65912->read(tps65912, TPS65912_INT_MSK3, 1, ®); in tps65912_irq_sync_unlock()
117 tps65912->read(tps65912, TPS65912_INT_MSK4, 1, ®); in tps65912_irq_sync_unlock()
120 if (tps65912->irq_mask != reg_mask) { in tps65912_irq_sync_unlock()
121 reg = tps65912->irq_mask & 0xFF; in tps65912_irq_sync_unlock()
122 tps65912->write(tps65912, TPS65912_INT_MSK, 1, ®); in tps65912_irq_sync_unlock()
123 reg = tps65912->irq_mask >> 8 & 0xFF; in tps65912_irq_sync_unlock()
124 tps65912->write(tps65912, TPS65912_INT_MSK2, 1, ®); in tps65912_irq_sync_unlock()
125 reg = tps65912->irq_mask >> 16 & 0xFF; in tps65912_irq_sync_unlock()
126 tps65912->write(tps65912, TPS65912_INT_MSK3, 1, ®); in tps65912_irq_sync_unlock()
127 reg = tps65912->irq_mask >> 24 & 0xFF; in tps65912_irq_sync_unlock()
128 tps65912->write(tps65912, TPS65912_INT_MSK4, 1, ®); in tps65912_irq_sync_unlock()
131 mutex_unlock(&tps65912->irq_lock); in tps65912_irq_sync_unlock()
136 struct tps65912 *tps65912 = irq_data_get_irq_chip_data(data); in tps65912_irq_enable() local
138 tps65912->irq_mask &= ~(1 << irq_to_tps65912_irq(tps65912, data->irq)); in tps65912_irq_enable()
143 struct tps65912 *tps65912 = irq_data_get_irq_chip_data(data); in tps65912_irq_disable() local
145 tps65912->irq_mask |= (1 << irq_to_tps65912_irq(tps65912, data->irq)); in tps65912_irq_disable()
156 int tps65912_irq_init(struct tps65912 *tps65912, int irq, in tps65912_irq_init() argument
164 dev_warn(tps65912->dev, "No interrupt support, no core IRQ\n"); in tps65912_irq_init()
169 dev_warn(tps65912->dev, "No interrupt support, no IRQ base\n"); in tps65912_irq_init()
174 tps65912->read(tps65912, TPS65912_INT_STS, 1, ®); in tps65912_irq_init()
175 tps65912->write(tps65912, TPS65912_INT_STS, 1, ®); in tps65912_irq_init()
176 tps65912->read(tps65912, TPS65912_INT_STS2, 1, ®); in tps65912_irq_init()
177 tps65912->write(tps65912, TPS65912_INT_STS2, 1, ®); in tps65912_irq_init()
178 tps65912->read(tps65912, TPS65912_INT_STS3, 1, ®); in tps65912_irq_init()
179 tps65912->write(tps65912, TPS65912_INT_STS3, 1, ®); in tps65912_irq_init()
180 tps65912->read(tps65912, TPS65912_INT_STS4, 1, ®); in tps65912_irq_init()
181 tps65912->write(tps65912, TPS65912_INT_STS4, 1, ®); in tps65912_irq_init()
184 tps65912->irq_mask = 0xFFFFFFFF; in tps65912_irq_init()
186 mutex_init(&tps65912->irq_lock); in tps65912_irq_init()
187 tps65912->chip_irq = irq; in tps65912_irq_init()
188 tps65912->irq_base = pdata->irq_base; in tps65912_irq_init()
190 tps65912->irq_num = TPS65912_NUM_IRQ; in tps65912_irq_init()
193 for (cur_irq = tps65912->irq_base; in tps65912_irq_init()
194 cur_irq < tps65912->irq_num + tps65912->irq_base; in tps65912_irq_init()
196 irq_set_chip_data(cur_irq, tps65912); in tps65912_irq_init()
210 "tps65912", tps65912); in tps65912_irq_init()
214 dev_err(tps65912->dev, "Failed to request IRQ: %d\n", ret); in tps65912_irq_init()
219 int tps65912_irq_exit(struct tps65912 *tps65912) in tps65912_irq_exit() argument
221 free_irq(tps65912->chip_irq, tps65912); in tps65912_irq_exit()