2019-05-30 06:17:05

by Bitan Biswas

[permalink] [raw]
Subject: [PATCH V2] drivers: i2c: tegra: fix checkpatch defects

Fix checkpatch.pl warning(s)/error(s)/check(s) in i2c-tegra.c
except for BUG/BUG_ON checks

Signed-off-by: Bitan Biswas <[email protected]>
---
drivers/i2c/busses/i2c-tegra.c | 54 +++++++++++++++++++++++-------------------
1 file changed, 30 insertions(+), 24 deletions(-)

diff --git a/drivers/i2c/busses/i2c-tegra.c b/drivers/i2c/busses/i2c-tegra.c
index ebaa78d..59f19d3 100644
--- a/drivers/i2c/busses/i2c-tegra.c
+++ b/drivers/i2c/busses/i2c-tegra.c
@@ -112,7 +112,7 @@
#define I2C_CLKEN_OVERRIDE 0x090
#define I2C_MST_CORE_CLKEN_OVR BIT(0)

-#define I2C_CONFIG_LOAD_TIMEOUT 1000000
+#define I2C_CONFIG_LOAD_TMOUT 1000000

#define I2C_MST_FIFO_CONTROL 0x0b4
#define I2C_MST_FIFO_CONTROL_RX_FLUSH BIT(0)
@@ -280,6 +280,7 @@ struct tegra_i2c_dev {
u32 bus_clk_rate;
u16 clk_divisor_non_hs_mode;
bool is_multimaster_mode;
+ /* xfer_lock: lock to serialize transfer submission and processing */
spinlock_t xfer_lock;
struct dma_chan *tx_dma_chan;
struct dma_chan *rx_dma_chan;
@@ -306,7 +307,7 @@ static u32 dvc_readl(struct tegra_i2c_dev *i2c_dev, unsigned long reg)
* to the I2C block inside the DVC block
*/
static unsigned long tegra_i2c_reg_addr(struct tegra_i2c_dev *i2c_dev,
- unsigned long reg)
+ unsigned long reg)
{
if (i2c_dev->is_dvc)
reg += (reg >= I2C_TX_FIFO) ? 0x10 : 0x40;
@@ -314,7 +315,7 @@ static unsigned long tegra_i2c_reg_addr(struct tegra_i2c_dev *i2c_dev,
}

static void i2c_writel(struct tegra_i2c_dev *i2c_dev, u32 val,
- unsigned long reg)
+ unsigned long reg)
{
writel(val, i2c_dev->base + tegra_i2c_reg_addr(i2c_dev, reg));

@@ -329,13 +330,13 @@ static u32 i2c_readl(struct tegra_i2c_dev *i2c_dev, unsigned long reg)
}

static void i2c_writesl(struct tegra_i2c_dev *i2c_dev, void *data,
- unsigned long reg, int len)
+ unsigned long reg, int len)
{
writesl(i2c_dev->base + tegra_i2c_reg_addr(i2c_dev, reg), data, len);
}

static void i2c_readsl(struct tegra_i2c_dev *i2c_dev, void *data,
- unsigned long reg, int len)
+ unsigned long reg, int len)
{
readsl(i2c_dev->base + tegra_i2c_reg_addr(i2c_dev, reg), data, len);
}
@@ -486,7 +487,7 @@ static int tegra_i2c_flush_fifos(struct tegra_i2c_dev *i2c_dev)
dev_warn(i2c_dev->dev, "timeout waiting for fifo flush\n");
return -ETIMEDOUT;
}
- msleep(1);
+ usleep_range(1000, 2000);
}
return 0;
}
@@ -680,10 +681,11 @@ static int tegra_i2c_wait_for_config_load(struct tegra_i2c_dev *i2c_dev)
i2c_writel(i2c_dev, I2C_MSTR_CONFIG_LOAD, I2C_CONFIG_LOAD);
if (in_interrupt())
err = readl_poll_timeout_atomic(addr, val, val == 0,
- 1000, I2C_CONFIG_LOAD_TIMEOUT);
+ 1000,
+ I2C_CONFIG_LOAD_TMOUT);
else
- err = readl_poll_timeout(addr, val, val == 0,
- 1000, I2C_CONFIG_LOAD_TIMEOUT);
+ err = readl_poll_timeout(addr, val, val == 0, 1000,
+ I2C_CONFIG_LOAD_TMOUT);

