I believe you only use ioremap for CPUs that have a separate IO address bus. The AM3358 IO is available on the same address bus as regular memory. Simply read and write to 0xFA0022000 + <reg offset> should work just fine. You might ask why the address is different to the UART1 defined in TRM. This is done in arch/arm/mach-omap2/iomap.h - simply use OMAP2_L4_IO_ADDRESS(0x48022000) to get 0xFA022000.
Regards, John > On Aug 2, 2013, at 7:19 AM, Grissiom <[email protected]> wrote: > > Hi all, > > I'm new to both Linux kernel but I need to do same development on the linux > kernel on BBB. My kernel has the console on uart0(i.e., ttyO0). I enabled > uart1 in the device tree and want to do some direct register access to it. I > did `echo "test" > /dev/ttyO1` and it works fine.Then I wrote a kernel module > like this: > > void *puart1 = ioremap(0x48022000, 4096); // remap the uart1 address > printk("%s: 0x%08lx --> 0x%p\n", 0x48022000, 0xfa022000); > printk("LSR:0x%08x\n", *(int*)(puart1+0x14)); > > But the kernel opps at the last line: > > [ 108.462047] 0x48022000 --> 0xfa022000 > [ 108.541026] Unhandled fault: external abort on non-linefetch (0x1028) at > 0xfa022014 > [ 108.549051] Internal error: : 1028 [#1] ARM > [ 108.553429] Modules linked in: vmm_linux(O+) > [ 108.557921] CPU: 0 Tainted: G O > (3.8.13-mini-00694-gd24eda0-dirty #20) > [ 108.566048] PC is at vmm_entry+0x28/0x8c [vmm_linux] > [ 108.571253] LR is at vmm_entry+0x18/0x8c [vmm_linux] > [ 108.576455] pc : [<bf0000ec>] lr : [<bf0000dc>] psr: 20000013 > [ 108.576455] sp : df011e60 ip : 00000000 fp : df011f58 > [ 108.588471] r10: bf002000 r9 : 00000000 r8 : bf000538 > [ 108.593942] r7 : 00000001 r6 : bf0004fc r5 : bf0004dc r4 : bf000638 > [ 108.600774] r3 : fa022000 r2 : 20000093 r1 : 00000001 r0 : bf0003b6 > [ 108.607608] Flags: nzCv IRQs on FIQs on Mode SVC_32 ISA ARM Segment > user > [ 108.615079] Control: 10c5387d Table: 9f354019 DAC: 00000015 > [ 108.621093] Process insmod (pid: 107, stack limit = 0xdf010238) > > Why a simple register access will oops the kernel? Is there any other thing I > should do? > > (I'm aware that maybe this is not the right list to ask. But if it is not, > please let me know where this question should go, Thanks!) > > -- > Cheers, > Grissiom > > -- > For more options, visit http://beagleboard.org/discuss > <http://beagleboard.org/discuss> > --- > You received this message because you are subscribed to the Google Groups > "BeagleBoard" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected]. > For more options, visit https://groups.google.com/groups/opt_out > <https://groups.google.com/groups/opt_out>. > > -- For more options, visit http://beagleboard.org/discuss --- You received this message because you are subscribed to the Google Groups "BeagleBoard" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. For more options, visit https://groups.google.com/d/optout.
