Lines Matching refs:chip

68 static int pm8xxx_read_block_irq(struct pm_irq_chip *chip, unsigned int bp,  in pm8xxx_read_block_irq()  argument
73 spin_lock(&chip->pm_irq_lock); in pm8xxx_read_block_irq()
74 rc = regmap_write(chip->regmap, SSBI_REG_ADDR_IRQ_BLK_SEL, bp); in pm8xxx_read_block_irq()
80 rc = regmap_read(chip->regmap, SSBI_REG_ADDR_IRQ_IT_STATUS, ip); in pm8xxx_read_block_irq()
84 spin_unlock(&chip->pm_irq_lock); in pm8xxx_read_block_irq()
89 pm8xxx_config_irq(struct pm_irq_chip *chip, unsigned int bp, unsigned int cp) in pm8xxx_config_irq() argument
93 spin_lock(&chip->pm_irq_lock); in pm8xxx_config_irq()
94 rc = regmap_write(chip->regmap, SSBI_REG_ADDR_IRQ_BLK_SEL, bp); in pm8xxx_config_irq()
101 rc = regmap_write(chip->regmap, SSBI_REG_ADDR_IRQ_CONFIG, cp); in pm8xxx_config_irq()
105 spin_unlock(&chip->pm_irq_lock); in pm8xxx_config_irq()
109 static int pm8xxx_irq_block_handler(struct pm_irq_chip *chip, int block) in pm8xxx_irq_block_handler() argument
114 ret = pm8xxx_read_block_irq(chip, block, &bits); in pm8xxx_irq_block_handler()
128 irq = irq_find_mapping(chip->irqdomain, pmirq); in pm8xxx_irq_block_handler()
135 static int pm8xxx_irq_master_handler(struct pm_irq_chip *chip, int master) in pm8xxx_irq_master_handler() argument
140 ret = regmap_read(chip->regmap, SSBI_REG_ADDR_IRQ_M_STATUS1 + master, in pm8xxx_irq_master_handler()
154 ret |= pm8xxx_irq_block_handler(chip, block_number); in pm8xxx_irq_master_handler()
161 struct pm_irq_chip *chip = irq_desc_get_handler_data(desc); in pm8xxx_irq_handler() local
168 ret = regmap_read(chip->regmap, SSBI_REG_ADDR_IRQ_ROOT, &root); in pm8xxx_irq_handler()
178 for (i = 0; i < chip->num_masters; i++) in pm8xxx_irq_handler()
180 pm8xxx_irq_master_handler(chip, i); in pm8xxx_irq_handler()
187 struct pm_irq_chip *chip = irq_data_get_irq_chip_data(d); in pm8xxx_irq_mask_ack() local
193 config = chip->config[pmirq] | PM_IRQF_MASK_ALL | PM_IRQF_CLR; in pm8xxx_irq_mask_ack()
194 pm8xxx_config_irq(chip, block, config); in pm8xxx_irq_mask_ack()
199 struct pm_irq_chip *chip = irq_data_get_irq_chip_data(d); in pm8xxx_irq_unmask() local
205 config = chip->config[pmirq]; in pm8xxx_irq_unmask()
206 pm8xxx_config_irq(chip, block, config); in pm8xxx_irq_unmask()
211 struct pm_irq_chip *chip = irq_data_get_irq_chip_data(d); in pm8xxx_irq_set_type() local
219 chip->config[pmirq] = (irq_bit << PM_IRQF_BITS_SHIFT) in pm8xxx_irq_set_type()
223 chip->config[pmirq] &= ~PM_IRQF_MASK_RE; in pm8xxx_irq_set_type()
225 chip->config[pmirq] &= ~PM_IRQF_MASK_FE; in pm8xxx_irq_set_type()
227 chip->config[pmirq] |= PM_IRQF_LVL_SEL; in pm8xxx_irq_set_type()
230 chip->config[pmirq] &= ~PM_IRQF_MASK_RE; in pm8xxx_irq_set_type()
232 chip->config[pmirq] &= ~PM_IRQF_MASK_FE; in pm8xxx_irq_set_type()
235 config = chip->config[pmirq] | PM_IRQF_CLR; in pm8xxx_irq_set_type()
236 return pm8xxx_config_irq(chip, block, config); in pm8xxx_irq_set_type()
250 struct pm_irq_chip *chip = d->host_data; in pm8xxx_irq_domain_map() local
253 irq_set_chip_data(irq, chip); in pm8xxx_irq_domain_map()
289 struct pm_irq_chip *chip; in pm8921_probe() local
320 chip = devm_kzalloc(&pdev->dev, sizeof(*chip) + in pm8921_probe()
321 sizeof(chip->config[0]) * nirqs, in pm8921_probe()
323 if (!chip) in pm8921_probe()
326 platform_set_drvdata(pdev, chip); in pm8921_probe()
327 chip->regmap = regmap; in pm8921_probe()
328 chip->num_irqs = nirqs; in pm8921_probe()
329 chip->num_blocks = DIV_ROUND_UP(chip->num_irqs, 8); in pm8921_probe()
330 chip->num_masters = DIV_ROUND_UP(chip->num_blocks, 8); in pm8921_probe()
331 spin_lock_init(&chip->pm_irq_lock); in pm8921_probe()
333 chip->irqdomain = irq_domain_add_linear(pdev->dev.of_node, nirqs, in pm8921_probe()
335 chip); in pm8921_probe()
336 if (!chip->irqdomain) in pm8921_probe()
339 irq_set_handler_data(irq, chip); in pm8921_probe()
347 irq_domain_remove(chip->irqdomain); in pm8921_probe()
362 struct pm_irq_chip *chip = platform_get_drvdata(pdev); in pm8921_remove() local
367 irq_domain_remove(chip->irqdomain); in pm8921_remove()