Hi Pavel, Thanks for the update. On Wed, Dec 14, 2016 at 01:24:51PM +0100, Pavel Machek wrote: ... > +static int et8ek8_set_ctrl(struct v4l2_ctrl *ctrl) > +{ > + struct et8ek8_sensor *sensor = > + container_of(ctrl->handler, struct et8ek8_sensor, ctrl_handler); > + > + switch (ctrl->id) { > + case V4L2_CID_GAIN: > + return et8ek8_set_gain(sensor, ctrl->val); > + > + case V4L2_CID_EXPOSURE: > + { > + int rows; > + struct i2c_client *client = v4l2_get_subdevdata(&sensor->subdev); > + rows = ctrl->val; > + return et8ek8_i2c_write_reg(client, ET8EK8_REG_16BIT, 0x1243, > + swab16(rows)); Why swab16()? Doesn't the et8ek8_i2c_write_reg() already do the right thing? 16-bit writes aren't used elsewhere... and the register address and value seem to have different endianness there, it looks like a bug to me in that function. -- Regards, Sakari Ailus e-mail: sakari.ailus@xxxxxx XMPP: sailus@xxxxxxxxxxxxxx -- To unsubscribe from this list: send the line "unsubscribe linux-media" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html