Files linux-2.6.11.11-h1940-3.7/core.4012 and linux-2.6.11.11-h1940-3.8/core.4012 differ diff -NurpP linux-2.6.11.11-h1940-3.7/kernel/mhelper.c linux-2.6.11.11-h1940-3.8/kernel/mhelper.c --- linux-2.6.11.11-h1940-3.7/kernel/mhelper.c 2005-06-03 12:13:30.000000000 +0200 +++ linux-2.6.11.11-h1940-3.8/kernel/mhelper.c 2005-06-10 06:27:38.000000000 +0200 @@ -15,24 +15,44 @@ #define IODESC_ENT(x) { S3C2410_VA_##x, S3C2410_PA_##x, S3C2410_SZ_##x, MT_DEVICE } -extern struct map_desc s3c2410_iodesc[]; -extern unsigned long s3c2410_iodesc_size; +struct map_desc mhelper_iodesc[] = { + IODESC_ENT(IRQ), + IODESC_ENT(MEMCTRL), + IODESC_ENT(USBHOST), + IODESC_ENT(DMA), + IODESC_ENT(CLKPWR), + IODESC_ENT(LCD), + IODESC_ENT(NAND), + IODESC_ENT(UART), + IODESC_ENT(TIMER), + IODESC_ENT(USBDEV), + IODESC_ENT(WATCHDOG), + IODESC_ENT(IIC), + IODESC_ENT(IIS), + IODESC_ENT(GPIO), + IODESC_ENT(RTC), + IODESC_ENT(ADC), + IODESC_ENT(SPI), + IODESC_ENT(SDI), +}; + +#define IODESC_SIZE (sizeof(mhelper_iodesc)/sizeof(struct map_desc)) static inline unsigned long map_io_to_va(unsigned long addr) { int index; - for (index=0; index= phys) & (addr < phys+len)) break; } - if (index < s3c2410_iodesc_size) { - unsigned long phys = s3c2410_iodesc[index].physical; - unsigned long virt = s3c2410_iodesc[index].virtual; + if (index < IODESC_SIZE) { + unsigned long phys = mhelper_iodesc[index].physical; + unsigned long virt = mhelper_iodesc[index].virtual; return (addr - phys + virt); } @@ -44,23 +64,34 @@ extern asmlinkage long sys_mhelper(uint32_t cmd, uint32_t addr, uint32_t value) { unsigned long vaddr = 0; + int verb; if (!(vaddr = map_io_to_va(addr))) return -ENXIO; + + verb = (cmd & OPT_VERB); + cmd &= ~OPT_VERB; + switch (cmd) { case CMD_READ_B: value = __raw_readb(vaddr); - printk("0x%08x: 0x%02x (%d)\n", addr, value, value); + if (verb) + printk("0x%08x: 0x%02x (%d)\n", + addr, value, value); break; case CMD_READ_W: value = __raw_readw(vaddr); - printk("0x%08x: 0x%04x (%d)\n", addr, value, value); + if (verb) + printk("0x%08x: 0x%04x (%d)\n", + addr, value, value); break; case CMD_READ_L: value = __raw_readl(vaddr); - printk("0x%08x: 0x%08x (%d)\n", addr, value, value); + if (verb) + printk("0x%08x: 0x%08x (%d)\n", + addr, value, value); break; case CMD_WRITE_B: @@ -78,6 +109,6 @@ sys_mhelper(uint32_t cmd, uint32_t addr, break; } - return 0; + return verb?0:value; } diff -NurpP linux-2.6.11.11-h1940-3.7/kernel/mhelper.h linux-2.6.11.11-h1940-3.8/kernel/mhelper.h --- linux-2.6.11.11-h1940-3.7/kernel/mhelper.h 2005-06-03 12:13:30.000000000 +0200 +++ linux-2.6.11.11-h1940-3.8/kernel/mhelper.h 2005-06-10 03:13:06.000000000 +0200 @@ -6,6 +6,8 @@ #define CAT_WORD 0x02 #define CAT_LONG 0x03 +#define OPT_VERB 0x80 + enum { CMD_VERSION = 0,