~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

TOMOYO Linux Cross Reference
Linux/include/linux/phy/phy-mipi-dphy.h

Version: ~ [ linux-6.12-rc7 ] ~ [ linux-6.11.7 ] ~ [ linux-6.10.14 ] ~ [ linux-6.9.12 ] ~ [ linux-6.8.12 ] ~ [ linux-6.7.12 ] ~ [ linux-6.6.60 ] ~ [ linux-6.5.13 ] ~ [ linux-6.4.16 ] ~ [ linux-6.3.13 ] ~ [ linux-6.2.16 ] ~ [ linux-6.1.116 ] ~ [ linux-6.0.19 ] ~ [ linux-5.19.17 ] ~ [ linux-5.18.19 ] ~ [ linux-5.17.15 ] ~ [ linux-5.16.20 ] ~ [ linux-5.15.171 ] ~ [ linux-5.14.21 ] ~ [ linux-5.13.19 ] ~ [ linux-5.12.19 ] ~ [ linux-5.11.22 ] ~ [ linux-5.10.229 ] ~ [ linux-5.9.16 ] ~ [ linux-5.8.18 ] ~ [ linux-5.7.19 ] ~ [ linux-5.6.19 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.285 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.323 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.336 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.337 ] ~ [ linux-4.4.302 ] ~ [ linux-3.10.108 ] ~ [ linux-2.6.32.71 ] ~ [ linux-2.6.0 ] ~ [ linux-2.4.37.11 ] ~ [ unix-v6-master ] ~ [ ccs-tools-1.8.12 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

  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_get_default_config_for_hsclk(unsigned long long hs_clk_rate,
283                                                unsigned int lanes,
284                                                struct phy_configure_opts_mipi_dphy *cfg);
285 int phy_mipi_dphy_config_validate(struct phy_configure_opts_mipi_dphy *cfg);
286 
287 #endif /* __PHY_MIPI_DPHY_H_ */
288 

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

kernel.org | git.kernel.org | LWN.net | Project Home | SVN repository | Mail admin

Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.

sflogo.php