Hi Max, On Wed, Jun 20, 2012 at 8:57 PM, Max Filippov <jcmvb...@gmail.com> wrote: > On Wed, Jun 20, 2012 at 1:42 PM, Jia Liu <pro...@gmail.com> wrote: >> Hi Max, >> >> On Wed, Jun 20, 2012 at 2:29 PM, Max Filippov <jcmvb...@gmail.com> wrote: >>> On 06/18/2012 05:02 AM, Jia Liu wrote: >>>> Add a dummy board for IIS. >>>> >>>> Signed-off-by: Jia Liu<pro...@gmail.com> >>> >>> [...] >>> >>> >>>> + if (nd_table[0].vlan) { >>>> + isa_ne2000_init(isa_bus, 0x92000000, 4,&nd_table[0]); >>>> + } >>> >>> I have noticed that the kernel you provided expects OpenCores ethernet >>> device. >>> We have a model for it (: You can look at lx60_net_init() in the >>> hw/xtensa_lx60.c >>> to see how it may be connected. >>> >> >> Thank you very much for remind me! >> >> Is this code OK? >> >> static void or1200_net_init(MemoryRegion *address_space, >> target_phys_addr_t base, >> target_phys_addr_t buffers, >> qemu_irq irq, NICInfo *nd) >> { >> DeviceState *dev; >> SysBusDevice *s; >> MemoryRegion *ram; >> >> dev = qdev_create(NULL, "open_eth"); >> qdev_set_nic_properties(dev, nd); >> qdev_init_nofail(dev); >> >> s = sysbus_from_qdev(dev); >> sysbus_connect_irq(s, 0, irq); >> memory_region_add_subregion(get_system_memory(), base, >> sysbus_mmio_get_region(s, 0)); >> >> ram = g_malloc(sizeof(*ram)); >> memory_region_init_ram(ram, "open_eth.ram", 0x100); >> vmstate_register_ram_global(ram); >> memory_region_add_subregion(address_space, buffers, ram); >> } > > You haven't mapped descriptors window. Seems to me it should look like this: > > static void or1200_net_init(MemoryRegion *address_space, > target_phys_addr_t base, > target_phys_addr_t descriptors, > qemu_irq irq, NICInfo *nd) > { > DeviceState *dev; > SysBusDevice *s; > > dev = qdev_create(NULL, "open_eth"); > qdev_set_nic_properties(dev, nd); > qdev_init_nofail(dev); > > s = sysbus_from_qdev(dev); > sysbus_connect_irq(s, 0, irq); > memory_region_add_subregion(address_space, base, > sysbus_mmio_get_region(s, 0)); > memory_region_add_subregion(address_space, descriptors, > sysbus_mmio_get_region(s, 1)); > } >
Thank you very much for the code. >> >> if (nd_table[0].vlan) { >> or1200_net_init(get_system_memory(), 0x92000000, >> 0x92100000, env->irq[4], nd_table); >> } >> > > Also I haven't found where 0x92100000 comes from. > Is there a memory map documentation for this machine? > I'm confused about descriptors, I'm not sure whether 0x92100000 is suitable. I find the code in linux/arch/openrisc/boot/dts/or1ksim.dts enet0: ethoc@92000000 { compatible = "opencores,ethmac-rtlsvn338"; reg = <0x92000000 0x100>; interrupts = <4>; }; but I'm not sure what value should a pass to target_phys_addr_t descriptors, that is, I don't know how can I get the address of descriptors. Will you please give me more comment about it? I have no idea how to deal with it. > -- > Thanks. > -- Max Regards, Jia.