[PATCH 1/1] drm/bridge: tc358767: explicitly set readable registers

Neil Armstrong neil.armstrong at linaro.org
Tue May 16 07:26:23 UTC 2023


On 16/05/2023 09:19, Alexander Stein wrote:
> This map was created from register map from datasheet (section 5.1.2).
> Unused registers are stated by address, so they show up in debugfs as well.
> 
> Signed-off-by: Alexander Stein <alexander.stein at ew.tq-group.com>
> ---
> When dumping the registers in debugfs there are a lot of unused and/or
> undocumented addresses. Instead explicitly state each readable register.
> 
>   drivers/gpu/drm/bridge/tc358767.c | 195 +++++++++++++++++++++++++++++-
>   1 file changed, 194 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/gpu/drm/bridge/tc358767.c b/drivers/gpu/drm/bridge/tc358767.c
> index 91f7cb56a654..954881ad5bdc 100644
> --- a/drivers/gpu/drm/bridge/tc358767.c
> +++ b/drivers/gpu/drm/bridge/tc358767.c
> @@ -1781,7 +1781,200 @@ static const struct drm_bridge_funcs tc_edp_bridge_funcs = {
>   
>   static bool tc_readable_reg(struct device *dev, unsigned int reg)
>   {
> -	return reg != SYSCTRL;
> +	switch (reg) {
> +	/* DSI D-PHY Layer */
> +	case 0x004:
> +	case 0x020:
> +	case 0x024:
> +	case 0x028:
> +	case 0x02c:
> +	case 0x030:
> +	case 0x038:
> +	case 0x040:
> +	case 0x044:
> +	case 0x048:
> +	case 0x04c:
> +	case 0x050:
> +	case 0x054:
> +	/* DSI PPI Layer */
> +	case PPI_STARTPPI:
> +	case 0x108:
> +	case 0x110:
> +	case PPI_LPTXTIMECNT:
> +	case PPI_LANEENABLE:
> +	case PPI_TX_RX_TA:
> +	case 0x140:
> +	case PPI_D0S_ATMR:
> +	case PPI_D1S_ATMR:
> +	case 0x14c:
> +	case 0x150:
> +	case PPI_D0S_CLRSIPOCOUNT:
> +	case PPI_D1S_CLRSIPOCOUNT:
> +	case PPI_D2S_CLRSIPOCOUNT:
> +	case PPI_D3S_CLRSIPOCOUNT:
> +	case 0x180:
> +	case 0x184:
> +	case 0x188:
> +	case 0x18c:
> +	case 0x190:
> +	case 0x1a0:
> +	case 0x1a4:
> +	case 0x1a8:
> +	case 0x1ac:
> +	case 0x1b0:
> +	case 0x1c0:
> +	case 0x1c4:
> +	case 0x1c8:
> +	case 0x1cc:
> +	case 0x1d0:
> +	case 0x1e0:
> +	case 0x1e4:
> +	case 0x1f0:
> +	case 0x1f4:
> +	/* DSI Protocol Layer */
> +	case DSI_STARTDSI:
> +	case 0x208:
> +	case DSI_LANEENABLE:
> +	case 0x214:
> +	case 0x218:
> +	case 0x220:
> +	case 0x224:
> +	case 0x228:
> +	case 0x230:
> +	/* DSI General */
> +	case 0x300:
> +	/* DSI Application Layer */
> +	case 0x400:
> +	case 0x404:
> +	/* DPI */
> +	case DPIPXLFMT:
> +	/* Parallel Output */
> +	case POCTRL:
> +	/* Video Path0 Configuration */
> +	case VPCTRL0:
> +	case HTIM01:
> +	case HTIM02:
> +	case VTIM01:
> +	case VTIM02:
> +	case VFUEN0:
> +	/* System */
> +	case TC_IDREG:
> +	case 0x504:
> +	case SYSSTAT:
> +	case SYSRSTENB:
> +	case SYSCTRL:
> +	/* I2C */
> +	case 0x520:
> +	/* GPIO */
> +	case GPIOM:
> +	case GPIOC:
> +	case GPIOO:
> +	case GPIOI:
> +	/* Interrupt */
> +	case INTCTL_G:
> +	case INTSTS_G:
> +	case 0x570:
> +	case 0x574:
> +	case INT_GP0_LCNT:
> +	case INT_GP1_LCNT:
> +	/* DisplayPort Control */
> +	case DP0CTL:
> +	/* DisplayPort Clock */
> +	case DP0_VIDMNGEN0:
> +	case DP0_VIDMNGEN1:
> +	case DP0_VMNGENSTATUS:
> +	case 0x628:
> +	case 0x62c:
> +	case 0x630:
> +	/* DisplayPort Main Channel */
> +	case DP0_SECSAMPLE:
> +	case DP0_VIDSYNCDELAY:
> +	case DP0_TOTALVAL:
> +	case DP0_STARTVAL:
> +	case DP0_ACTIVEVAL:
> +	case DP0_SYNCVAL:
> +	case DP0_MISC:
> +	/* DisplayPort Aux Channel */
> +	case DP0_AUXCFG0:
> +	case DP0_AUXCFG1:
> +	case DP0_AUXADDR:
> +	case 0x66c:
> +	case 0x670:
> +	case 0x674:
> +	case 0x678:
> +	case 0x67c:
> +	case 0x680:
> +	case 0x684:
> +	case 0x688:
> +	case DP0_AUXSTATUS:
> +	case DP0_AUXI2CADR:
> +	/* DisplayPort Link Training */
> +	case DP0_SRCCTRL:
> +	case DP0_LTSTAT:
> +	case DP0_SNKLTCHGREQ:
> +	case DP0_LTLOOPCTRL:
> +	case DP0_SNKLTCTRL:
> +	case 0x6e8:
> +	case 0x6ec:
> +	case 0x6f0:
> +	case 0x6f4:
> +	/* DisplayPort Audio */
> +	case 0x700:
> +	case 0x704:
> +	case 0x708:
> +	case 0x70c:
> +	case 0x710:
> +	case 0x714:
> +	case 0x718:
> +	case 0x71c:
> +	case 0x720:
> +	/* DisplayPort Source Control */
> +	case DP1_SRCCTRL:
> +	/* DisplayPort PHY */
> +	case DP_PHY_CTRL:
> +	case 0x810:
> +	case 0x814:
> +	case 0x820:
> +	case 0x840:
> +	/* I2S */
> +	case 0x880:
> +	case 0x888:
> +	case 0x88c:
> +	case 0x890:
> +	case 0x894:
> +	case 0x898:
> +	case 0x89c:
> +	case 0x8a0:
> +	case 0x8a4:
> +	case 0x8a8:
> +	case 0x8ac:
> +	case 0x8b0:
> +	case 0x8b4:
> +	/* PLL */
> +	case DP0_PLLCTRL:
> +	case DP1_PLLCTRL:
> +	case PXL_PLLCTRL:
> +	case PXL_PLLPARAM:
> +	case SYS_PLLPARAM:
> +	/* HDCP */
> +	case 0x980:
> +	case 0x984:
> +	case 0x988:
> +	case 0x98c:
> +	case 0x990:
> +	case 0x994:
> +	case 0x998:
> +	case 0x99c:
> +	case 0x9a0:
> +	case 0x9a4:
> +	case 0x9a8:
> +	case 0x9ac:
> +	/* Debug */
> +	case TSTCTL:
> +	case PLL_DBG:
> +		return true;
> +	}
> +	return false;
>   }
>   
>   static const struct regmap_range tc_volatile_ranges[] = {

Will wait for some tests before applying.

Reviewed-by: Neil Armstrong <neil.armstrong at linaro.org>


More information about the dri-devel mailing list