On 07/22/2014 09:12 AM, Thierry Reding wrote: > From: Thierry Reding <treding@xxxxxxxxxx> > > When executing DCS commands, use the channel associated with the DSI > peripheral rather than one explicitly specified in the function call. > Devices shouldn't be able to step on each others' toes like this. > > Signed-off-by: Thierry Reding <treding@xxxxxxxxxx> There could be a problem with devices associated with more than one channel, but this is theoretical problem as for now, so: Acked-by: Andrzej Hajda <a.hajda@xxxxxxxxxxx> Regards Andrzej > --- > drivers/gpu/drm/drm_mipi_dsi.c | 14 ++++++-------- > drivers/gpu/drm/panel/panel-s6e8aa0.c | 4 ++-- > include/drm/drm_mipi_dsi.h | 8 ++++---- > 3 files changed, 12 insertions(+), 14 deletions(-) > > diff --git a/drivers/gpu/drm/drm_mipi_dsi.c b/drivers/gpu/drm/drm_mipi_dsi.c > index 6d2fd2077dae..6aa6a9e95570 100644 > --- a/drivers/gpu/drm/drm_mipi_dsi.c > +++ b/drivers/gpu/drm/drm_mipi_dsi.c > @@ -201,16 +201,15 @@ EXPORT_SYMBOL(mipi_dsi_detach); > /** > * mipi_dsi_dcs_write - send DCS write command > * @dsi: DSI device > - * @channel: virtual channel > * @data: pointer to the command followed by parameters > * @len: length of @data > */ > -ssize_t mipi_dsi_dcs_write(struct mipi_dsi_device *dsi, unsigned int channel, > - const void *data, size_t len) > +ssize_t mipi_dsi_dcs_write(struct mipi_dsi_device *dsi, const void *data, > + size_t len) > { > const struct mipi_dsi_host_ops *ops = dsi->host->ops; > struct mipi_dsi_msg msg = { > - .channel = channel, > + .channel = dsi->channel, > .tx_buf = data, > .tx_len = len > }; > @@ -239,19 +238,18 @@ EXPORT_SYMBOL(mipi_dsi_dcs_write); > /** > * mipi_dsi_dcs_read - send DCS read request command > * @dsi: DSI device > - * @channel: virtual channel > * @cmd: DCS read command > * @data: pointer to read buffer > * @len: length of @data > * > * Function returns number of read bytes or error code. > */ > -ssize_t mipi_dsi_dcs_read(struct mipi_dsi_device *dsi, unsigned int channel, > - u8 cmd, void *data, size_t len) > +ssize_t mipi_dsi_dcs_read(struct mipi_dsi_device *dsi, u8 cmd, void *data, > + size_t len) > { > const struct mipi_dsi_host_ops *ops = dsi->host->ops; > struct mipi_dsi_msg msg = { > - .channel = channel, > + .channel = dsi->channel, > .type = MIPI_DSI_DCS_READ, > .tx_buf = &cmd, > .tx_len = 1, > diff --git a/drivers/gpu/drm/panel/panel-s6e8aa0.c b/drivers/gpu/drm/panel/panel-s6e8aa0.c > index beb43492b649..5502ef6bc074 100644 > --- a/drivers/gpu/drm/panel/panel-s6e8aa0.c > +++ b/drivers/gpu/drm/panel/panel-s6e8aa0.c > @@ -138,7 +138,7 @@ static void s6e8aa0_dcs_write(struct s6e8aa0 *ctx, const void *data, size_t len) > if (ctx->error < 0) > return; > > - ret = mipi_dsi_dcs_write(dsi, dsi->channel, data, len); > + ret = mipi_dsi_dcs_write(dsi, data, len); > if (ret < 0) { > dev_err(ctx->dev, "error %zd writing dcs seq: %*ph\n", ret, len, > data); > @@ -154,7 +154,7 @@ static int s6e8aa0_dcs_read(struct s6e8aa0 *ctx, u8 cmd, void *data, size_t len) > if (ctx->error < 0) > return ctx->error; > > - ret = mipi_dsi_dcs_read(dsi, dsi->channel, cmd, data, len); > + ret = mipi_dsi_dcs_read(dsi, cmd, data, len); > if (ret < 0) { > dev_err(ctx->dev, "error %d reading dcs seq(%#x)\n", ret, cmd); > ctx->error = ret; > diff --git a/include/drm/drm_mipi_dsi.h b/include/drm/drm_mipi_dsi.h > index 4b0112781910..7b5e1a9244e1 100644 > --- a/include/drm/drm_mipi_dsi.h > +++ b/include/drm/drm_mipi_dsi.h > @@ -127,10 +127,10 @@ struct mipi_dsi_device { > > int mipi_dsi_attach(struct mipi_dsi_device *dsi); > int mipi_dsi_detach(struct mipi_dsi_device *dsi); > -ssize_t mipi_dsi_dcs_write(struct mipi_dsi_device *dsi, unsigned int channel, > - const void *data, size_t len); > -ssize_t mipi_dsi_dcs_read(struct mipi_dsi_device *dsi, unsigned int channel, > - u8 cmd, void *data, size_t len); > +ssize_t mipi_dsi_dcs_write(struct mipi_dsi_device *dsi, const void *data, > + size_t len); > +ssize_t mipi_dsi_dcs_read(struct mipi_dsi_device *dsi, u8 cmd, void *data, > + size_t len); > > /** > * struct mipi_dsi_driver - DSI driver _______________________________________________ dri-devel mailing list dri-devel@xxxxxxxxxxxxxxxxxxxxx http://lists.freedesktop.org/mailman/listinfo/dri-devel