[PATCH v3] i2c: new bus driver for efm32

Uwe Kleine-König u.kleine-koenig at pengutronix.de
Mon Mar 24 14:41:14 EDT 2014


On Mon, Mar 24, 2014 at 06:01:31PM +0100, Wolfram Sang wrote:
> > --- /dev/null
> > +++ b/Documentation/devicetree/bindings/i2c/i2c-efm32.txt
> > @@ -0,0 +1,34 @@
> > +* Energymicro efm32 i2c controller
> > +
> > +Required properties :
> > +
> > + - reg : Offset and length of the register set for the device
> > + - compatible : should be "efm32,i2c"
> 
> Ehrm, come to think of it, shouldn't that actually be "energymicro, efm32-i2c"
> or similar to match the "vendor,product" pattern?
yes.

> 
> > +config I2C_EFM32
> > +	tristate "EFM32 I2C controller"
> > +	depends on OF && (ARCH_EFM32 || COMPILE_TEST)
> 
> Is EFM32 DT only? Do we need the dependency on OF?
yes, efm32 is DT only. Still for the COMPILE_TEST branch the OF is
needed.
 
> > +	help
> > +	  This driver supports the i2c block found in Energy Micro's EFM32
> > +	  SoCs.
> > +
> 
> ...
> 
> > +static int efm32_i2c_master_xfer(struct i2c_adapter *adap,
> > +		struct i2c_msg *msgs, int num)
> > +{
> > +	struct efm32_i2c_ddata *ddata = i2c_get_adapdata(adap);
> > +	int ret;
> > +
> > +	if (ddata->msgs)
> > +		return -EBUSY;
> > +
> > +	ddata->msgs = msgs;
> > +	ddata->num_msgs = num;
> > +	ddata->current_word = 0;
> > +	ddata->current_msg = 0;
> > +	ddata->retval = -EIO;
> > +
> > +	reinit_completion(&ddata->done);
> > +
> > +	dev_dbg(&ddata->adapter.dev, "state: %08x, status: %08x\n",
> > +			efm32_i2c_read32(ddata, REG_STATE),
> > +			efm32_i2c_read32(ddata, REG_STATUS));
> > +
> > +	efm32_i2c_send_next_msg(ddata);
> > +
> > +	wait_for_completion(&ddata->done);
> > +
> > +	if (ddata->current_msg >= ddata->num_msgs)
> > +		ret = ddata->num_msgs;
> > +	else
> > +		ret = ddata->retval;
> > +
> > +	ddata->msgs = NULL;
> 
> Setting NULL should not be needed?
Right, that's a left over from the locking stuff.
 
> > +
> > +	return ret;
> > +}
> > +
> 
> And checkpatch said:
> 
> WARNING: braces {} are not necessary for any arm of this statement
> #345: FILE: drivers/i2c/busses/i2c-efm32.c:239:
> +		if (cur_msg->flags & I2C_M_RD) {
> ...
ok.

Uwe

-- 
Pengutronix e.K.                           | Uwe Kleine-König            |
Industrial Linux Solutions                 | http://www.pengutronix.de/  |



More information about the linux-arm-kernel mailing list