Lines Matching refs:i2c_dev

44 	struct amd_i2c_dev *i2c_dev = amd_i2c_dev_common(i2c_common);  in i2c_amd_dma_map()  local
55 dev_err(&i2c_dev->pdev->dev, in i2c_amd_dma_map()
77 static void i2c_amd_start_cmd(struct amd_i2c_dev *i2c_dev) in i2c_amd_start_cmd() argument
79 struct amd_i2c_common *i2c_common = &i2c_dev->common; in i2c_amd_start_cmd()
81 reinit_completion(&i2c_dev->cmd_complete); in i2c_amd_start_cmd()
87 struct amd_i2c_dev *i2c_dev = amd_i2c_dev_common(i2c_common); in i2c_amd_cmd_completion() local
91 dev_dbg(&i2c_dev->pdev->dev, "readdata:%*ph\n", event->r.length, in i2c_amd_cmd_completion()
94 complete(&i2c_dev->cmd_complete); in i2c_amd_cmd_completion()
97 static int i2c_amd_check_cmd_completion(struct amd_i2c_dev *i2c_dev) in i2c_amd_check_cmd_completion() argument
99 struct amd_i2c_common *i2c_common = &i2c_dev->common; in i2c_amd_check_cmd_completion()
102 timeout = wait_for_completion_timeout(&i2c_dev->cmd_complete, in i2c_amd_check_cmd_completion()
103 i2c_dev->adap.timeout); in i2c_amd_check_cmd_completion()
123 static int i2c_amd_enable_set(struct amd_i2c_dev *i2c_dev, bool enable) in i2c_amd_enable_set() argument
125 struct amd_i2c_common *i2c_common = &i2c_dev->common; in i2c_amd_enable_set()
127 i2c_amd_start_cmd(i2c_dev); in i2c_amd_enable_set()
130 return i2c_amd_check_cmd_completion(i2c_dev); in i2c_amd_enable_set()
133 static int i2c_amd_xfer_msg(struct amd_i2c_dev *i2c_dev, struct i2c_msg *pmsg) in i2c_amd_xfer_msg() argument
135 struct amd_i2c_common *i2c_common = &i2c_dev->common; in i2c_amd_xfer_msg()
137 i2c_amd_start_cmd(i2c_dev); in i2c_amd_xfer_msg()
149 return i2c_amd_check_cmd_completion(i2c_dev); in i2c_amd_xfer_msg()
154 struct amd_i2c_dev *i2c_dev = i2c_get_adapdata(adap); in i2c_amd_xfer() local
160 if (unlikely(!i2c_dev->common.mp2_dev)) in i2c_amd_xfer()
163 amd_mp2_pm_runtime_get(i2c_dev->common.mp2_dev); in i2c_amd_xfer()
167 err = i2c_amd_xfer_msg(i2c_dev, pmsg); in i2c_amd_xfer()
172 amd_mp2_pm_runtime_put(i2c_dev->common.mp2_dev); in i2c_amd_xfer()
189 struct amd_i2c_dev *i2c_dev = amd_i2c_dev_common(i2c_common); in i2c_amd_suspend() local
191 i2c_amd_enable_set(i2c_dev, false); in i2c_amd_suspend()
197 struct amd_i2c_dev *i2c_dev = amd_i2c_dev_common(i2c_common); in i2c_amd_resume() local
199 return i2c_amd_enable_set(i2c_dev, true); in i2c_amd_resume()
249 struct amd_i2c_dev *i2c_dev; in i2c_amd_probe() local
269 i2c_dev = devm_kzalloc(&pdev->dev, sizeof(*i2c_dev), GFP_KERNEL); in i2c_amd_probe()
270 if (!i2c_dev) in i2c_amd_probe()
273 i2c_dev->common.bus_id = uid; in i2c_amd_probe()
274 i2c_dev->common.mp2_dev = mp2_dev; in i2c_amd_probe()
275 i2c_dev->pdev = pdev; in i2c_amd_probe()
276 platform_set_drvdata(pdev, i2c_dev); in i2c_amd_probe()
278 i2c_dev->common.cmd_completion = &i2c_amd_cmd_completion; in i2c_amd_probe()
280 i2c_dev->common.suspend = &i2c_amd_suspend; in i2c_amd_probe()
281 i2c_dev->common.resume = &i2c_amd_resume; in i2c_amd_probe()
287 i2c_dev->common.reqcmd = i2c_none; in i2c_amd_probe()
288 if (amd_mp2_register_cb(&i2c_dev->common)) in i2c_amd_probe()
290 device_link_add(&i2c_dev->pdev->dev, &mp2_dev->pci_dev->dev, in i2c_amd_probe()
293 i2c_dev->common.i2c_speed = i2c_amd_get_bus_speed(pdev); in i2c_amd_probe()
296 i2c_dev->adap.owner = THIS_MODULE; in i2c_amd_probe()
297 i2c_dev->adap.algo = &i2c_amd_algorithm; in i2c_amd_probe()
298 i2c_dev->adap.quirks = &amd_i2c_dev_quirks; in i2c_amd_probe()
299 i2c_dev->adap.dev.parent = &pdev->dev; in i2c_amd_probe()
300 i2c_dev->adap.algo_data = i2c_dev; in i2c_amd_probe()
301 i2c_dev->adap.timeout = AMD_I2C_TIMEOUT; in i2c_amd_probe()
302 ACPI_COMPANION_SET(&i2c_dev->adap.dev, ACPI_COMPANION(&pdev->dev)); in i2c_amd_probe()
303 i2c_dev->adap.dev.of_node = pdev->dev.of_node; in i2c_amd_probe()
304 snprintf(i2c_dev->adap.name, sizeof(i2c_dev->adap.name), in i2c_amd_probe()
305 "AMD MP2 i2c bus %u", i2c_dev->common.bus_id); in i2c_amd_probe()
306 i2c_set_adapdata(&i2c_dev->adap, i2c_dev); in i2c_amd_probe()
308 init_completion(&i2c_dev->cmd_complete); in i2c_amd_probe()
311 if (i2c_amd_enable_set(i2c_dev, true)) in i2c_amd_probe()
315 ret = i2c_add_adapter(&i2c_dev->adap); in i2c_amd_probe()
327 struct amd_i2c_dev *i2c_dev = platform_get_drvdata(pdev); in i2c_amd_remove() local
328 struct amd_i2c_common *i2c_common = &i2c_dev->common; in i2c_amd_remove()
330 i2c_lock_bus(&i2c_dev->adap, I2C_LOCK_ROOT_ADAPTER); in i2c_amd_remove()
332 i2c_amd_enable_set(i2c_dev, false); in i2c_amd_remove()
336 i2c_unlock_bus(&i2c_dev->adap, I2C_LOCK_ROOT_ADAPTER); in i2c_amd_remove()
338 i2c_del_adapter(&i2c_dev->adap); in i2c_amd_remove()