Lines Matching refs:dev
49 static u32 i2c_dw_get_clk_rate_khz(struct dw_i2c_dev *dev) in i2c_dw_get_clk_rate_khz() argument
51 return clk_get_rate(dev->clk)/1000; in i2c_dw_get_clk_rate_khz()
75 acpi_handle handle = ACPI_HANDLE(&pdev->dev); in dw_i2c_acpi_params()
99 struct dw_i2c_dev *dev = platform_get_drvdata(pdev); in dw_i2c_acpi_configure() local
102 dev->adapter.nr = -1; in dw_i2c_acpi_configure()
103 dev->tx_fifo_depth = 32; in dw_i2c_acpi_configure()
104 dev->rx_fifo_depth = 32; in dw_i2c_acpi_configure()
110 dw_i2c_acpi_params(pdev, "SSCN", &dev->ss_hcnt, &dev->ss_lcnt, NULL); in dw_i2c_acpi_configure()
111 dw_i2c_acpi_params(pdev, "FMCN", &dev->fs_hcnt, &dev->fs_lcnt, in dw_i2c_acpi_configure()
112 &dev->sda_hold_time); in dw_i2c_acpi_configure()
119 id = acpi_match_device(pdev->dev.driver->acpi_match_table, &pdev->dev); in dw_i2c_acpi_configure()
121 clk_register_fixed_rate(&pdev->dev, dev_name(&pdev->dev), NULL, in dw_i2c_acpi_configure()
129 struct dw_i2c_dev *dev = platform_get_drvdata(pdev); in dw_i2c_acpi_unconfigure() local
132 id = acpi_match_device(pdev->dev.driver->acpi_match_table, &pdev->dev); in dw_i2c_acpi_unconfigure()
134 clk_unregister(dev->clk); in dw_i2c_acpi_unconfigure()
158 struct dw_i2c_dev *dev; in dw_i2c_probe() local
169 dev = devm_kzalloc(&pdev->dev, sizeof(struct dw_i2c_dev), GFP_KERNEL); in dw_i2c_probe()
170 if (!dev) in dw_i2c_probe()
174 dev->base = devm_ioremap_resource(&pdev->dev, mem); in dw_i2c_probe()
175 if (IS_ERR(dev->base)) in dw_i2c_probe()
176 return PTR_ERR(dev->base); in dw_i2c_probe()
178 init_completion(&dev->cmd_complete); in dw_i2c_probe()
179 mutex_init(&dev->lock); in dw_i2c_probe()
180 dev->dev = &pdev->dev; in dw_i2c_probe()
181 dev->irq = irq; in dw_i2c_probe()
182 platform_set_drvdata(pdev, dev); in dw_i2c_probe()
187 if (has_acpi_companion(&pdev->dev)) { in dw_i2c_probe()
189 } else if (pdev->dev.of_node) { in dw_i2c_probe()
190 of_property_read_u32(pdev->dev.of_node, in dw_i2c_probe()
193 of_property_read_u32(pdev->dev.of_node, in dw_i2c_probe()
195 &dev->sda_falling_time); in dw_i2c_probe()
196 of_property_read_u32(pdev->dev.of_node, in dw_i2c_probe()
198 &dev->scl_falling_time); in dw_i2c_probe()
200 of_property_read_u32(pdev->dev.of_node, "clock-frequency", in dw_i2c_probe()
207 dev_err(&pdev->dev, "Only 100kHz and 400kHz supported"); in dw_i2c_probe()
211 pdata = dev_get_platdata(&pdev->dev); in dw_i2c_probe()
216 r = i2c_dw_eval_lock_support(dev); in dw_i2c_probe()
220 dev->functionality = in dw_i2c_probe()
228 dev->master_cfg = DW_IC_CON_MASTER | DW_IC_CON_SLAVE_DISABLE | in dw_i2c_probe()
231 dev->master_cfg = DW_IC_CON_MASTER | DW_IC_CON_SLAVE_DISABLE | in dw_i2c_probe()
234 dev->clk = devm_clk_get(&pdev->dev, NULL); in dw_i2c_probe()
235 dev->get_clk_rate_khz = i2c_dw_get_clk_rate_khz; in dw_i2c_probe()
236 if (IS_ERR(dev->clk)) in dw_i2c_probe()
237 return PTR_ERR(dev->clk); in dw_i2c_probe()
238 clk_prepare_enable(dev->clk); in dw_i2c_probe()
240 if (!dev->sda_hold_time && ht) { in dw_i2c_probe()
241 u32 ic_clk = dev->get_clk_rate_khz(dev); in dw_i2c_probe()
243 dev->sda_hold_time = div_u64((u64)ic_clk * ht + 500000, in dw_i2c_probe()
247 if (!dev->tx_fifo_depth) { in dw_i2c_probe()
248 u32 param1 = i2c_dw_read_comp_param(dev); in dw_i2c_probe()
250 dev->tx_fifo_depth = ((param1 >> 16) & 0xff) + 1; in dw_i2c_probe()
251 dev->rx_fifo_depth = ((param1 >> 8) & 0xff) + 1; in dw_i2c_probe()
252 dev->adapter.nr = pdev->id; in dw_i2c_probe()
254 r = i2c_dw_init(dev); in dw_i2c_probe()
258 i2c_dw_disable_int(dev); in dw_i2c_probe()
259 r = devm_request_irq(&pdev->dev, dev->irq, i2c_dw_isr, IRQF_SHARED, in dw_i2c_probe()
260 pdev->name, dev); in dw_i2c_probe()
262 dev_err(&pdev->dev, "failure requesting irq %i\n", dev->irq); in dw_i2c_probe()
266 adap = &dev->adapter; in dw_i2c_probe()
267 i2c_set_adapdata(adap, dev); in dw_i2c_probe()
273 adap->dev.parent = &pdev->dev; in dw_i2c_probe()
274 adap->dev.of_node = pdev->dev.of_node; in dw_i2c_probe()
276 if (dev->pm_runtime_disabled) { in dw_i2c_probe()
277 pm_runtime_forbid(&pdev->dev); in dw_i2c_probe()
279 pm_runtime_set_autosuspend_delay(&pdev->dev, 1000); in dw_i2c_probe()
280 pm_runtime_use_autosuspend(&pdev->dev); in dw_i2c_probe()
281 pm_runtime_set_active(&pdev->dev); in dw_i2c_probe()
282 pm_runtime_enable(&pdev->dev); in dw_i2c_probe()
287 dev_err(&pdev->dev, "failure adding adapter\n"); in dw_i2c_probe()
288 pm_runtime_disable(&pdev->dev); in dw_i2c_probe()
297 struct dw_i2c_dev *dev = platform_get_drvdata(pdev); in dw_i2c_remove() local
299 pm_runtime_get_sync(&pdev->dev); in dw_i2c_remove()
301 i2c_del_adapter(&dev->adapter); in dw_i2c_remove()
303 i2c_dw_disable(dev); in dw_i2c_remove()
305 pm_runtime_put(&pdev->dev); in dw_i2c_remove()
306 pm_runtime_disable(&pdev->dev); in dw_i2c_remove()
308 if (has_acpi_companion(&pdev->dev)) in dw_i2c_remove()
323 static int dw_i2c_suspend(struct device *dev) in dw_i2c_suspend() argument
325 struct platform_device *pdev = to_platform_device(dev); in dw_i2c_suspend()
334 static int dw_i2c_resume(struct device *dev) in dw_i2c_resume() argument
336 struct platform_device *pdev = to_platform_device(dev); in dw_i2c_resume()