18c2ecf20Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0 */
28c2ecf20Sopenharmony_ci#ifndef __ASM_MACH_MMP2_H
38c2ecf20Sopenharmony_ci#define __ASM_MACH_MMP2_H
48c2ecf20Sopenharmony_ci
58c2ecf20Sopenharmony_ci#include <linux/platform_data/pxa_sdhci.h>
68c2ecf20Sopenharmony_ci
78c2ecf20Sopenharmony_ciextern void mmp2_timer_init(void);
88c2ecf20Sopenharmony_ciextern void __init mmp2_init_icu(void);
98c2ecf20Sopenharmony_ciextern void __init mmp2_init_irq(void);
108c2ecf20Sopenharmony_ciextern void mmp2_clear_pmic_int(void);
118c2ecf20Sopenharmony_ci
128c2ecf20Sopenharmony_ci#include <linux/i2c.h>
138c2ecf20Sopenharmony_ci#include <linux/platform_data/i2c-pxa.h>
148c2ecf20Sopenharmony_ci#include <linux/platform_data/dma-mmp_tdma.h>
158c2ecf20Sopenharmony_ci
168c2ecf20Sopenharmony_ci#include "devices.h"
178c2ecf20Sopenharmony_ci
188c2ecf20Sopenharmony_ciextern struct pxa_device_desc mmp2_device_uart1;
198c2ecf20Sopenharmony_ciextern struct pxa_device_desc mmp2_device_uart2;
208c2ecf20Sopenharmony_ciextern struct pxa_device_desc mmp2_device_uart3;
218c2ecf20Sopenharmony_ciextern struct pxa_device_desc mmp2_device_uart4;
228c2ecf20Sopenharmony_ciextern struct pxa_device_desc mmp2_device_twsi1;
238c2ecf20Sopenharmony_ciextern struct pxa_device_desc mmp2_device_twsi2;
248c2ecf20Sopenharmony_ciextern struct pxa_device_desc mmp2_device_twsi3;
258c2ecf20Sopenharmony_ciextern struct pxa_device_desc mmp2_device_twsi4;
268c2ecf20Sopenharmony_ciextern struct pxa_device_desc mmp2_device_twsi5;
278c2ecf20Sopenharmony_ciextern struct pxa_device_desc mmp2_device_twsi6;
288c2ecf20Sopenharmony_ciextern struct pxa_device_desc mmp2_device_sdh0;
298c2ecf20Sopenharmony_ciextern struct pxa_device_desc mmp2_device_sdh1;
308c2ecf20Sopenharmony_ciextern struct pxa_device_desc mmp2_device_sdh2;
318c2ecf20Sopenharmony_ciextern struct pxa_device_desc mmp2_device_sdh3;
328c2ecf20Sopenharmony_ciextern struct pxa_device_desc mmp2_device_asram;
338c2ecf20Sopenharmony_ciextern struct pxa_device_desc mmp2_device_isram;
348c2ecf20Sopenharmony_ci
358c2ecf20Sopenharmony_ciextern struct platform_device mmp2_device_gpio;
368c2ecf20Sopenharmony_ci
378c2ecf20Sopenharmony_cistatic inline int mmp2_add_uart(int id)
388c2ecf20Sopenharmony_ci{
398c2ecf20Sopenharmony_ci	struct pxa_device_desc *d = NULL;
408c2ecf20Sopenharmony_ci
418c2ecf20Sopenharmony_ci	switch (id) {
428c2ecf20Sopenharmony_ci	case 1: d = &mmp2_device_uart1; break;
438c2ecf20Sopenharmony_ci	case 2: d = &mmp2_device_uart2; break;
448c2ecf20Sopenharmony_ci	case 3: d = &mmp2_device_uart3; break;
458c2ecf20Sopenharmony_ci	case 4: d = &mmp2_device_uart4; break;
468c2ecf20Sopenharmony_ci	default:
478c2ecf20Sopenharmony_ci		return -EINVAL;
488c2ecf20Sopenharmony_ci	}
498c2ecf20Sopenharmony_ci
508c2ecf20Sopenharmony_ci	return pxa_register_device(d, NULL, 0);
518c2ecf20Sopenharmony_ci}
528c2ecf20Sopenharmony_ci
538c2ecf20Sopenharmony_cistatic inline int mmp2_add_twsi(int id, struct i2c_pxa_platform_data *data,
548c2ecf20Sopenharmony_ci				  struct i2c_board_info *info, unsigned size)
558c2ecf20Sopenharmony_ci{
568c2ecf20Sopenharmony_ci	struct pxa_device_desc *d = NULL;
578c2ecf20Sopenharmony_ci	int ret;
588c2ecf20Sopenharmony_ci
598c2ecf20Sopenharmony_ci	switch (id) {
608c2ecf20Sopenharmony_ci	case 1: d = &mmp2_device_twsi1; break;
618c2ecf20Sopenharmony_ci	case 2: d = &mmp2_device_twsi2; break;
628c2ecf20Sopenharmony_ci	case 3: d = &mmp2_device_twsi3; break;
638c2ecf20Sopenharmony_ci	case 4: d = &mmp2_device_twsi4; break;
648c2ecf20Sopenharmony_ci	case 5: d = &mmp2_device_twsi5; break;
658c2ecf20Sopenharmony_ci	case 6: d = &mmp2_device_twsi6; break;
668c2ecf20Sopenharmony_ci	default:
678c2ecf20Sopenharmony_ci		return -EINVAL;
688c2ecf20Sopenharmony_ci	}
698c2ecf20Sopenharmony_ci
708c2ecf20Sopenharmony_ci	ret = i2c_register_board_info(id - 1, info, size);
718c2ecf20Sopenharmony_ci	if (ret)
728c2ecf20Sopenharmony_ci		return ret;
738c2ecf20Sopenharmony_ci
748c2ecf20Sopenharmony_ci	return pxa_register_device(d, data, sizeof(*data));
758c2ecf20Sopenharmony_ci}
768c2ecf20Sopenharmony_ci
778c2ecf20Sopenharmony_cistatic inline int mmp2_add_sdhost(int id, struct sdhci_pxa_platdata *data)
788c2ecf20Sopenharmony_ci{
798c2ecf20Sopenharmony_ci	struct pxa_device_desc *d = NULL;
808c2ecf20Sopenharmony_ci
818c2ecf20Sopenharmony_ci	switch (id) {
828c2ecf20Sopenharmony_ci	case 0: d = &mmp2_device_sdh0; break;
838c2ecf20Sopenharmony_ci	case 1: d = &mmp2_device_sdh1; break;
848c2ecf20Sopenharmony_ci	case 2: d = &mmp2_device_sdh2; break;
858c2ecf20Sopenharmony_ci	case 3: d = &mmp2_device_sdh3; break;
868c2ecf20Sopenharmony_ci	default:
878c2ecf20Sopenharmony_ci		return -EINVAL;
888c2ecf20Sopenharmony_ci	}
898c2ecf20Sopenharmony_ci
908c2ecf20Sopenharmony_ci	return pxa_register_device(d, data, sizeof(*data));
918c2ecf20Sopenharmony_ci}
928c2ecf20Sopenharmony_ci
938c2ecf20Sopenharmony_cistatic inline int mmp2_add_asram(struct sram_platdata *data)
948c2ecf20Sopenharmony_ci{
958c2ecf20Sopenharmony_ci	return pxa_register_device(&mmp2_device_asram, data, sizeof(*data));
968c2ecf20Sopenharmony_ci}
978c2ecf20Sopenharmony_ci
988c2ecf20Sopenharmony_cistatic inline int mmp2_add_isram(struct sram_platdata *data)
998c2ecf20Sopenharmony_ci{
1008c2ecf20Sopenharmony_ci	return pxa_register_device(&mmp2_device_isram, data, sizeof(*data));
1018c2ecf20Sopenharmony_ci}
1028c2ecf20Sopenharmony_ci
1038c2ecf20Sopenharmony_ci#endif /* __ASM_MACH_MMP2_H */
1048c2ecf20Sopenharmony_ci
105