Lines Matching defs:lpc_snoop

133 	struct aspeed_lpc_snoop *lpc_snoop = arg;
136 if (regmap_read(lpc_snoop->regmap, HICR6, &reg))
145 regmap_write(lpc_snoop->regmap, HICR6, reg);
148 regmap_read(lpc_snoop->regmap, SNPWDR, &data);
153 put_fifo_with_discard(&lpc_snoop->chan[0], val);
158 put_fifo_with_discard(&lpc_snoop->chan[1], val);
164 static int aspeed_lpc_snoop_config_irq(struct aspeed_lpc_snoop *lpc_snoop,
170 lpc_snoop->irq = platform_get_irq(pdev, 0);
171 if (!lpc_snoop->irq)
174 rc = devm_request_irq(dev, lpc_snoop->irq,
176 DEVICE_NAME, lpc_snoop);
178 dev_warn(dev, "Unable to request IRQ %d\n", lpc_snoop->irq);
179 lpc_snoop->irq = 0;
186 static int aspeed_lpc_enable_snoop(struct aspeed_lpc_snoop *lpc_snoop,
195 init_waitqueue_head(&lpc_snoop->chan[channel].wq);
197 rc = kfifo_alloc(&lpc_snoop->chan[channel].fifo,
202 lpc_snoop->chan[channel].miscdev.minor = MISC_DYNAMIC_MINOR;
203 lpc_snoop->chan[channel].miscdev.name =
205 lpc_snoop->chan[channel].miscdev.fops = &snoop_fops;
206 lpc_snoop->chan[channel].miscdev.parent = dev;
207 rc = misc_register(&lpc_snoop->chan[channel].miscdev);
229 regmap_update_bits(lpc_snoop->regmap, HICR5, hicr5_en, hicr5_en);
230 regmap_update_bits(lpc_snoop->regmap, SNPWADR, snpwadr_mask,
233 regmap_update_bits(lpc_snoop->regmap, HICRB,
239 static void aspeed_lpc_disable_snoop(struct aspeed_lpc_snoop *lpc_snoop,
244 regmap_update_bits(lpc_snoop->regmap, HICR5,
249 regmap_update_bits(lpc_snoop->regmap, HICR5,
257 kfifo_free(&lpc_snoop->chan[channel].fifo);
258 misc_deregister(&lpc_snoop->chan[channel].miscdev);
263 struct aspeed_lpc_snoop *lpc_snoop;
270 lpc_snoop = devm_kzalloc(dev, sizeof(*lpc_snoop), GFP_KERNEL);
271 if (!lpc_snoop)
274 lpc_snoop->regmap = syscon_node_to_regmap(
276 if (IS_ERR(lpc_snoop->regmap)) {
281 dev_set_drvdata(&pdev->dev, lpc_snoop);
289 lpc_snoop->clk = devm_clk_get(dev, NULL);
290 if (IS_ERR(lpc_snoop->clk)) {
291 rc = PTR_ERR(lpc_snoop->clk);
296 rc = clk_prepare_enable(lpc_snoop->clk);
302 rc = aspeed_lpc_snoop_config_irq(lpc_snoop, pdev);
306 rc = aspeed_lpc_enable_snoop(lpc_snoop, dev, 0, port);
313 rc = aspeed_lpc_enable_snoop(lpc_snoop, dev, 1, port);
315 aspeed_lpc_disable_snoop(lpc_snoop, 0);
323 clk_disable_unprepare(lpc_snoop->clk);
330 struct aspeed_lpc_snoop *lpc_snoop = dev_get_drvdata(&pdev->dev);
333 aspeed_lpc_disable_snoop(lpc_snoop, 0);
334 aspeed_lpc_disable_snoop(lpc_snoop, 1);
336 clk_disable_unprepare(lpc_snoop->clk);