On Wed, May 09, 2018 at 12:57:19PM +0200, Sebastian Reichel wrote: > Hi, > > On Fri, Apr 27, 2018 at 01:13:32AM +0900, Akinobu Mita wrote: > > diff --git a/drivers/media/i2c/sccb.c b/drivers/media/i2c/sccb.c > > new file mode 100644 > > index 0000000..80a3fb7 > > --- /dev/null > > +++ b/drivers/media/i2c/sccb.c > > @@ -0,0 +1,35 @@ > > +// SPDX-License-Identifier: GPL-2.0 > > + > > +#include <linux/i2c.h> > > + > > +int sccb_read_byte(struct i2c_client *client, u8 addr) > > +{ > > + int ret; > > + u8 val; > > + > > + /* Issue two separated requests in order to avoid repeated start */ > > + > > + ret = i2c_master_send(client, &addr, 1); > > + if (ret < 0) > > + return ret; > > + > > + ret = i2c_master_recv(client, &val, 1); > > + if (ret < 0) > > + return ret; > > + > > + return val; > > +} > > +EXPORT_SYMBOL_GPL(sccb_read_byte); > > + > > +int sccb_write_byte(struct i2c_client *client, u8 addr, u8 data) > > +{ > > + int ret; > > + unsigned char msgbuf[] = { addr, data }; > > + > > + ret = i2c_master_send(client, msgbuf, 2); > > + if (ret < 0) > > + return ret; > > + > > + return 0; > > +} > > +EXPORT_SYMBOL_GPL(sccb_write_byte); > > diff --git a/drivers/media/i2c/sccb.h b/drivers/media/i2c/sccb.h > > new file mode 100644 > > index 0000000..68da0e9 > > --- /dev/null > > +++ b/drivers/media/i2c/sccb.h > > @@ -0,0 +1,14 @@ > > +/* SPDX-License-Identifier: GPL-2.0 */ > > +/* > > + * SCCB helper functions > > + */ > > + > > +#ifndef __SCCB_H__ > > +#define __SCCB_H__ > > + > > +#include <linux/i2c.h> > > + > > +int sccb_read_byte(struct i2c_client *client, u8 addr); > > +int sccb_write_byte(struct i2c_client *client, u8 addr, u8 data); > > + > > +#endif /* __SCCB_H__ */ > > The functions look very simple. Have you considered moving them into > sccb.h as static inline? I agree. (Considering my previous comment on the dependencies, this is a better idea. No need for a module this small.) -- Sakari Ailus e-mail: sakari.ailus@xxxxxx