if (err) {
dev_warn(i2c_dev->dev,
@@ -863,11 +865,13 @@ static irqreturn_t tegra_i2c_isr(int irq, void *dev_id)
}

if (!i2c_dev->msg_read && (status & I2C_INT_TX_FIFO_DATA_REQ)) {
- if (i2c_dev->msg_buf_remaining)
- tegra_i2c_fill_tx_fifo(i2c_dev);
- else
+ if (i2c_dev->msg_buf_remaining) {
+ if (tegra_i2c_fill_tx_fifo(i2c_dev))
+ goto err;
+ } else {
tegra_i2c_mask_irq(i2c_dev,
I2C_INT_TX_FIFO_DATA_REQ);
+ }
}
}

@@ -1024,7 +1028,7 @@ static int tegra_i2c_issue_bus_clear(struct i2c_adapter *adap)
}

static int tegra_i2c_xfer_msg(struct tegra_i2c_dev *i2c_dev,
- struct i2c_msg *msg, enum msg_end_type end_state)
+ struct i2c_msg *msg, enum msg_end_type end_state)
{
u32 packet_header;
u32 int_mask;
@@ -1034,7 +1038,7 @@ static int tegra_i2c_xfer_msg(struct tegra_i2c_dev *i2c_dev,
u32 *buffer = NULL;
int err = 0;
bool dma;
- u16 xfer_time = 100;
+ u16 xfer_tm = 100;

tegra_i2c_flush_fifos(i2c_dev);

@@ -1058,7 +1062,7 @@ static int tegra_i2c_xfer_msg(struct tegra_i2c_dev *i2c_dev,
* Transfer time in mSec = Total bits / transfer rate
* Total bits = 9 bits per byte (including ACK bit) + Start & stop bits
*/
- xfer_time += DIV_ROUND_CLOSEST(((xfer_size * 9) + 2) * MSEC_PER_SEC,
+ xfer_tm += DIV_ROUND_CLOSEST(((xfer_size * 9) + 2) * MSEC_PER_SEC,
i2c_dev->bus_clk_rate);
spin_lock_irqsave(&i2c_dev->xfer_lock, flags);

@@ -1137,7 +1141,8 @@ static int tegra_i2c_xfer_msg(struct tegra_i2c_dev *i2c_dev,
goto unlock;
}
} else {
- tegra_i2c_fill_tx_fifo(i2c_dev);
+ if (tegra_i2c_fill_tx_fifo(i2c_dev))
+ goto unlock;
}
}

@@ -1161,9 +1166,9 @@ static int tegra_i2c_xfer_msg(struct tegra_i2c_dev *i2c_dev,
if (err)
return err;

- time_left = wait_for_completion_timeout(
- &i2c_dev->dma_complete,
- msecs_to_jiffies(xfer_time));
+ time_left =
+ wait_for_completion_timeout(&i2c_dev->dma_complete,
+ msecs_to_jiffies(xfer_tm));
if (time_left == 0) {
dev_err(i2c_dev->dev, "DMA transfer timeout\n");
dmaengine_terminate_sync(i2c_dev->msg_read ?
@@ -1189,7 +1194,7 @@ static int tegra_i2c_xfer_msg(struct tegra_i2c_dev *i2c_dev,
}

time_left = wait_for_completion_timeout(&i2c_dev->msg_complete,
- msecs_to_jiffies(xfer_time));
+ msecs_to_jiffies(xfer_tm));
tegra_i2c_mask_irq(i2c_dev, int_mask);

if (time_left == 0) {
@@ -1225,7 +1230,7 @@ static int tegra_i2c_xfer_msg(struct tegra_i2c_dev *i2c_dev,
}

static int tegra_i2c_xfer(struct i2c_adapter *adap, struct i2c_msg msgs[],
- int num)
+ int num)
{
struct tegra_i2c_dev *i2c_dev = i2c_get_adapdata(adap);
int i;
@@ -1273,12 +1278,12 @@ static void tegra_i2c_parse_dt(struct tegra_i2c_dev *i2c_dev)
int ret;

ret = of_property_read_u32(np, "clock-frequency",
- &i2c_dev->bus_clk_rate);
+ &i2c_dev->bus_clk_rate);
if (ret)
i2c_dev->bus_clk_rate = 100000; /* default clock rate */

i2c_dev->is_multimaster_mode = of_property_read_bool(np,
- "multi-master");
+ "multi-master");
}

static const struct i2c_algorithm tegra_i2c_algo = {
@@ -1622,7 +1627,7 @@ static int tegra_i2c_probe(struct platform_device *pdev)
}

ret = devm_request_irq(&pdev->dev, i2c_dev->irq,
- tegra_i2c_isr, 0, dev_name(&pdev->dev), i2c_dev);
+ tegra_i2c_isr, 0, dev_name(&pdev->dev), i2c_dev);
if (ret) {
dev_err(&pdev->dev, "Failed to request irq %i\n", i2c_dev->irq);
goto release_dma;
@@ -1691,6 +1696,7 @@ static const struct dev_pm_ops tegra_i2c_pm = {
SET_RUNTIME_PM_OPS(tegra_i2c_runtime_suspend, tegra_i2c_runtime_resume,
NULL)
};
+
#define TEGRA_I2C_PM (&tegra_i2c_pm)
#else
#define TEGRA_I2C_PM NULL
--
2.7.4


2019-05-30 11:38:05

by Dmitry Osipenko

[permalink] [raw]
Subject: Re: [PATCH V2] drivers: i2c: tegra: fix checkpatch defects

30.05.2019 9:14, Bitan Biswas пишет:
> Fix checkpatch.pl warning(s)/error(s)/check(s) in i2c-tegra.c
> except for BUG/BUG_ON checks

Please turn the BUG_ON's into WARN_ON's. The machine won't go on fire,
hence there is absolutely no good reason in making system unusable on a
software bug. BUG_ON may be more useful for development, but not for a
casual daily usage.

> Signed-off-by: Bitan Biswas <[email protected]>
> ---

> @@ -1034,7 +1038,7 @@ static int tegra_i2c_xfer_msg(struct tegra_i2c_dev *i2c_dev,
> u32 *buffer = NULL;
> int err = 0;
> bool dma;
> - u16 xfer_time = 100;
> + u16 xfer_tm = 100;

What's wrong with the "time"? I'm finding the "xfer_tm" as a very
unintuitive naming.

--
Dmitry

2019-05-30 11:44:27

by Dmitry Osipenko

[permalink] [raw]
Subject: Re: [PATCH V2] drivers: i2c: tegra: fix checkpatch defects

30.05.2019 14:36, Dmitry Osipenko пишет:
> 30.05.2019 9:14, Bitan Biswas пишет:
>> Fix checkpatch.pl warning(s)/error(s)/check(s) in i2c-tegra.c
>> except for BUG/BUG_ON checks
>
> Please turn the BUG_ON's into WARN_ON's. The machine won't go on fire,
> hence there is absolutely no good reason in making system unusable on a
> software bug. BUG_ON may be more useful for development, but not for a
> casual daily usage.
>
>> Signed-off-by: Bitan Biswas <[email protected]>
>> ---
>
>> @@ -1034,7 +1038,7 @@ static int tegra_i2c_xfer_msg(struct tegra_i2c_dev *i2c_dev,
>> u32 *buffer = NULL;
>> int err = 0;
>> bool dma;
>> - u16 xfer_time = 100;
>> + u16 xfer_tm = 100;
>
> What's wrong with the "time"? I'm finding the "xfer_tm" as a very
> unintuitive naming.
>

Also, please don't version patch as v2 if v1 was never sent out.

2019-05-31 09:06:19

by Bitan Biswas

[permalink] [raw]
Subject: Re: [PATCH V2] drivers: i2c: tegra: fix checkpatch defects



On 5/30/19 4:43 AM, Dmitry Osipenko wrote:
> 30.05.2019 14:36, Dmitry Osipenko пишет:
>> 30.05.2019 9:14, Bitan Biswas пишет:
>>> Fix checkpatch.pl warning(s)/error(s)/check(s) in i2c-tegra.c
>>> except for BUG/BUG_ON checks
>>
>> Please turn the BUG_ON's into WARN_ON's. The machine won't go on fire,
>> hence there is absolutely no good reason in making system unusable on a
>> software bug. BUG_ON may be more useful for development, but not for a
>> casual daily usage.
I shall update the patch to remove the BUG/BUG_ON calls.

>>
>>> Signed-off-by: Bitan Biswas <[email protected]>
>>> ---
>>
>>> @@ -1034,7 +1038,7 @@ static int tegra_i2c_xfer_msg(struct tegra_i2c_dev *i2c_dev,
>>> u32 *buffer = NULL;
>>> int err = 0;
>>> bool dma;
>>> - u16 xfer_time = 100;
>>> + u16 xfer_tm = 100;
>>
>> What's wrong with the "time"? I'm finding the "xfer_tm" as a very
>> unintuitive naming.
>>
>
> Also, please don't version patch as v2 if v1 was never sent out.
>
I marked the patch version as V2 incorrectly. Sorry. I shall be careful
about the patch version sequence from now on.

-regards,
Bitan

2019-05-31 12:47:43

by Dmitry Osipenko

[permalink] [raw]
Subject: Re: [PATCH V2] drivers: i2c: tegra: fix checkpatch defects

31.05.2019 12:04, Bitan Biswas пишет:
>
>
> On 5/30/19 4:43 AM, Dmitry Osipenko wrote:
>> 30.05.2019 14:36, Dmitry Osipenko пишет:
>>> 30.05.2019 9:14, Bitan Biswas пишет:
>>>> Fix checkpatch.pl warning(s)/error(s)/check(s) in i2c-tegra.c
>>>> except for BUG/BUG_ON checks
>>>
>>> Please turn the BUG_ON's into WARN_ON's. The machine won't go on fire,
>>> hence there is absolutely no good reason in making system unusable on a
>>> software bug. BUG_ON may be more useful for development, but not for a
>>> casual daily usage.
> I shall update the patch to remove the BUG/BUG_ON calls.

Please replace them with WARN_ON_ONCE.

2019-06-06 06:26:10

by Bitan Biswas

[permalink] [raw]
Subject: Re: [PATCH V2] drivers: i2c: tegra: fix checkpatch defects



On 5/31/19 5:45 AM, Dmitry Osipenko wrote:
> 31.05.2019 12:04, Bitan Biswas пишет:
>>
>>
>> On 5/30/19 4:43 AM, Dmitry Osipenko wrote:
>>> 30.05.2019 14:36, Dmitry Osipenko пишет:
>>>> 30.05.2019 9:14, Bitan Biswas пишет:
>>>>> Fix checkpatch.pl warning(s)/error(s)/check(s) in i2c-tegra.c
>>>>> except for BUG/BUG_ON checks
>>>>
>>>> Please turn the BUG_ON's into WARN_ON's. The machine won't go on fire,
>>>> hence there is absolutely no good reason in making system unusable on a
>>>> software bug. BUG_ON may be more useful for development, but not for a
>>>> casual daily usage.
>> I shall update the patch to remove the BUG/BUG_ON calls.
>
> Please replace them with WARN_ON_ONCE.
>
Based on review of the BUG_ON some were found redundant calls and hence
planned to be removed. Non-trivial BUG_ON planned to be replaced with
WARN_ON_ONCE call.

-regards,
Bitan