typedef unsigned int __kernel_size_t; typedef unsigned int u32; typedef __kernel_size_t size_t; typedef int (*initcall_t)(void); struct cdev { }; extern u32 iop13xx_atux_mem_base; static inline __attribute__((always_inline)) void * __iop13xx_ioremap(unsigned long cookie, size_t size, unsigned long flags) { void * retval; switch (cookie) { case 0x80000000UL ... (0x80000000UL + 0x3a000000UL - 1): if (__builtin_expect(!!(!iop13xx_atux_mem_base), 0)) retval = ((void *)0); break; default: retval = __ioremap(cookie, size, flags); } }; struct imu_dev { struct cdev cdev; }; static struct imu_dev imu[4]; static int imu_major = 0; void init_callback(int queueid) { } void error_callback(int queueid) { } static int __attribute__ ((__section__ (".init.text"))) imu_dev_init(void) { int err, i; char *queue_base; for (i = 1; i < 4; i++) { if (cdev_add(&imu[i].cdev, (((imu_major) << 20) | (i)), 1)) { printk("<4>" "Error cdev_add imu%i\n", i); } queue_base = __iop13xx_ioremap(((128*1024*1024) + (i * (16*64))), ((16*64)), 0); err = iop_queue_init(i, (void *)(128*1024*1024) + (i * (16*64)), queue_base, 64, 16, init_callback, error_callback); } } static initcall_t __initcall_imu_dev_init __attribute__((__used__)) __attribute__((__section__(".initcall" "6" ".init"))) = imu_dev_init;