• Home
  • Raw
  • Download

Lines Matching full:vic

4  *  Driver for Aspeed "new" VIC as found in SoC generation 3 and later
6 * Based on irq-vic.c:
68 static void vic_init_hw(struct aspeed_vic *vic) in vic_init_hw() argument
73 writel(0xffffffff, vic->base + AVIC_INT_ENABLE_CLR); in vic_init_hw()
74 writel(0xffffffff, vic->base + AVIC_INT_ENABLE_CLR + 4); in vic_init_hw()
77 writel(0xffffffff, vic->base + AVIC_INT_TRIGGER_CLR); in vic_init_hw()
78 writel(0xffffffff, vic->base + AVIC_INT_TRIGGER_CLR + 4); in vic_init_hw()
81 writel(0, vic->base + AVIC_INT_SELECT); in vic_init_hw()
82 writel(0, vic->base + AVIC_INT_SELECT + 4); in vic_init_hw()
88 sense = readl(vic->base + AVIC_INT_SENSE); in vic_init_hw()
89 vic->edge_sources[0] = ~sense; in vic_init_hw()
90 sense = readl(vic->base + AVIC_INT_SENSE + 4); in vic_init_hw()
91 vic->edge_sources[1] = ~sense; in vic_init_hw()
94 writel(0xffffffff, vic->base + AVIC_EDGE_CLR); in vic_init_hw()
95 writel(0xffffffff, vic->base + AVIC_EDGE_CLR + 4); in vic_init_hw()
100 struct aspeed_vic *vic = system_avic; in avic_handle_irq() local
105 stat = readl_relaxed(vic->base + AVIC_IRQ_STATUS); in avic_handle_irq()
107 stat = readl_relaxed(vic->base + AVIC_IRQ_STATUS + 4); in avic_handle_irq()
113 handle_domain_irq(vic->dom, irq, regs); in avic_handle_irq()
119 struct aspeed_vic *vic = irq_data_get_irq_chip_data(d); in avic_ack_irq() local
124 if (vic->edge_sources[sidx] & sbit) in avic_ack_irq()
125 writel(sbit, vic->base + AVIC_EDGE_CLR + sidx * 4); in avic_ack_irq()
130 struct aspeed_vic *vic = irq_data_get_irq_chip_data(d); in avic_mask_irq() local
134 writel(sbit, vic->base + AVIC_INT_ENABLE_CLR + sidx * 4); in avic_mask_irq()
139 struct aspeed_vic *vic = irq_data_get_irq_chip_data(d); in avic_unmask_irq() local
143 writel(sbit, vic->base + AVIC_INT_ENABLE + sidx * 4); in avic_unmask_irq()
149 struct aspeed_vic *vic = irq_data_get_irq_chip_data(d); in avic_mask_ack_irq() local
154 writel(sbit, vic->base + AVIC_INT_ENABLE_CLR + sidx * 4); in avic_mask_ack_irq()
157 if (vic->edge_sources[sidx] & sbit) in avic_mask_ack_irq()
158 writel(sbit, vic->base + AVIC_EDGE_CLR + sidx * 4); in avic_mask_ack_irq()
172 struct aspeed_vic *vic = d->host_data; in avic_map() local
180 if (vic->edge_sources[sidx] & sbit) in avic_map()
184 irq_set_chip_data(irq, vic); in avic_map()
198 struct aspeed_vic *vic; in avic_of_init() local
200 if (WARN(parent, "non-root Aspeed VIC not supported")) in avic_of_init()
202 if (WARN(system_avic, "duplicate Aspeed VIC not supported")) in avic_of_init()
209 vic = kzalloc(sizeof(struct aspeed_vic), GFP_KERNEL); in avic_of_init()
210 if (WARN_ON(!vic)) { in avic_of_init()
214 vic->base = regs; in avic_of_init()
217 vic_init_hw(vic); in avic_of_init()
220 system_avic = vic; in avic_of_init()
224 vic->dom = irq_domain_add_simple(node, NUM_IRQS, 0, in avic_of_init()
225 &avic_dom_ops, vic); in avic_of_init()
230 IRQCHIP_DECLARE(ast2400_vic, "aspeed,ast2400-vic", avic_of_init);
231 IRQCHIP_DECLARE(ast2500_vic, "aspeed,ast2500-vic", avic_of_init);