This source file includes following definitions.
- mipi_dphy_timing_get_default
- mipi_dphy_timing_validate
   1 
   2 
   3 
   4 
   5 
   6 #include <linux/errno.h>
   7 #include <linux/kernel.h>
   8 
   9 #include "mipi-phy.h"
  10 
  11 
  12 
  13 
  14 
  15 
  16 int mipi_dphy_timing_get_default(struct mipi_dphy_timing *timing,
  17                                  unsigned long period)
  18 {
  19         timing->clkmiss = 0;
  20         timing->clkpost = 70 + 52 * period;
  21         timing->clkpre = 8;
  22         timing->clkprepare = 65;
  23         timing->clksettle = 95;
  24         timing->clktermen = 0;
  25         timing->clktrail = 80;
  26         timing->clkzero = 260;
  27         timing->dtermen = 0;
  28         timing->eot = 0;
  29         timing->hsexit = 120;
  30         timing->hsprepare = 65 + 5 * period;
  31         timing->hszero = 145 + 5 * period;
  32         timing->hssettle = 85 + 6 * period;
  33         timing->hsskip = 40;
  34 
  35         
  36 
  37 
  38 
  39 
  40 
  41 
  42 
  43 
  44 
  45 
  46         timing->hstrail = max(4 * 8 * period, 60 + 4 * 4 * period);
  47 
  48         timing->init = 100000;
  49         timing->lpx = 60;
  50         timing->taget = 5 * timing->lpx;
  51         timing->tago = 4 * timing->lpx;
  52         timing->tasure = 2 * timing->lpx;
  53         timing->wakeup = 1000000;
  54 
  55         return 0;
  56 }
  57 
  58 
  59 
  60 
  61 
  62 int mipi_dphy_timing_validate(struct mipi_dphy_timing *timing,
  63                               unsigned long period)
  64 {
  65         if (timing->clkmiss > 60)
  66                 return -EINVAL;
  67 
  68         if (timing->clkpost < (60 + 52 * period))
  69                 return -EINVAL;
  70 
  71         if (timing->clkpre < 8)
  72                 return -EINVAL;
  73 
  74         if (timing->clkprepare < 38 || timing->clkprepare > 95)
  75                 return -EINVAL;
  76 
  77         if (timing->clksettle < 95 || timing->clksettle > 300)
  78                 return -EINVAL;
  79 
  80         if (timing->clktermen > 38)
  81                 return -EINVAL;
  82 
  83         if (timing->clktrail < 60)
  84                 return -EINVAL;
  85 
  86         if (timing->clkprepare + timing->clkzero < 300)
  87                 return -EINVAL;
  88 
  89         if (timing->dtermen > 35 + 4 * period)
  90                 return -EINVAL;
  91 
  92         if (timing->eot > 105 + 12 * period)
  93                 return -EINVAL;
  94 
  95         if (timing->hsexit < 100)
  96                 return -EINVAL;
  97 
  98         if (timing->hsprepare < 40 + 4 * period ||
  99             timing->hsprepare > 85 + 6 * period)
 100                 return -EINVAL;
 101 
 102         if (timing->hsprepare + timing->hszero < 145 + 10 * period)
 103                 return -EINVAL;
 104 
 105         if ((timing->hssettle < 85 + 6 * period) ||
 106             (timing->hssettle > 145 + 10 * period))
 107                 return -EINVAL;
 108 
 109         if (timing->hsskip < 40 || timing->hsskip > 55 + 4 * period)
 110                 return -EINVAL;
 111 
 112         if (timing->hstrail < max(8 * period, 60 + 4 * period))
 113                 return -EINVAL;
 114 
 115         if (timing->init < 100000)
 116                 return -EINVAL;
 117 
 118         if (timing->lpx < 50)
 119                 return -EINVAL;
 120 
 121         if (timing->taget != 5 * timing->lpx)
 122                 return -EINVAL;
 123 
 124         if (timing->tago != 4 * timing->lpx)
 125                 return -EINVAL;
 126 
 127         if (timing->tasure < timing->lpx || timing->tasure > 2 * timing->lpx)
 128                 return -EINVAL;
 129 
 130         if (timing->wakeup < 1000000)
 131                 return -EINVAL;
 132 
 133         return 0;
 134 }