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? -- Sebastian
Attachment:
signature.asc
Description: PGP signature