1 
   2 
   3 
   4 
   5 
   6 
   7 
   8 
   9 extern int sm501_unit_power(struct device *dev,
  10                             unsigned int unit, unsigned int to);
  11 
  12 extern unsigned long sm501_set_clock(struct device *dev,
  13                                      int clksrc, unsigned long freq);
  14 
  15 extern unsigned long sm501_find_clock(struct device *dev,
  16                                       int clksrc, unsigned long req_freq);
  17 
  18 
  19 
  20 
  21 
  22 
  23 extern int sm501_misc_control(struct device *dev,
  24                               unsigned long set, unsigned long clear);
  25 
  26 
  27 
  28 
  29 
  30 
  31 
  32 extern unsigned long sm501_modify_reg(struct device *dev,
  33                                       unsigned long reg,
  34                                       unsigned long set,
  35                                       unsigned long clear);
  36 
  37 
  38 
  39 
  40 #define SM501FB_FLAG_USE_INIT_MODE      (1<<0)
  41 #define SM501FB_FLAG_DISABLE_AT_EXIT    (1<<1)
  42 #define SM501FB_FLAG_USE_HWCURSOR       (1<<2)
  43 #define SM501FB_FLAG_USE_HWACCEL        (1<<3)
  44 #define SM501FB_FLAG_PANEL_NO_FPEN      (1<<4)
  45 #define SM501FB_FLAG_PANEL_NO_VBIASEN   (1<<5)
  46 #define SM501FB_FLAG_PANEL_INV_FPEN     (1<<6)
  47 #define SM501FB_FLAG_PANEL_INV_VBIASEN  (1<<7)
  48 
  49 struct sm501_platdata_fbsub {
  50         struct fb_videomode     *def_mode;
  51         unsigned int             def_bpp;
  52         unsigned long            max_mem;
  53         unsigned int             flags;
  54 };
  55 
  56 enum sm501_fb_routing {
  57         SM501_FB_OWN            = 0,    
  58         SM501_FB_CRT_PANEL      = 1,    
  59 };
  60 
  61 
  62 
  63 #define SM501_FBPD_SWAP_FB_ENDIAN       (1<<0)  
  64 
  65 
  66 
  67 
  68 
  69 
  70 struct sm501_platdata_fb {
  71         enum sm501_fb_routing            fb_route;
  72         unsigned int                     flags;
  73         struct sm501_platdata_fbsub     *fb_crt;
  74         struct sm501_platdata_fbsub     *fb_pnl;
  75 };
  76 
  77 
  78 
  79 
  80 
  81 
  82 
  83 
  84 struct sm501_platdata_gpio_i2c {
  85         unsigned int            bus_num;
  86         unsigned int            pin_sda;
  87         unsigned int            pin_scl;
  88         int                     udelay;
  89         int                     timeout;
  90 };
  91 
  92 
  93 
  94 
  95 
  96 
  97 
  98 struct sm501_reg_init {
  99         unsigned long           set;
 100         unsigned long           mask;
 101 };
 102 
 103 #define SM501_USE_USB_HOST      (1<<0)
 104 #define SM501_USE_USB_SLAVE     (1<<1)
 105 #define SM501_USE_SSP0          (1<<2)
 106 #define SM501_USE_SSP1          (1<<3)
 107 #define SM501_USE_UART0         (1<<4)
 108 #define SM501_USE_UART1         (1<<5)
 109 #define SM501_USE_FBACCEL       (1<<6)
 110 #define SM501_USE_AC97          (1<<7)
 111 #define SM501_USE_I2S           (1<<8)
 112 #define SM501_USE_GPIO          (1<<9)
 113 
 114 #define SM501_USE_ALL           (0xffffffff)
 115 
 116 struct sm501_initdata {
 117         struct sm501_reg_init   gpio_low;
 118         struct sm501_reg_init   gpio_high;
 119         struct sm501_reg_init   misc_timing;
 120         struct sm501_reg_init   misc_control;
 121 
 122         unsigned long           devices;
 123         unsigned long           mclk;           
 124         unsigned long           m1xclk;         
 125 };
 126 
 127 
 128 
 129 
 130 
 131 
 132 struct sm501_init_gpio {
 133         struct sm501_reg_init   gpio_data_low;
 134         struct sm501_reg_init   gpio_data_high;
 135         struct sm501_reg_init   gpio_ddr_low;
 136         struct sm501_reg_init   gpio_ddr_high;
 137 };
 138 
 139 #define SM501_FLAG_SUSPEND_OFF          (1<<4)
 140 
 141 
 142 
 143 
 144 
 145 
 146 
 147 
 148 
 149 struct sm501_platdata {
 150         struct sm501_initdata           *init;
 151         struct sm501_init_gpio          *init_gpiop;
 152         struct sm501_platdata_fb        *fb;
 153 
 154         int                              flags;
 155         int                              gpio_base;
 156 
 157         int     (*get_power)(struct device *dev);
 158         int     (*set_power)(struct device *dev, unsigned int on);
 159 
 160         struct sm501_platdata_gpio_i2c  *gpio_i2c;
 161         unsigned int                     gpio_i2c_nr;
 162 };
 163 
 164 #if defined(CONFIG_PPC32)
 165 #define smc501_readl(addr)              ioread32be((addr))
 166 #define smc501_writel(val, addr)        iowrite32be((val), (addr))
 167 #else
 168 #define smc501_readl(addr)              readl(addr)
 169 #define smc501_writel(val, addr)        writel(val, addr)
 170 #endif