[PATCH 35/48] drm: omapdrm: dsi: Make wait_for_bit_change() return a status
Sebastian Reichel
sre at kernel.org
Tue Oct 17 19:12:24 UTC 2017
Hi,
On Fri, Oct 13, 2017 at 05:59:31PM +0300, Laurent Pinchart wrote:
> The wait_for_bit_change() function returns the value of the bit it
> polls. This requires the caller to compare the return value to the
> expected bit value. As all the existing callers need is to check whether
> the bit has reached the expected value, it's easier to return a boolean
> status from the function.
>
> Signed-off-by: Laurent Pinchart <laurent.pinchart at ideasonboard.com>
> ---
Reviewed-by: Sebastian Reichel <sebastian.reichel at collabora.co.uk>
-- Sebastian
> drivers/gpu/drm/omapdrm/dss/dsi.c | 31 +++++++++++++++----------------
> 1 file changed, 15 insertions(+), 16 deletions(-)
>
> diff --git a/drivers/gpu/drm/omapdrm/dss/dsi.c b/drivers/gpu/drm/omapdrm/dss/dsi.c
> index 7fb048023fd0..c94bb6404a69 100644
> --- a/drivers/gpu/drm/omapdrm/dss/dsi.c
> +++ b/drivers/gpu/drm/omapdrm/dss/dsi.c
> @@ -531,7 +531,7 @@ static void dsi_completion_handler(void *data, u32 mask)
> complete((struct completion *)data);
> }
>
> -static inline int wait_for_bit_change(struct platform_device *dsidev,
> +static inline bool wait_for_bit_change(struct platform_device *dsidev,
> const struct dsi_reg idx, int bitnum, int value)
> {
> unsigned long timeout;
> @@ -542,21 +542,21 @@ static inline int wait_for_bit_change(struct platform_device *dsidev,
> t = 100;
> while (t-- > 0) {
> if (REG_GET(dsidev, idx, bitnum, bitnum) == value)
> - return value;
> + return true;
> }
>
> /* then loop for 500ms, sleeping for 1ms in between */
> timeout = jiffies + msecs_to_jiffies(500);
> while (time_before(jiffies, timeout)) {
> if (REG_GET(dsidev, idx, bitnum, bitnum) == value)
> - return value;
> + return true;
>
> wait = ns_to_ktime(1000 * 1000);
> set_current_state(TASK_UNINTERRUPTIBLE);
> schedule_hrtimeout(&wait, HRTIMER_MODE_REL);
> }
>
> - return !value;
> + return false;
> }
>
> static u8 dsi_get_pixel_size(enum omap_dss_dsi_pixel_format fmt)
> @@ -1259,9 +1259,9 @@ static inline int dsi_if_enable(struct platform_device *dsidev, bool enable)
> enable = enable ? 1 : 0;
> REG_FLD_MOD(dsidev, DSI_CTRL, enable, 0, 0); /* IF_EN */
>
> - if (wait_for_bit_change(dsidev, DSI_CTRL, 0, enable) != enable) {
> - DSSERR("Failed to set dsi_if_enable to %d\n", enable);
> - return -EIO;
> + if (!wait_for_bit_change(dsidev, DSI_CTRL, 0, enable)) {
> + DSSERR("Failed to set dsi_if_enable to %d\n", enable);
> + return -EIO;
> }
>
> return 0;
> @@ -1450,7 +1450,7 @@ static int dsi_pll_enable(struct dss_pll *pll)
> /* XXX PLL does not come out of reset without this... */
> dispc_pck_free_enable(1);
>
> - if (wait_for_bit_change(dsidev, DSI_PLL_STATUS, 0, 1) != 1) {
> + if (!wait_for_bit_change(dsidev, DSI_PLL_STATUS, 0, 1)) {
> DSSERR("PLL not coming out of reset.\n");
> r = -ENODEV;
> dispc_pck_free_enable(0);
> @@ -2200,7 +2200,7 @@ static int dsi_cio_init(struct platform_device *dsidev)
> * I/O. */
> dsi_read_reg(dsidev, DSI_DSIPHY_CFG5);
>
> - if (wait_for_bit_change(dsidev, DSI_DSIPHY_CFG5, 30, 1) != 1) {
> + if (!wait_for_bit_change(dsidev, DSI_DSIPHY_CFG5, 30, 1)) {
> DSSERR("CIO SCP Clock domain not coming out of reset.\n");
> r = -EIO;
> goto err_scp_clk_dom;
> @@ -2248,7 +2248,7 @@ static int dsi_cio_init(struct platform_device *dsidev)
> if (r)
> goto err_cio_pwr;
>
> - if (wait_for_bit_change(dsidev, DSI_COMPLEXIO_CFG1, 29, 1) != 1) {
> + if (!wait_for_bit_change(dsidev, DSI_COMPLEXIO_CFG1, 29, 1)) {
> DSSERR("CIO PWR clock domain not coming out of reset.\n");
> r = -ENODEV;
> goto err_cio_pwr_dom;
> @@ -2389,7 +2389,7 @@ static int dsi_force_tx_stop_mode_io(struct platform_device *dsidev)
> r = FLD_MOD(r, 1, 15, 15); /* FORCE_TX_STOP_MODE_IO */
> dsi_write_reg(dsidev, DSI_TIMING1, r);
>
> - if (wait_for_bit_change(dsidev, DSI_TIMING1, 15, 0) != 0) {
> + if (!wait_for_bit_change(dsidev, DSI_TIMING1, 15, 0)) {
> DSSERR("TX_STOP bit not going down\n");
> return -EIO;
> }
> @@ -2531,10 +2531,9 @@ static int dsi_vc_enable(struct platform_device *dsidev, int channel,
>
> REG_FLD_MOD(dsidev, DSI_VC_CTRL(channel), enable, 0, 0);
>
> - if (wait_for_bit_change(dsidev, DSI_VC_CTRL(channel),
> - 0, enable) != enable) {
> - DSSERR("Failed to set dsi_vc_enable to %d\n", enable);
> - return -EIO;
> + if (!wait_for_bit_change(dsidev, DSI_VC_CTRL(channel), 0, enable)) {
> + DSSERR("Failed to set dsi_vc_enable to %d\n", enable);
> + return -EIO;
> }
>
> return 0;
> @@ -2586,7 +2585,7 @@ static int dsi_vc_config_source(struct platform_device *dsidev, int channel,
> dsi_vc_enable(dsidev, channel, 0);
>
> /* VC_BUSY */
> - if (wait_for_bit_change(dsidev, DSI_VC_CTRL(channel), 15, 0) != 0) {
> + if (!wait_for_bit_change(dsidev, DSI_VC_CTRL(channel), 15, 0)) {
> DSSERR("vc(%d) busy when trying to config for VP\n", channel);
> return -EIO;
> }
> --
> Regards,
>
> Laurent Pinchart
>
> _______________________________________________
> dri-devel mailing list
> dri-devel at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/dri-devel
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 833 bytes
Desc: not available
URL: <https://lists.freedesktop.org/archives/dri-devel/attachments/20171017/3a661b6e/attachment.sig>
More information about the dri-devel
mailing list