Path: blob/master/drivers/gpu/drm/bridge/cadence/cdns-mhdp8546-j721e.c
26516 views
// SPDX-License-Identifier: GPL-2.01/*2* TI j721e Cadence MHDP8546 DP wrapper3*4* Copyright (C) 2020 Texas Instruments Incorporated - http://www.ti.com/5* Author: Jyri Sarha <[email protected]>6*/78#include <linux/io.h>9#include <linux/platform_device.h>1011#include "cdns-mhdp8546-j721e.h"1213#define REVISION 0x0014#define DPTX_IPCFG 0x0415#define ECC_MEM_CFG 0x0816#define DPTX_DSC_CFG 0x0c17#define DPTX_SRC_CFG 0x1018#define DPTX_VIF_SECURE_MODE_CFG 0x1419#define DPTX_VIF_CONN_STATUS 0x1820#define PHY_CLK_STATUS 0x1c2122#define DPTX_SRC_AIF_EN BIT(16)23#define DPTX_SRC_VIF_3_IN30B BIT(11)24#define DPTX_SRC_VIF_2_IN30B BIT(10)25#define DPTX_SRC_VIF_1_IN30B BIT(9)26#define DPTX_SRC_VIF_0_IN30B BIT(8)27#define DPTX_SRC_VIF_3_SEL_DPI5 BIT(7)28#define DPTX_SRC_VIF_3_SEL_DPI3 029#define DPTX_SRC_VIF_2_SEL_DPI4 BIT(6)30#define DPTX_SRC_VIF_2_SEL_DPI2 031#define DPTX_SRC_VIF_1_SEL_DPI3 BIT(5)32#define DPTX_SRC_VIF_1_SEL_DPI1 033#define DPTX_SRC_VIF_0_SEL_DPI2 BIT(4)34#define DPTX_SRC_VIF_0_SEL_DPI0 035#define DPTX_SRC_VIF_3_EN BIT(3)36#define DPTX_SRC_VIF_2_EN BIT(2)37#define DPTX_SRC_VIF_1_EN BIT(1)38#define DPTX_SRC_VIF_0_EN BIT(0)3940/* TODO turn DPTX_IPCFG fw_mem_clk_en at pm_runtime_suspend. */4142static int cdns_mhdp_j721e_init(struct cdns_mhdp_device *mhdp)43{44struct platform_device *pdev = to_platform_device(mhdp->dev);4546mhdp->j721e_regs = devm_platform_ioremap_resource(pdev, 1);47return PTR_ERR_OR_ZERO(mhdp->j721e_regs);48}4950static void cdns_mhdp_j721e_enable(struct cdns_mhdp_device *mhdp)51{52/*53* Enable VIF_0 and select DPI2 as its input. DSS0 DPI0 is connected54* to eDP DPI2. This is the only supported SST configuration on55* J721E.56*/57writel(DPTX_SRC_VIF_0_EN | DPTX_SRC_VIF_0_SEL_DPI2,58mhdp->j721e_regs + DPTX_SRC_CFG);59}6061static void cdns_mhdp_j721e_disable(struct cdns_mhdp_device *mhdp)62{63/* Put everything to defaults */64writel(0, mhdp->j721e_regs + DPTX_DSC_CFG);65}6667const struct mhdp_platform_ops mhdp_ti_j721e_ops = {68.init = cdns_mhdp_j721e_init,69.enable = cdns_mhdp_j721e_enable,70.disable = cdns_mhdp_j721e_disable,71};7273const u3274mhdp_ti_j721e_bridge_input_bus_flags = DRM_BUS_FLAG_PIXDATA_SAMPLE_NEGEDGE |75DRM_BUS_FLAG_SYNC_SAMPLE_NEGEDGE |76DRM_BUS_FLAG_DE_HIGH;777879