i2c: qup: Add shutdown method
Subsystems (2)
PATCH 1/1 i2c: qup: Add shutdown method
This shutdown method disables I2C to avoid corrupting a new kernel started with kexec.
--- drivers/i2c/busses/i2c-qup.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-)
drivers/i2c/busses/i2c-qup.c +6 -1
@@ -1651,12 +1651,16 @@ static int qup_i2c_remove(struct platform_device *pdev)return 0 ; } +static void qup_i2c_shutdown (struct platform_device *pdev) +{ +qup_i2c_remove (pdev); +} +#ifdef CONFIG_PM static int qup_i2c_pm_suspend_runtime (struct device *device) {struct qup_i2c_dev *qup =dev_get_drvdata (device); -dev_dbg (device,"pm_runtime: suspending...\n" );qup_i2c_disable_clocks (qup);return 0 ; }
@@ -1717,6 +1721,7 @@ static int qup_i2c_resume(struct device *device)static struct platform_driver qup_i2c_driver = { .probe = qup_i2c_probe, .remove = qup_i2c_remove, + .shutdown = qup_i2c_shutdown, .driver = { .name ="i2c_qup" , .pm = &qup_i2c_qup_pm_ops,
Signature · 3 lines
Qualcomm Datacenter Technologies as an affiliate of Qualcomm Technologies, Inc. Qualcomm Technologies, Inc. is a member of the Code Aurora Forum, a Linux Foundation Collaborative Project.
PATCH 1/1 i2c-qup: reduce verbosity on DMA channel not found messages
From: Sinan Kaya <[email protected]>
QDF2400 product doesn't have any BAM DMA attached to the I2C channel. This causes code to spit an unnecessary error message during boot.
--- drivers/i2c/busses/i2c-qup.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
drivers/i2c/busses/i2c-qup.c +2 -2
@@ -666,7 +666,7 @@ static int qup_i2c_req_dma(struct qup_i2c_dev *qup)if (IS_ERR (qup->btx.dma)) { err =PTR_ERR (qup->btx.dma); qup->btx.dma =NULL ; -dev_err (qup->dev,"\n tx channel not available" ); +dev_info (qup->dev,"\n tx channel not available" );return err; } }
@@ -674,7 +674,7 @@ static int qup_i2c_req_dma(struct qup_i2c_dev *qup)if (!qup->brx.dma) { qup->brx.dma =dma_request_slave_channel_reason (qup->dev,"rx" );if (IS_ERR (qup->brx.dma)) { -dev_err (qup->dev,"\n rx channel not available" ); +dev_info (qup->dev,"\n rx channel not available" ); err =PTR_ERR (qup->brx.dma); qup->brx.dma =NULL ;qup_i2c_rel_dma (qup);
Signature · 4 lines
1.9.1 Qualcomm Datacenter Technologies as an affiliate of Qualcomm Technologies, Inc. Qualcomm Technologies, Inc. is a member of the Code Aurora Forum, a Linux Foundation Collaborative Project.
Re: [PATCH] i2c-qup: reduce verbosity on DMA channel not found messages
Quoted 4 lines · Austin Christ
From: Sinan Kaya <[email protected]>
QDF2400 product doesn't have any BAM DMA attached to the I2C channel. This causes code to spit an unnecessary error message during boot.
If that's the case, then qup->is_dma should be false, and then this code should never be executed.
Wouldn't it be better if qup_i2c_probe() is modified to detect a QDF2400 and not even try to enable DMA? There's already code like that for device tree:
if (of_device_is_compatible(pdev->dev.of_node, "qcom,i2c-qup-v1.1.1")) {
qup->adap.algo = &qup_i2c_algo;
qup->adap.quirks = &qup_i2c_quirks;
else
...
qup->adap.algo = &qup_i2c_algo_v2;
ret = qup_i2c_req_dma(qup);On QDF2400, you should never be calling qup_i2c_req_dma() in the first place.
Quoted 3 lines · Austin Christ
This shutdown method disables I2C to avoid corrupting a new kernel started with kexec.
Can you elaborate on the issue you're seeing here? In what way is the i2c-qup driver special, will there be similar patches for all other drivers in the system?
Regards,
Bjorn