[ARM11] Question for the ARM 11 GPIO MAPPING
Adam Lackorzynski
adam at os.inf.tu-dresden.de
Wed Feb 27 22:13:47 CET 2013
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
--
Adam adam at os.inf.tu-dresden.de
Lackorzynski http://os.inf.tu-dresden.de/~adam/
More information about the l4-hackers
mailing list