Lines Matching refs:dev

28 unsigned at91_twi_read(struct at91_twi_dev *dev, unsigned reg)
30 return readl_relaxed(dev->base + reg);
33 void at91_twi_write(struct at91_twi_dev *dev, unsigned reg, unsigned val)
35 writel_relaxed(val, dev->base + reg);
38 void at91_disable_twi_interrupts(struct at91_twi_dev *dev)
40 at91_twi_write(dev, AT91_TWI_IDR, AT91_TWI_INT_MASK);
43 void at91_twi_irq_save(struct at91_twi_dev *dev)
45 dev->imr = at91_twi_read(dev, AT91_TWI_IMR) & AT91_TWI_INT_MASK;
46 at91_disable_twi_interrupts(dev);
49 void at91_twi_irq_restore(struct at91_twi_dev *dev)
51 at91_twi_write(dev, AT91_TWI_IER, dev->imr);
54 void at91_init_twi_bus(struct at91_twi_dev *dev)
56 at91_disable_twi_interrupts(dev);
57 at91_twi_write(dev, AT91_TWI_CR, AT91_TWI_SWRST);
58 if (dev->slave_detected)
59 at91_init_twi_bus_slave(dev);
61 at91_init_twi_bus_master(dev);
186 if (pdev->dev.of_node) {
188 match = of_match_node(atmel_twi_dt_ids, pdev->dev.of_node);
198 struct at91_twi_dev *dev;
203 dev = devm_kzalloc(&pdev->dev, sizeof(*dev), GFP_KERNEL);
204 if (!dev)
207 dev->dev = &pdev->dev;
209 dev->base = devm_platform_get_and_ioremap_resource(pdev, 0, &mem);
210 if (IS_ERR(dev->base))
211 return PTR_ERR(dev->base);
214 dev->pdata = at91_twi_get_driver_data(pdev);
215 if (!dev->pdata)
218 dev->irq = platform_get_irq(pdev, 0);
219 if (dev->irq < 0)
220 return dev->irq;
222 platform_set_drvdata(pdev, dev);
224 dev->clk = devm_clk_get_enabled(dev->dev, NULL);
225 if (IS_ERR(dev->clk))
226 return dev_err_probe(dev->dev, PTR_ERR(dev->clk),
229 snprintf(dev->adapter.name, sizeof(dev->adapter.name), "AT91");
230 i2c_set_adapdata(&dev->adapter, dev);
231 dev->adapter.owner = THIS_MODULE;
232 dev->adapter.class = I2C_CLASS_DEPRECATED;
233 dev->adapter.dev.parent = dev->dev;
234 dev->adapter.nr = pdev->id;
235 dev->adapter.timeout = AT91_I2C_TIMEOUT;
236 dev->adapter.dev.of_node = pdev->dev.of_node;
238 dev->slave_detected = i2c_detect_slave_mode(&pdev->dev);
240 if (dev->slave_detected)
241 rc = at91_twi_probe_slave(pdev, phy_addr, dev);
243 rc = at91_twi_probe_master(pdev, phy_addr, dev);
247 at91_init_twi_bus(dev);
249 pm_runtime_set_autosuspend_delay(dev->dev, AUTOSUSPEND_TIMEOUT);
250 pm_runtime_use_autosuspend(dev->dev);
251 pm_runtime_set_active(dev->dev);
252 pm_runtime_enable(dev->dev);
254 rc = i2c_add_numbered_adapter(&dev->adapter);
256 pm_runtime_disable(dev->dev);
257 pm_runtime_set_suspended(dev->dev);
262 dev_info(dev->dev, "AT91 i2c bus driver (hw version: %#x).\n",
263 at91_twi_read(dev, AT91_TWI_VER));
269 struct at91_twi_dev *dev = platform_get_drvdata(pdev);
271 i2c_del_adapter(&dev->adapter);
273 pm_runtime_disable(dev->dev);
274 pm_runtime_set_suspended(dev->dev);
277 static int __maybe_unused at91_twi_runtime_suspend(struct device *dev)
279 struct at91_twi_dev *twi_dev = dev_get_drvdata(dev);
283 pinctrl_pm_select_sleep_state(dev);
288 static int __maybe_unused at91_twi_runtime_resume(struct device *dev)
290 struct at91_twi_dev *twi_dev = dev_get_drvdata(dev);
292 pinctrl_pm_select_default_state(dev);
297 static int __maybe_unused at91_twi_suspend_noirq(struct device *dev)
299 if (!pm_runtime_status_suspended(dev))
300 at91_twi_runtime_suspend(dev);
305 static int __maybe_unused at91_twi_resume_noirq(struct device *dev)
307 struct at91_twi_dev *twi_dev = dev_get_drvdata(dev);
310 if (!pm_runtime_status_suspended(dev)) {
311 ret = at91_twi_runtime_resume(dev);
316 pm_runtime_mark_last_busy(dev);
317 pm_request_autosuspend(dev);