Hi,
On Tue Feb 26, 2013 at 20:10:15 +0800, Jason.han wrote:
Now I have GPIO Mapping problems happened when
run the L4re in Arm 11 (6410 ).
.devs ==> Res.mmio(0x7f008100, 0x7f00813f); .lcd.c ==>l4io_request_iomem(0x7f008100, 0x03f,
L4IO_MEM_NONCACHED, &lcd_gpio_virt_base);
when
"l4_mem_write(lcd_gpio_virt_base+0x00,L4_MEM_WIDTH_4BYTE,0xaaaaaaaa); download in real-hw board : the core will died as it :
Ned: loading file: 'rom/arm-rv-lcd.cfg'
hello | Hello World! IO | Dev_factory: register factory for N2Hw6DeviceE IO | GTF: register factory for 7Pci_dev IO | GTF: register factory for N2Hw12Msi_resourceE IO | Dev_factory: register factory for N2Hw11Gpio_deviceE IO | Io service IO | Ready. Waiting for request. fbdrv | Using LCD driver: S3C6410 fbdrv | lcd_control_virt_base is 0x3000 fbdrv | lcd_gpio_virt_base is 0x4000 fbdrv | Video memory is at virtual 0x5000 (size: 0x3fc00 Bytes) fbdrv | Physical video memory is at 0x50394000 ==>core died after delete it and only use l4_mem_read , value always is IO | Ready. Waiting for request. fbdrv | Using LCD driver: S3C6410 fbdrv | lcd_control_virt_base is 0x3000 fbdrv | lcd_gpio_virt_base is 0x4000 fbdrv | Video memory is at virtual 0x5000 (size: 0x3fc00 Bytes) fbdrv | Physical video memory is at 0x50395000 fbdrv | 0 value is 0x220022 ==> core run is ok. In the range of the GPIO ,whatever I defined , the lcd_gpio_virt_base + offset (value 0) is always 0x220022 ,can't be written . the lcd_gpio_virt_base + offset (value 0x04) is always 0x23 ,can be written ,but value never be changed . From Offset (value 0x08) is normal . why only GPIO like this ,I write some time and control -register always OK. Do you know Why , Can you give me some advices ? Thank you . I also try to .devs ==> Res.mmio(0x7f008000, 0x7f00813f); .lcd.c ==>l4io_request_iomem(0x7f008000, 0x03f, L4IO_MEM_NONCACHED, &lcd_gpio_virt_base); when "l4_mem_write(lcd_gpio_virt_base+0x100,L4_MEM_WIDTH_4BYTE,0xaaaaaaaa); The offset 0x00 ,and 0x04 same problem ,but now I can write 0xaaaaaaaa for this IO port, even though working not well .
What I notice is that you want to have 0x7f008100, however, mappings are page granular, i.e. lower 3 digits are 0. The output says the virt_base is 0x4000, so you probably want to access 0x4100. Maybe the device at offset 0 is behaving like what you're seeing.
Adam