Lines Matching defs:lpc_snoop

131 	struct aspeed_lpc_snoop *lpc_snoop = arg;
134 if (regmap_read(lpc_snoop->regmap, HICR6, &reg))
143 regmap_write(lpc_snoop->regmap, HICR6, reg);
146 regmap_read(lpc_snoop->regmap, SNPWDR, &data);
151 put_fifo_with_discard(&lpc_snoop->chan[0], val);
156 put_fifo_with_discard(&lpc_snoop->chan[1], val);
162 static int aspeed_lpc_snoop_config_irq(struct aspeed_lpc_snoop *lpc_snoop,
168 lpc_snoop->irq = platform_get_irq(pdev, 0);
169 if (!lpc_snoop->irq)
172 rc = devm_request_irq(dev, lpc_snoop->irq,
174 DEVICE_NAME, lpc_snoop);
176 dev_warn(dev, "Unable to request IRQ %d\n", lpc_snoop->irq);
177 lpc_snoop->irq = 0;
184 static int aspeed_lpc_enable_snoop(struct aspeed_lpc_snoop *lpc_snoop,
193 init_waitqueue_head(&lpc_snoop->chan[channel].wq);
195 rc = kfifo_alloc(&lpc_snoop->chan[channel].fifo,
200 lpc_snoop->chan[channel].miscdev.minor = MISC_DYNAMIC_MINOR;
201 lpc_snoop->chan[channel].miscdev.name =
203 lpc_snoop->chan[channel].miscdev.fops = &snoop_fops;
204 lpc_snoop->chan[channel].miscdev.parent = dev;
205 rc = misc_register(&lpc_snoop->chan[channel].miscdev);
227 regmap_update_bits(lpc_snoop->regmap, HICR5, hicr5_en, hicr5_en);
228 regmap_update_bits(lpc_snoop->regmap, SNPWADR, snpwadr_mask,
231 regmap_update_bits(lpc_snoop->regmap, HICRB,
237 static void aspeed_lpc_disable_snoop(struct aspeed_lpc_snoop *lpc_snoop,
242 regmap_update_bits(lpc_snoop->regmap, HICR5,
247 regmap_update_bits(lpc_snoop->regmap, HICR5,
255 kfifo_free(&lpc_snoop->chan[channel].fifo);
256 misc_deregister(&lpc_snoop->chan[channel].miscdev);
261 struct aspeed_lpc_snoop *lpc_snoop;
269 lpc_snoop = devm_kzalloc(dev, sizeof(*lpc_snoop), GFP_KERNEL);
270 if (!lpc_snoop)
281 lpc_snoop->regmap = syscon_node_to_regmap(np);
282 if (IS_ERR(lpc_snoop->regmap)) {
287 dev_set_drvdata(&pdev->dev, lpc_snoop);
295 lpc_snoop->clk = devm_clk_get(dev, NULL);
296 if (IS_ERR(lpc_snoop->clk)) {
297 rc = PTR_ERR(lpc_snoop->clk);
302 rc = clk_prepare_enable(lpc_snoop->clk);
308 rc = aspeed_lpc_snoop_config_irq(lpc_snoop, pdev);
312 rc = aspeed_lpc_enable_snoop(lpc_snoop, dev, 0, port);
319 rc = aspeed_lpc_enable_snoop(lpc_snoop, dev, 1, port);
321 aspeed_lpc_disable_snoop(lpc_snoop, 0);
329 clk_disable_unprepare(lpc_snoop->clk);
336 struct aspeed_lpc_snoop *lpc_snoop = dev_get_drvdata(&pdev->dev);
339 aspeed_lpc_disable_snoop(lpc_snoop, 0);
340 aspeed_lpc_disable_snoop(lpc_snoop, 1);
342 clk_disable_unprepare(lpc_snoop->clk);