linux/arch/arm/mach-mmp/pxa168.h
<<
>>
Prefs
   1#ifndef __ASM_MACH_PXA168_H
   2#define __ASM_MACH_PXA168_H
   3
   4#include <linux/reboot.h>
   5
   6extern void pxa168_timer_init(void);
   7extern void __init icu_init_irq(void);
   8extern void __init pxa168_init_irq(void);
   9extern void pxa168_restart(enum reboot_mode, const char *);
  10extern void pxa168_clear_keypad_wakeup(void);
  11
  12#include <linux/i2c.h>
  13#include <linux/i2c/pxa-i2c.h>
  14#include <linux/platform_data/mtd-nand-pxa3xx.h>
  15#include <video/pxa168fb.h>
  16#include <linux/platform_data/keypad-pxa27x.h>
  17#include <linux/pxa168_eth.h>
  18#include <linux/platform_data/mv_usb.h>
  19
  20#include "devices.h"
  21#include "cputype.h"
  22
  23extern struct pxa_device_desc pxa168_device_uart1;
  24extern struct pxa_device_desc pxa168_device_uart2;
  25extern struct pxa_device_desc pxa168_device_uart3;
  26extern struct pxa_device_desc pxa168_device_twsi0;
  27extern struct pxa_device_desc pxa168_device_twsi1;
  28extern struct pxa_device_desc pxa168_device_pwm1;
  29extern struct pxa_device_desc pxa168_device_pwm2;
  30extern struct pxa_device_desc pxa168_device_pwm3;
  31extern struct pxa_device_desc pxa168_device_pwm4;
  32extern struct pxa_device_desc pxa168_device_ssp1;
  33extern struct pxa_device_desc pxa168_device_ssp2;
  34extern struct pxa_device_desc pxa168_device_ssp3;
  35extern struct pxa_device_desc pxa168_device_ssp4;
  36extern struct pxa_device_desc pxa168_device_ssp5;
  37extern struct pxa_device_desc pxa168_device_nand;
  38extern struct pxa_device_desc pxa168_device_fb;
  39extern struct pxa_device_desc pxa168_device_keypad;
  40extern struct pxa_device_desc pxa168_device_eth;
  41
  42/* pdata can be NULL */
  43extern int __init pxa168_add_usb_host(struct mv_usb_platform_data *pdata);
  44
  45
  46extern struct platform_device pxa168_device_gpio;
  47
  48static inline int pxa168_add_uart(int id)
  49{
  50        struct pxa_device_desc *d = NULL;
  51
  52        switch (id) {
  53        case 1: d = &pxa168_device_uart1; break;
  54        case 2: d = &pxa168_device_uart2; break;
  55        case 3: d = &pxa168_device_uart3; break;
  56        }
  57
  58        if (d == NULL)
  59                return -EINVAL;
  60
  61        return pxa_register_device(d, NULL, 0);
  62}
  63
  64static inline int pxa168_add_twsi(int id, struct i2c_pxa_platform_data *data,
  65                                  struct i2c_board_info *info, unsigned size)
  66{
  67        struct pxa_device_desc *d = NULL;
  68        int ret;
  69
  70        switch (id) {
  71        case 0: d = &pxa168_device_twsi0; break;
  72        case 1: d = &pxa168_device_twsi1; break;
  73        default:
  74                return -EINVAL;
  75        }
  76
  77        ret = i2c_register_board_info(id, info, size);
  78        if (ret)
  79                return ret;
  80
  81        return pxa_register_device(d, data, sizeof(*data));
  82}
  83
  84static inline int pxa168_add_pwm(int id)
  85{
  86        struct pxa_device_desc *d = NULL;
  87
  88        switch (id) {
  89        case 1: d = &pxa168_device_pwm1; break;
  90        case 2: d = &pxa168_device_pwm2; break;
  91        case 3: d = &pxa168_device_pwm3; break;
  92        case 4: d = &pxa168_device_pwm4; break;
  93        default:
  94                return -EINVAL;
  95        }
  96
  97        return pxa_register_device(d, NULL, 0);
  98}
  99
 100static inline int pxa168_add_ssp(int id)
 101{
 102        struct pxa_device_desc *d = NULL;
 103
 104        switch (id) {
 105        case 1: d = &pxa168_device_ssp1; break;
 106        case 2: d = &pxa168_device_ssp2; break;
 107        case 3: d = &pxa168_device_ssp3; break;
 108        case 4: d = &pxa168_device_ssp4; break;
 109        case 5: d = &pxa168_device_ssp5; break;
 110        default:
 111                return -EINVAL;
 112        }
 113        return pxa_register_device(d, NULL, 0);
 114}
 115
 116static inline int pxa168_add_nand(struct pxa3xx_nand_platform_data *info)
 117{
 118        return pxa_register_device(&pxa168_device_nand, info, sizeof(*info));
 119}
 120
 121static inline int pxa168_add_fb(struct pxa168fb_mach_info *mi)
 122{
 123        return pxa_register_device(&pxa168_device_fb, mi, sizeof(*mi));
 124}
 125
 126static inline int pxa168_add_keypad(struct pxa27x_keypad_platform_data *data)
 127{
 128        if (cpu_is_pxa168())
 129                data->clear_wakeup_event = pxa168_clear_keypad_wakeup;
 130
 131        return pxa_register_device(&pxa168_device_keypad, data, sizeof(*data));
 132}
 133
 134static inline int pxa168_add_eth(struct pxa168_eth_platform_data *data)
 135{
 136        return pxa_register_device(&pxa168_device_eth, data, sizeof(*data));
 137}
 138#endif /* __ASM_MACH_PXA168_H */
 139