Lines Matching full:lpc_snoop

164 	struct aspeed_lpc_snoop *lpc_snoop = arg;  in aspeed_lpc_snoop_irq()  local
167 if (regmap_read(lpc_snoop->regmap, HICR6, &reg)) in aspeed_lpc_snoop_irq()
176 regmap_write(lpc_snoop->regmap, HICR6, reg); in aspeed_lpc_snoop_irq()
179 regmap_read(lpc_snoop->regmap, SNPWDR, &data); in aspeed_lpc_snoop_irq()
184 put_fifo_with_discard(&lpc_snoop->chan[0], val); in aspeed_lpc_snoop_irq()
189 put_fifo_with_discard(&lpc_snoop->chan[1], val); in aspeed_lpc_snoop_irq()
195 static int aspeed_lpc_snoop_config_irq(struct aspeed_lpc_snoop *lpc_snoop, in aspeed_lpc_snoop_config_irq() argument
201 lpc_snoop->irq = platform_get_irq(pdev, 0); in aspeed_lpc_snoop_config_irq()
202 if (lpc_snoop->irq < 0) in aspeed_lpc_snoop_config_irq()
205 rc = devm_request_irq(dev, lpc_snoop->irq, in aspeed_lpc_snoop_config_irq()
207 DEVICE_NAME, lpc_snoop); in aspeed_lpc_snoop_config_irq()
209 dev_warn(dev, "Unable to request IRQ %d\n", lpc_snoop->irq); in aspeed_lpc_snoop_config_irq()
210 lpc_snoop->irq = 0; in aspeed_lpc_snoop_config_irq()
219 struct aspeed_lpc_snoop *lpc_snoop, in aspeed_lpc_enable_snoop() argument
251 regmap_set_bits(lpc_snoop->regmap, HICR5, cfg->hicr5_en); in aspeed_lpc_enable_snoop()
252 regmap_update_bits(lpc_snoop->regmap, SNPWADR, cfg->snpwadr_mask, in aspeed_lpc_enable_snoop()
257 regmap_set_bits(lpc_snoop->regmap, HICRB, cfg->hicrb_en); in aspeed_lpc_enable_snoop()
269 static void aspeed_lpc_disable_snoop(struct aspeed_lpc_snoop *lpc_snoop, in aspeed_lpc_disable_snoop() argument
276 regmap_clear_bits(lpc_snoop->regmap, HICR5, channel->cfg->hicr5_en); in aspeed_lpc_disable_snoop()
286 struct aspeed_lpc_snoop *lpc_snoop = dev_get_drvdata(&pdev->dev); in aspeed_lpc_snoop_remove() local
289 aspeed_lpc_disable_snoop(lpc_snoop, &lpc_snoop->chan[0]); in aspeed_lpc_snoop_remove()
290 aspeed_lpc_disable_snoop(lpc_snoop, &lpc_snoop->chan[1]); in aspeed_lpc_snoop_remove()
295 struct aspeed_lpc_snoop *lpc_snoop; in aspeed_lpc_snoop_probe() local
303 lpc_snoop = devm_kzalloc(dev, sizeof(*lpc_snoop), GFP_KERNEL); in aspeed_lpc_snoop_probe()
304 if (!lpc_snoop) in aspeed_lpc_snoop_probe()
315 lpc_snoop->regmap = syscon_node_to_regmap(np); in aspeed_lpc_snoop_probe()
316 if (IS_ERR(lpc_snoop->regmap)) in aspeed_lpc_snoop_probe()
317 return dev_err_probe(dev, PTR_ERR(lpc_snoop->regmap), "Couldn't get regmap\n"); in aspeed_lpc_snoop_probe()
319 dev_set_drvdata(&pdev->dev, lpc_snoop); in aspeed_lpc_snoop_probe()
321 lpc_snoop->clk = devm_clk_get_enabled(dev, NULL); in aspeed_lpc_snoop_probe()
322 if (IS_ERR(lpc_snoop->clk)) in aspeed_lpc_snoop_probe()
323 return dev_err_probe(dev, PTR_ERR(lpc_snoop->clk), "couldn't get clock"); in aspeed_lpc_snoop_probe()
325 rc = aspeed_lpc_snoop_config_irq(lpc_snoop, pdev); in aspeed_lpc_snoop_probe()
329 static_assert(ARRAY_SIZE(channel_cfgs) == ARRAY_SIZE(lpc_snoop->chan), in aspeed_lpc_snoop_probe()
338 rc = aspeed_lpc_enable_snoop(dev, lpc_snoop, &lpc_snoop->chan[idx], in aspeed_lpc_snoop_probe()