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