cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

phy-mipi-dphy.h (6381B)


      1/* SPDX-License-Identifier: GPL-2.0 */
      2/*
      3 * Copyright (C) 2018 Cadence Design Systems Inc.
      4 */
      5
      6#ifndef __PHY_MIPI_DPHY_H_
      7#define __PHY_MIPI_DPHY_H_
      8
      9/**
     10 * struct phy_configure_opts_mipi_dphy - MIPI D-PHY configuration set
     11 *
     12 * This structure is used to represent the configuration state of a
     13 * MIPI D-PHY phy.
     14 */
     15struct phy_configure_opts_mipi_dphy {
     16	/**
     17	 * @clk_miss:
     18	 *
     19	 * Timeout, in picoseconds, for receiver to detect absence of
     20	 * Clock transitions and disable the Clock Lane HS-RX.
     21	 *
     22	 * Maximum value: 60000 ps
     23	 */
     24	unsigned int		clk_miss;
     25
     26	/**
     27	 * @clk_post:
     28	 *
     29	 * Time, in picoseconds, that the transmitter continues to
     30	 * send HS clock after the last associated Data Lane has
     31	 * transitioned to LP Mode. Interval is defined as the period
     32	 * from the end of @hs_trail to the beginning of @clk_trail.
     33	 *
     34	 * Minimum value: 60000 ps + 52 * @hs_clk_rate period in ps
     35	 */
     36	unsigned int		clk_post;
     37
     38	/**
     39	 * @clk_pre:
     40	 *
     41	 * Time, in UI, that the HS clock shall be driven by
     42	 * the transmitter prior to any associated Data Lane beginning
     43	 * the transition from LP to HS mode.
     44	 *
     45	 * Minimum value: 8 UI
     46	 */
     47	unsigned int		clk_pre;
     48
     49	/**
     50	 * @clk_prepare:
     51	 *
     52	 * Time, in picoseconds, that the transmitter drives the Clock
     53	 * Lane LP-00 Line state immediately before the HS-0 Line
     54	 * state starting the HS transmission.
     55	 *
     56	 * Minimum value: 38000 ps
     57	 * Maximum value: 95000 ps
     58	 */
     59	unsigned int		clk_prepare;
     60
     61	/**
     62	 * @clk_settle:
     63	 *
     64	 * Time interval, in picoseconds, during which the HS receiver
     65	 * should ignore any Clock Lane HS transitions, starting from
     66	 * the beginning of @clk_prepare.
     67	 *
     68	 * Minimum value: 95000 ps
     69	 * Maximum value: 300000 ps
     70	 */
     71	unsigned int		clk_settle;
     72
     73	/**
     74	 * @clk_term_en:
     75	 *
     76	 * Time, in picoseconds, for the Clock Lane receiver to enable
     77	 * the HS line termination.
     78	 *
     79	 * Maximum value: 38000 ps
     80	 */
     81	unsigned int		clk_term_en;
     82
     83	/**
     84	 * @clk_trail:
     85	 *
     86	 * Time, in picoseconds, that the transmitter drives the HS-0
     87	 * state after the last payload clock bit of a HS transmission
     88	 * burst.
     89	 *
     90	 * Minimum value: 60000 ps
     91	 */
     92	unsigned int		clk_trail;
     93
     94	/**
     95	 * @clk_zero:
     96	 *
     97	 * Time, in picoseconds, that the transmitter drives the HS-0
     98	 * state prior to starting the Clock.
     99	 */
    100	unsigned int		clk_zero;
    101
    102	/**
    103	 * @d_term_en:
    104	 *
    105	 * Time, in picoseconds, for the Data Lane receiver to enable
    106	 * the HS line termination.
    107	 *
    108	 * Maximum value: 35000 ps + 4 * @hs_clk_rate period in ps
    109	 */
    110	unsigned int		d_term_en;
    111
    112	/**
    113	 * @eot:
    114	 *
    115	 * Transmitted time interval, in picoseconds, from the start
    116	 * of @hs_trail or @clk_trail, to the start of the LP- 11
    117	 * state following a HS burst.
    118	 *
    119	 * Maximum value: 105000 ps + 12 * @hs_clk_rate period in ps
    120	 */
    121	unsigned int		eot;
    122
    123	/**
    124	 * @hs_exit:
    125	 *
    126	 * Time, in picoseconds, that the transmitter drives LP-11
    127	 * following a HS burst.
    128	 *
    129	 * Minimum value: 100000 ps
    130	 */
    131	unsigned int		hs_exit;
    132
    133	/**
    134	 * @hs_prepare:
    135	 *
    136	 * Time, in picoseconds, that the transmitter drives the Data
    137	 * Lane LP-00 Line state immediately before the HS-0 Line
    138	 * state starting the HS transmission.
    139	 *
    140	 * Minimum value: 40000 ps + 4 * @hs_clk_rate period in ps
    141	 * Maximum value: 85000 ps + 6 * @hs_clk_rate period in ps
    142	 */
    143	unsigned int		hs_prepare;
    144
    145	/**
    146	 * @hs_settle:
    147	 *
    148	 * Time interval, in picoseconds, during which the HS receiver
    149	 * shall ignore any Data Lane HS transitions, starting from
    150	 * the beginning of @hs_prepare.
    151	 *
    152	 * Minimum value: 85000 ps + 6 * @hs_clk_rate period in ps
    153	 * Maximum value: 145000 ps + 10 * @hs_clk_rate period in ps
    154	 */
    155	unsigned int		hs_settle;
    156
    157	/**
    158	 * @hs_skip:
    159	 *
    160	 * Time interval, in picoseconds, during which the HS-RX
    161	 * should ignore any transitions on the Data Lane, following a
    162	 * HS burst. The end point of the interval is defined as the
    163	 * beginning of the LP-11 state following the HS burst.
    164	 *
    165	 * Minimum value: 40000 ps
    166	 * Maximum value: 55000 ps + 4 * @hs_clk_rate period in ps
    167	 */
    168	unsigned int		hs_skip;
    169
    170	/**
    171	 * @hs_trail:
    172	 *
    173	 * Time, in picoseconds, that the transmitter drives the
    174	 * flipped differential state after last payload data bit of a
    175	 * HS transmission burst
    176	 *
    177	 * Minimum value: max(8 * @hs_clk_rate period in ps,
    178	 *		      60000 ps + 4 * @hs_clk_rate period in ps)
    179	 */
    180	unsigned int		hs_trail;
    181
    182	/**
    183	 * @hs_zero:
    184	 *
    185	 * Time, in picoseconds, that the transmitter drives the HS-0
    186	 * state prior to transmitting the Sync sequence.
    187	 */
    188	unsigned int		hs_zero;
    189
    190	/**
    191	 * @init:
    192	 *
    193	 * Time, in microseconds for the initialization period to
    194	 * complete.
    195	 *
    196	 * Minimum value: 100 us
    197	 */
    198	unsigned int		init;
    199
    200	/**
    201	 * @lpx:
    202	 *
    203	 * Transmitted length, in picoseconds, of any Low-Power state
    204	 * period.
    205	 *
    206	 * Minimum value: 50000 ps
    207	 */
    208	unsigned int		lpx;
    209
    210	/**
    211	 * @ta_get:
    212	 *
    213	 * Time, in picoseconds, that the new transmitter drives the
    214	 * Bridge state (LP-00) after accepting control during a Link
    215	 * Turnaround.
    216	 *
    217	 * Value: 5 * @lpx
    218	 */
    219	unsigned int		ta_get;
    220
    221	/**
    222	 * @ta_go:
    223	 *
    224	 * Time, in picoseconds, that the transmitter drives the
    225	 * Bridge state (LP-00) before releasing control during a Link
    226	 * Turnaround.
    227	 *
    228	 * Value: 4 * @lpx
    229	 */
    230	unsigned int		ta_go;
    231
    232	/**
    233	 * @ta_sure:
    234	 *
    235	 * Time, in picoseconds, that the new transmitter waits after
    236	 * the LP-10 state before transmitting the Bridge state
    237	 * (LP-00) during a Link Turnaround.
    238	 *
    239	 * Minimum value: @lpx
    240	 * Maximum value: 2 * @lpx
    241	 */
    242	unsigned int		ta_sure;
    243
    244	/**
    245	 * @wakeup:
    246	 *
    247	 * Time, in microseconds, that a transmitter drives a Mark-1
    248	 * state prior to a Stop state in order to initiate an exit
    249	 * from ULPS.
    250	 *
    251	 * Minimum value: 1000 us
    252	 */
    253	unsigned int		wakeup;
    254
    255	/**
    256	 * @hs_clk_rate:
    257	 *
    258	 * Clock rate, in Hertz, of the high-speed clock.
    259	 */
    260	unsigned long		hs_clk_rate;
    261
    262	/**
    263	 * @lp_clk_rate:
    264	 *
    265	 * Clock rate, in Hertz, of the low-power clock.
    266	 */
    267	unsigned long		lp_clk_rate;
    268
    269	/**
    270	 * @lanes:
    271	 *
    272	 * Number of active, consecutive, data lanes, starting from
    273	 * lane 0, used for the transmissions.
    274	 */
    275	unsigned char		lanes;
    276};
    277
    278int phy_mipi_dphy_get_default_config(unsigned long pixel_clock,
    279				     unsigned int bpp,
    280				     unsigned int lanes,
    281				     struct phy_configure_opts_mipi_dphy *cfg);
    282int phy_mipi_dphy_config_validate(struct phy_configure_opts_mipi_dphy *cfg);
    283
    284#endif /* __PHY_MIPI_DPHY_H_ */