inline void __iop13xx_ioremap( unsigned long cookie, unsigned int size, unsigned long flags ) { unsigned int iop13xx_atux_mem_base; switch (cookie) { case 0x80000000UL ... (0x80000000UL + 0x3a000000UL - 1): if (iop13xx_atux_mem_base) break; default: ior( ); } }; struct imu_dev { int cdev; }; struct imu_dev *imu; int imu_major ; void init_callback(int queueid) { } void error_callback(int queueid) { } int imu_dev_init(void) { int err; int i; char *queue_base; for ( i = 1; ; i++ ) { if (addit(&imu[i].cdev, (((imu_major) << 20) | (i)), 1)) { foo(i); } __iop13xx_ioremap(((128*1024*1024) + (i * (16*64))), ((16*64)), 0); iop_queue_init(i, (void *)(128*1024*1024) + (i * (16*64)), queue_base, 64, 16, init_callback, error_callback); } }