root/include/linux/phy/phy-mipi-dphy.h

/* [<][>][^][v][top][bottom][index][help] */

INCLUDED FROM


   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  */
  15 struct 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 
 278 int 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);
 282 int phy_mipi_dphy_config_validate(struct phy_configure_opts_mipi_dphy *cfg);
 283 
 284 #endif /* __PHY_MIPI_DPHY_H_ */

/* [<][>][^][v][top][bottom][index][help] */