^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1) /* SPDX-License-Identifier: GPL-2.0 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2) #ifndef __ASM_MACH_MMP2_H
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3) #define __ASM_MACH_MMP2_H
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5) #include <linux/platform_data/pxa_sdhci.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 6)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 7) extern void mmp2_timer_init(void);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 8) extern void __init mmp2_init_icu(void);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 9) extern void __init mmp2_init_irq(void);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 10) extern void mmp2_clear_pmic_int(void);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 11)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 12) #include <linux/i2c.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 13) #include <linux/platform_data/i2c-pxa.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 14) #include <linux/platform_data/dma-mmp_tdma.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 15)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 16) #include "devices.h"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 17)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 18) extern struct pxa_device_desc mmp2_device_uart1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 19) extern struct pxa_device_desc mmp2_device_uart2;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 20) extern struct pxa_device_desc mmp2_device_uart3;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 21) extern struct pxa_device_desc mmp2_device_uart4;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 22) extern struct pxa_device_desc mmp2_device_twsi1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 23) extern struct pxa_device_desc mmp2_device_twsi2;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 24) extern struct pxa_device_desc mmp2_device_twsi3;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 25) extern struct pxa_device_desc mmp2_device_twsi4;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 26) extern struct pxa_device_desc mmp2_device_twsi5;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 27) extern struct pxa_device_desc mmp2_device_twsi6;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 28) extern struct pxa_device_desc mmp2_device_sdh0;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 29) extern struct pxa_device_desc mmp2_device_sdh1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 30) extern struct pxa_device_desc mmp2_device_sdh2;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 31) extern struct pxa_device_desc mmp2_device_sdh3;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 32) extern struct pxa_device_desc mmp2_device_asram;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 33) extern struct pxa_device_desc mmp2_device_isram;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 34)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 35) extern struct platform_device mmp2_device_gpio;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 36)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 37) static inline int mmp2_add_uart(int id)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 38) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 39) struct pxa_device_desc *d = NULL;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 40)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 41) switch (id) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 42) case 1: d = &mmp2_device_uart1; break;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 43) case 2: d = &mmp2_device_uart2; break;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 44) case 3: d = &mmp2_device_uart3; break;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 45) case 4: d = &mmp2_device_uart4; break;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 46) default:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 47) return -EINVAL;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 48) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 49)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 50) return pxa_register_device(d, NULL, 0);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 51) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 52)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 53) static inline int mmp2_add_twsi(int id, struct i2c_pxa_platform_data *data,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 54) struct i2c_board_info *info, unsigned size)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 55) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 56) struct pxa_device_desc *d = NULL;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 57) int ret;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 58)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 59) switch (id) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 60) case 1: d = &mmp2_device_twsi1; break;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 61) case 2: d = &mmp2_device_twsi2; break;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 62) case 3: d = &mmp2_device_twsi3; break;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 63) case 4: d = &mmp2_device_twsi4; break;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 64) case 5: d = &mmp2_device_twsi5; break;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 65) case 6: d = &mmp2_device_twsi6; break;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 66) default:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 67) return -EINVAL;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 68) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 69)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 70) ret = i2c_register_board_info(id - 1, info, size);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 71) if (ret)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 72) return ret;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 73)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 74) return pxa_register_device(d, data, sizeof(*data));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 75) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 76)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 77) static inline int mmp2_add_sdhost(int id, struct sdhci_pxa_platdata *data)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 78) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 79) struct pxa_device_desc *d = NULL;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 80)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 81) switch (id) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 82) case 0: d = &mmp2_device_sdh0; break;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 83) case 1: d = &mmp2_device_sdh1; break;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 84) case 2: d = &mmp2_device_sdh2; break;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 85) case 3: d = &mmp2_device_sdh3; break;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 86) default:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 87) return -EINVAL;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 88) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 89)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 90) return pxa_register_device(d, data, sizeof(*data));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 91) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 92)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 93) static inline int mmp2_add_asram(struct sram_platdata *data)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 94) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 95) return pxa_register_device(&mmp2_device_asram, data, sizeof(*data));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 96) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 97)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 98) static inline int mmp2_add_isram(struct sram_platdata *data)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 99) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 100) return pxa_register_device(&mmp2_device_isram, data, sizeof(*data));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 101) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 102)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 103) #endif /* __ASM_MACH_MMP2_H */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 104)