[PATCH] soc: imx: imx8m-blk-ctrl: set LCDIF panic read hurry level
Marco Felsch
m.felsch at pengutronix.de
Wed Dec 21 00:33:59 PST 2022
On 22-12-20, Lucas Stach wrote:
> When the LCDIF block signals a panic condition due to the display FIFO
> falling below the threshold, the priority at the NoC level is boosted
> to the value set in the LCDIF_ARCACHE_CTRL register of i.MX8MP mediamix
> blk-ctrl. Same as all other blk-ctrl registers this register is reset
> when the domain is powered down. Initialize the panic hurry levels for
> both LCIF interfaces to the maximium priority (same as downstream TF-A
> and proven to work with the other priorities set in the interconnect
> driver) when coming back from power down.
>
> Signed-off-by: Lucas Stach <l.stach at pengutronix.de>
lgtm apart a minor nit, please see below.
Reviewed-by: Marco Felsch <m.felsch at pengutronix.de>
> ---
> drivers/soc/imx/imx8m-blk-ctrl.c | 27 +++++++++++++++++++++------
> 1 file changed, 21 insertions(+), 6 deletions(-)
>
> diff --git a/drivers/soc/imx/imx8m-blk-ctrl.c b/drivers/soc/imx/imx8m-blk-ctrl.c
> index 00879615a701..b93b296c47be 100644
> --- a/drivers/soc/imx/imx8m-blk-ctrl.c
> +++ b/drivers/soc/imx/imx8m-blk-ctrl.c
> @@ -4,6 +4,7 @@
> * Copyright 2021 Pengutronix, Lucas Stach <kernel at pengutronix.de>
> */
>
> +#include <linux/bitfield.h>
> #include <linux/device.h>
> #include <linux/interconnect.h>
> #include <linux/module.h>
> @@ -649,6 +650,10 @@ static const struct imx8m_blk_ctrl_data imx8mn_disp_blk_ctl_dev_data = {
> .num_domains = ARRAY_SIZE(imx8mn_disp_blk_ctl_domain_data),
> };
>
> +#define LCDIF_ARCACHE_CTRL 0x4c
> +#define LCDIF_1_RD_HURRY GENMASK(15, 13)
> +#define LCDIF_0_RD_HURRY GENMASK(12, 10)
^
Was this extra space intended?
Regards,
Marco
> +
> static int imx8mp_media_power_notifier(struct notifier_block *nb,
> unsigned long action, void *data)
> {
> @@ -662,14 +667,24 @@ static int imx8mp_media_power_notifier(struct notifier_block *nb,
> regmap_set_bits(bc->regmap, BLK_CLK_EN, BIT(8));
> regmap_set_bits(bc->regmap, BLK_SFT_RSTN, BIT(8));
>
> - /*
> - * On power up we have no software backchannel to the GPC to
> - * wait for the ADB handshake to happen, so we just delay for a
> - * bit. On power down the GPC driver waits for the handshake.
> - */
> - if (action == GENPD_NOTIFY_ON)
> + if (action == GENPD_NOTIFY_ON) {
> + /*
> + * On power up we have no software backchannel to the GPC to
> + * wait for the ADB handshake to happen, so we just delay for a
> + * bit. On power down the GPC driver waits for the handshake.
> + */
> udelay(5);
>
> + /*
> + * Set panic read hurry level for both LCDIF interfaces to
> + * maximum priority to minimize chances of display FIFO
> + * underflow.
> + */
> + regmap_set_bits(bc->regmap, LCDIF_ARCACHE_CTRL,
> + FIELD_PREP(LCDIF_1_RD_HURRY, 7) |
> + FIELD_PREP(LCDIF_0_RD_HURRY, 7));
> + }
> +
> return NOTIFY_OK;
> }
>
> --
> 2.30.2
>
>
>
More information about the linux-arm-kernel
mailing list