Lines Matching full:control
50 static void smu_v11_0_i2c_set_clock_gating(struct i2c_adapter *control, bool en) in smu_v11_0_i2c_set_clock_gating() argument
52 struct amdgpu_device *adev = to_amdgpu_device(control); in smu_v11_0_i2c_set_clock_gating()
60 static void smu_v11_0_i2c_enable(struct i2c_adapter *control, bool enable) in smu_v11_0_i2c_enable() argument
62 struct amdgpu_device *adev = to_amdgpu_device(control); in smu_v11_0_i2c_enable()
67 static void smu_v11_0_i2c_clear_status(struct i2c_adapter *control) in smu_v11_0_i2c_clear_status() argument
69 struct amdgpu_device *adev = to_amdgpu_device(control); in smu_v11_0_i2c_clear_status()
77 static void smu_v11_0_i2c_configure(struct i2c_adapter *control) in smu_v11_0_i2c_configure() argument
79 struct amdgpu_device *adev = to_amdgpu_device(control); in smu_v11_0_i2c_configure()
93 static void smu_v11_0_i2c_set_clock(struct i2c_adapter *control) in smu_v11_0_i2c_set_clock() argument
95 struct amdgpu_device *adev = to_amdgpu_device(control); in smu_v11_0_i2c_set_clock()
116 static void smu_v11_0_i2c_set_address(struct i2c_adapter *control, uint8_t address) in smu_v11_0_i2c_set_address() argument
118 struct amdgpu_device *adev = to_amdgpu_device(control); in smu_v11_0_i2c_set_address()
125 static uint32_t smu_v11_0_i2c_poll_tx_status(struct i2c_adapter *control) in smu_v11_0_i2c_poll_tx_status() argument
127 struct amdgpu_device *adev = to_amdgpu_device(control); in smu_v11_0_i2c_poll_tx_status()
170 smu_v11_0_i2c_clear_status(control); in smu_v11_0_i2c_poll_tx_status()
176 static uint32_t smu_v11_0_i2c_poll_rx_status(struct i2c_adapter *control) in smu_v11_0_i2c_poll_rx_status() argument
178 struct amdgpu_device *adev = to_amdgpu_device(control); in smu_v11_0_i2c_poll_rx_status()
190 smu_v11_0_i2c_clear_status(control); in smu_v11_0_i2c_poll_rx_status()
222 static uint32_t smu_v11_0_i2c_transmit(struct i2c_adapter *control, in smu_v11_0_i2c_transmit() argument
226 struct amdgpu_device *adev = to_amdgpu_device(control); in smu_v11_0_i2c_transmit()
241 smu_v11_0_i2c_set_address(control, address); in smu_v11_0_i2c_transmit()
243 smu_v11_0_i2c_enable(control, true); in smu_v11_0_i2c_transmit()
246 smu_v11_0_i2c_clear_status(control); in smu_v11_0_i2c_transmit()
293 ret = smu_v11_0_i2c_poll_tx_status(control); in smu_v11_0_i2c_transmit()
322 static uint32_t smu_v11_0_i2c_receive(struct i2c_adapter *control, in smu_v11_0_i2c_receive() argument
326 struct amdgpu_device *adev = to_amdgpu_device(control); in smu_v11_0_i2c_receive()
332 smu_v11_0_i2c_set_address(control, address); in smu_v11_0_i2c_receive()
335 smu_v11_0_i2c_enable(control, true); in smu_v11_0_i2c_receive()
340 smu_v11_0_i2c_clear_status(control); in smu_v11_0_i2c_receive()
362 ret = smu_v11_0_i2c_poll_rx_status(control); in smu_v11_0_i2c_receive()
397 static void smu_v11_0_i2c_abort(struct i2c_adapter *control) in smu_v11_0_i2c_abort() argument
399 struct amdgpu_device *adev = to_amdgpu_device(control); in smu_v11_0_i2c_abort()
414 static bool smu_v11_0_i2c_activity_done(struct i2c_adapter *control) in smu_v11_0_i2c_activity_done() argument
416 struct amdgpu_device *adev = to_amdgpu_device(control); in smu_v11_0_i2c_activity_done()
432 smu_v11_0_i2c_abort(control); in smu_v11_0_i2c_activity_done()
453 static void smu_v11_0_i2c_init(struct i2c_adapter *control) in smu_v11_0_i2c_init() argument
456 smu_v11_0_i2c_set_clock_gating(control, false); in smu_v11_0_i2c_init()
458 if (!smu_v11_0_i2c_activity_done(control)) in smu_v11_0_i2c_init()
462 smu_v11_0_i2c_enable(control, false); in smu_v11_0_i2c_init()
465 smu_v11_0_i2c_configure(control); in smu_v11_0_i2c_init()
468 smu_v11_0_i2c_set_clock(control); in smu_v11_0_i2c_init()
472 static void smu_v11_0_i2c_fini(struct i2c_adapter *control) in smu_v11_0_i2c_fini() argument
474 struct amdgpu_device *adev = to_amdgpu_device(control); in smu_v11_0_i2c_fini()
477 smu_v11_0_i2c_enable(control, false); in smu_v11_0_i2c_fini()
490 smu_v11_0_i2c_abort(control); in smu_v11_0_i2c_fini()
502 /* smu_v11_0_i2c_set_clock_gating(control, true); */ in smu_v11_0_i2c_fini()
506 static bool smu_v11_0_i2c_bus_lock(struct i2c_adapter *control) in smu_v11_0_i2c_bus_lock() argument
508 struct amdgpu_device *adev = to_amdgpu_device(control); in smu_v11_0_i2c_bus_lock()
517 static bool smu_v11_0_i2c_bus_unlock(struct i2c_adapter *control) in smu_v11_0_i2c_bus_unlock() argument
519 struct amdgpu_device *adev = to_amdgpu_device(control); in smu_v11_0_i2c_bus_unlock()
530 static uint32_t smu_v11_0_i2c_read_data(struct i2c_adapter *control, in smu_v11_0_i2c_read_data() argument
538 ret = smu_v11_0_i2c_transmit(control, address, data, 2, I2C_NO_STOP); in smu_v11_0_i2c_read_data()
543 ret = smu_v11_0_i2c_receive(control, address, data + 2, numbytes - 2, in smu_v11_0_i2c_read_data()
553 static uint32_t smu_v11_0_i2c_write_data(struct i2c_adapter *control, in smu_v11_0_i2c_write_data() argument
560 ret = smu_v11_0_i2c_transmit(control, address, data, numbytes, 0); in smu_v11_0_i2c_write_data()
660 int smu_v11_0_i2c_control_init(struct i2c_adapter *control) in smu_v11_0_i2c_control_init() argument
662 struct amdgpu_device *adev = to_amdgpu_device(control); in smu_v11_0_i2c_control_init()
665 control->owner = THIS_MODULE; in smu_v11_0_i2c_control_init()
666 control->class = I2C_CLASS_SPD; in smu_v11_0_i2c_control_init()
667 control->dev.parent = &adev->pdev->dev; in smu_v11_0_i2c_control_init()
668 control->algo = &smu_v11_0_i2c_algo; in smu_v11_0_i2c_control_init()
669 snprintf(control->name, sizeof(control->name), "AMDGPU SMU"); in smu_v11_0_i2c_control_init()
670 control->lock_ops = &smu_v11_0_i2c_i2c_lock_ops; in smu_v11_0_i2c_control_init()
672 res = i2c_add_adapter(control); in smu_v11_0_i2c_control_init()
679 void smu_v11_0_i2c_control_fini(struct i2c_adapter *control) in smu_v11_0_i2c_control_fini() argument
681 i2c_del_adapter(control); in smu_v11_0_i2c_control_fini()
690 bool smu_v11_0_i2c_test_bus(struct i2c_adapter *control)
699 if (!smu_v11_0_i2c_bus_lock(control)) {
704 smu_v11_0_i2c_init(control);
707 ret = smu_v11_0_i2c_write_data(control, I2C_TARGET_ADDR, data, 6);
709 ret = smu_v11_0_i2c_read_data(control, I2C_TARGET_ADDR, data, 6);
711 smu_v11_0_i2c_fini(control);
713 smu_v11_0_i2c_bus_unlock(control);