162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0-only */ 262306a36Sopenharmony_ci/* 362306a36Sopenharmony_ci * tc358743 - Toshiba HDMI to CSI-2 bridge 462306a36Sopenharmony_ci * 562306a36Sopenharmony_ci * Copyright 2015 Cisco Systems, Inc. and/or its affiliates. All rights reserved. 662306a36Sopenharmony_ci */ 762306a36Sopenharmony_ci 862306a36Sopenharmony_ci/* 962306a36Sopenharmony_ci * References (c = chapter, p = page): 1062306a36Sopenharmony_ci * REF_01 - Toshiba, TC358743XBG (H2C), Functional Specification, Rev 0.60 1162306a36Sopenharmony_ci * REF_02 - Toshiba, TC358743XBG_HDMI-CSI_Tv11p_nm.xls 1262306a36Sopenharmony_ci */ 1362306a36Sopenharmony_ci 1462306a36Sopenharmony_ci#ifndef _TC358743_ 1562306a36Sopenharmony_ci#define _TC358743_ 1662306a36Sopenharmony_ci 1762306a36Sopenharmony_cienum tc358743_ddc5v_delays { 1862306a36Sopenharmony_ci DDC5V_DELAY_0_MS, 1962306a36Sopenharmony_ci DDC5V_DELAY_50_MS, 2062306a36Sopenharmony_ci DDC5V_DELAY_100_MS, 2162306a36Sopenharmony_ci DDC5V_DELAY_200_MS, 2262306a36Sopenharmony_ci}; 2362306a36Sopenharmony_ci 2462306a36Sopenharmony_cienum tc358743_hdmi_detection_delay { 2562306a36Sopenharmony_ci HDMI_MODE_DELAY_0_MS, 2662306a36Sopenharmony_ci HDMI_MODE_DELAY_25_MS, 2762306a36Sopenharmony_ci HDMI_MODE_DELAY_50_MS, 2862306a36Sopenharmony_ci HDMI_MODE_DELAY_100_MS, 2962306a36Sopenharmony_ci}; 3062306a36Sopenharmony_ci 3162306a36Sopenharmony_cistruct tc358743_platform_data { 3262306a36Sopenharmony_ci /* System clock connected to REFCLK (pin H5) */ 3362306a36Sopenharmony_ci u32 refclk_hz; /* 26 MHz, 27 MHz or 42 MHz */ 3462306a36Sopenharmony_ci 3562306a36Sopenharmony_ci /* DDC +5V debounce delay to avoid spurious interrupts when the cable 3662306a36Sopenharmony_ci * is connected. 3762306a36Sopenharmony_ci * Sets DDC5V_MODE in register DDC_CTL. 3862306a36Sopenharmony_ci * Default: DDC5V_DELAY_0_MS 3962306a36Sopenharmony_ci */ 4062306a36Sopenharmony_ci enum tc358743_ddc5v_delays ddc5v_delay; 4162306a36Sopenharmony_ci 4262306a36Sopenharmony_ci bool enable_hdcp; 4362306a36Sopenharmony_ci 4462306a36Sopenharmony_ci /* 4562306a36Sopenharmony_ci * The FIFO size is 512x32, so Toshiba recommend to set the default FIFO 4662306a36Sopenharmony_ci * level to somewhere in the middle (e.g. 300), so it can cover speed 4762306a36Sopenharmony_ci * mismatches in input and output ports. 4862306a36Sopenharmony_ci */ 4962306a36Sopenharmony_ci u16 fifo_level; 5062306a36Sopenharmony_ci 5162306a36Sopenharmony_ci /* Bps pr lane is (refclk_hz / pll_prd) * pll_fbd */ 5262306a36Sopenharmony_ci u16 pll_prd; 5362306a36Sopenharmony_ci u16 pll_fbd; 5462306a36Sopenharmony_ci 5562306a36Sopenharmony_ci /* CSI 5662306a36Sopenharmony_ci * Calculate CSI parameters with REF_02 for the highest resolution your 5762306a36Sopenharmony_ci * CSI interface can handle. The driver will adjust the number of CSI 5862306a36Sopenharmony_ci * lanes in use according to the pixel clock. 5962306a36Sopenharmony_ci * 6062306a36Sopenharmony_ci * The values in brackets are calculated with REF_02 when the number of 6162306a36Sopenharmony_ci * bps pr lane is 823.5 MHz, and can serve as a starting point. 6262306a36Sopenharmony_ci */ 6362306a36Sopenharmony_ci u32 lineinitcnt; /* (0x00001770) */ 6462306a36Sopenharmony_ci u32 lptxtimecnt; /* (0x00000005) */ 6562306a36Sopenharmony_ci u32 tclk_headercnt; /* (0x00001d04) */ 6662306a36Sopenharmony_ci u32 tclk_trailcnt; /* (0x00000000) */ 6762306a36Sopenharmony_ci u32 ths_headercnt; /* (0x00000505) */ 6862306a36Sopenharmony_ci u32 twakeup; /* (0x00004650) */ 6962306a36Sopenharmony_ci u32 tclk_postcnt; /* (0x00000000) */ 7062306a36Sopenharmony_ci u32 ths_trailcnt; /* (0x00000004) */ 7162306a36Sopenharmony_ci u32 hstxvregcnt; /* (0x00000005) */ 7262306a36Sopenharmony_ci 7362306a36Sopenharmony_ci /* DVI->HDMI detection delay to avoid unnecessary switching between DVI 7462306a36Sopenharmony_ci * and HDMI mode. 7562306a36Sopenharmony_ci * Sets HDMI_DET_V in register HDMI_DET. 7662306a36Sopenharmony_ci * Default: HDMI_MODE_DELAY_0_MS 7762306a36Sopenharmony_ci */ 7862306a36Sopenharmony_ci enum tc358743_hdmi_detection_delay hdmi_detection_delay; 7962306a36Sopenharmony_ci 8062306a36Sopenharmony_ci /* Reset PHY automatically when TMDS clock goes from DC to AC. 8162306a36Sopenharmony_ci * Sets PHY_AUTO_RST2 in register PHY_CTL2. 8262306a36Sopenharmony_ci * Default: false 8362306a36Sopenharmony_ci */ 8462306a36Sopenharmony_ci bool hdmi_phy_auto_reset_tmds_detected; 8562306a36Sopenharmony_ci 8662306a36Sopenharmony_ci /* Reset PHY automatically when TMDS clock passes 21 MHz. 8762306a36Sopenharmony_ci * Sets PHY_AUTO_RST3 in register PHY_CTL2. 8862306a36Sopenharmony_ci * Default: false 8962306a36Sopenharmony_ci */ 9062306a36Sopenharmony_ci bool hdmi_phy_auto_reset_tmds_in_range; 9162306a36Sopenharmony_ci 9262306a36Sopenharmony_ci /* Reset PHY automatically when TMDS clock is detected. 9362306a36Sopenharmony_ci * Sets PHY_AUTO_RST4 in register PHY_CTL2. 9462306a36Sopenharmony_ci * Default: false 9562306a36Sopenharmony_ci */ 9662306a36Sopenharmony_ci bool hdmi_phy_auto_reset_tmds_valid; 9762306a36Sopenharmony_ci 9862306a36Sopenharmony_ci /* Reset HDMI PHY automatically when hsync period is out of range. 9962306a36Sopenharmony_ci * Sets H_PI_RST in register HV_RST. 10062306a36Sopenharmony_ci * Default: false 10162306a36Sopenharmony_ci */ 10262306a36Sopenharmony_ci bool hdmi_phy_auto_reset_hsync_out_of_range; 10362306a36Sopenharmony_ci 10462306a36Sopenharmony_ci /* Reset HDMI PHY automatically when vsync period is out of range. 10562306a36Sopenharmony_ci * Sets V_PI_RST in register HV_RST. 10662306a36Sopenharmony_ci * Default: false 10762306a36Sopenharmony_ci */ 10862306a36Sopenharmony_ci bool hdmi_phy_auto_reset_vsync_out_of_range; 10962306a36Sopenharmony_ci}; 11062306a36Sopenharmony_ci 11162306a36Sopenharmony_ci/* custom controls */ 11262306a36Sopenharmony_ci/* Audio sample rate in Hz */ 11362306a36Sopenharmony_ci#define TC358743_CID_AUDIO_SAMPLING_RATE (V4L2_CID_USER_TC358743_BASE + 0) 11462306a36Sopenharmony_ci/* Audio present status */ 11562306a36Sopenharmony_ci#define TC358743_CID_AUDIO_PRESENT (V4L2_CID_USER_TC358743_BASE + 1) 11662306a36Sopenharmony_ci 11762306a36Sopenharmony_ci#endif 118