^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 __MACH_DEVICE_H
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3) #define __MACH_DEVICE_H
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5) #include <linux/types.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 6)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 7) #define MAX_RESOURCE_DMA 2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 8)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 9) /* structure for describing the on-chip devices */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 10) struct pxa_device_desc {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 11) const char *dev_name;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 12) const char *drv_name;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 13) int id;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 14) int irq;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 15) unsigned long start;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 16) unsigned long size;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 17) int dma[MAX_RESOURCE_DMA];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 18) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 19)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 20) #define PXA168_DEVICE(_name, _drv, _id, _irq, _start, _size, _dma...) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 21) struct pxa_device_desc pxa168_device_##_name __initdata = { \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 22) .dev_name = "pxa168-" #_name, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 23) .drv_name = _drv, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 24) .id = _id, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 25) .irq = IRQ_PXA168_##_irq, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 26) .start = _start, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 27) .size = _size, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 28) .dma = { _dma }, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 29) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 30)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 31) #define PXA910_DEVICE(_name, _drv, _id, _irq, _start, _size, _dma...) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 32) struct pxa_device_desc pxa910_device_##_name __initdata = { \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 33) .dev_name = "pxa910-" #_name, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 34) .drv_name = _drv, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 35) .id = _id, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 36) .irq = IRQ_PXA910_##_irq, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 37) .start = _start, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 38) .size = _size, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 39) .dma = { _dma }, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 40) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 41)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 42) #define MMP2_DEVICE(_name, _drv, _id, _irq, _start, _size, _dma...) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 43) struct pxa_device_desc mmp2_device_##_name __initdata = { \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 44) .dev_name = "mmp2-" #_name, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 45) .drv_name = _drv, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 46) .id = _id, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 47) .irq = IRQ_MMP2_##_irq, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 48) .start = _start, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 49) .size = _size, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 50) .dma = { _dma }, \
^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) extern int pxa_register_device(struct pxa_device_desc *, void *, size_t);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 54) extern int pxa_usb_phy_init(void __iomem *phy_reg);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 55) extern void pxa_usb_phy_deinit(void __iomem *phy_reg);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 56)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 57) #endif /* __MACH_DEVICE_H */