[PATCH][I2C] Marvell mv64xxx i2c driver
Alexey Dobriyan
adobriyan at mail.ru
Thu Feb 3 14:56:59 CET 2005
On Wednesday 02 February 2005 19:26, Mark A. Greer wrote:
> How's this (a complete replacement for previous patch)?
> --- a/drivers/i2c/busses/Kconfig
> +++ b/drivers/i2c/busses/Kconfig
> + If you say yes to this option, support will be included for the
> + built-in I2C interface on the Marvell 64xxx line of host bridges
Dot at the end. Should have noticed it earlier...
> + This driver can also be built as a module. If so, the module
> --- /dev/null
> +++ b/drivers/i2c/busses/i2c-mv64xxx.c
> +static void
> +mv64xxx_i2c_fsm(struct mv64xxx_i2c_data *drv_data, u32 status)
> + if (drv_data->state == MV64XXX_I2C_STATE_IDLE) {
> + drv_data->action = MV64XXX_I2C_ACTION_SEND_STOP;
> + drv_data->state = MV64XXX_I2C_STATE_IDLE;
drv_data->state is already MV64XXX_I2C_STATE_IDLE. Gcc will probably optimize
this line away, but...
> + }
> + else {
It should be "} else {" according to CodingStyle.
> +static int
> +mv64xxx_i2c_intr(int irq, void *dev_id, struct pt_regs *regs)
> + while (readl(drv_data->reg_base + MV64XXX_I2C_REG_CONTROL) &
> + MV64XXX_I2C_REG_CONTROL_IFLG) {
> + status = readl(drv_data->reg_base + MV64XXX_I2C_REG_STATUS);
> + mv64xxx_i2c_fsm(drv_data, status);
It can set drv_data->rc to -ENODEV or -EIO. In both cases ->action goes to
MV64XXX_I2C_ACTION_SEND_STOP and mv64xxx_i2c_do_action() will writel()
something. Is it correct to _not_ check ->rc here? If it isn't then would it be
better to make all functions that set it return -E___ instead and drop
struct mv64xxx_i2c_data.rc altogether?
> + mv64xxx_i2c_do_action(drv_data);
> +static void
> +mv64xxx_i2c_wait_for_completion(struct mv64xxx_i2c_data *drv_data)
> + time_left = wait_event_timeout(drv_data->waitq,
> + !drv_data->block,
> + msecs_to_jiffies(drv_data->adapter.timeout));
> +
> + if (!time_left <= 0) {
Confusing. You meant "if (time_left)" or "if (time_left > 0)"?
> + drv_data->state = MV64XXX_I2C_STATE_IDLE;
> + dev_err(&drv_data->adapter.dev,
> + "mv64xxx: I2C bus locked\n");
> + }
> +static struct i2c_algorithm mv64xxx_i2c_algo = {
> + .name = MV64XXX_I2C_CTLR_NAME "algorithm",
MV64XXX_I2C_CTLR_NAME doesn't end with space. " algorithm" here.
> +static int __devinit
> +mv64xxx_i2c_probe(struct device *dev)
> + strncpy(drv_data->adapter.name, MV64XXX_I2C_CTLR_NAME "adapter",
> + I2C_NAME_SIZE);
And " adapter" there.
> + dev_err(dev, "mv64xxx: Can't register intr handler "
> + "irq: %d\\n", drv_data->irq);
You snipped s# \\n # \n # suggestion in my previous email. ;-)
> --- a/include/linux/mv643xx.h
> +++ b/include/linux/mv643xx.h
> +#define MV64XXX_I2C_CTLR_NAME "mv64xxx i2c"
Alexey
More information about the lm-sensors
mailing list