Hello. I try to start ex_fb_spectrum example on beagleboard clone with 7" 480x800 LCD and have error in fbdrv//lcd-omap3.c: when a i call any l4vbus_i2c* and l4vbus_gpio function i have return -38 --- ENOSYS error whats may be wrong? my configs:
-------------------------------------- arm-rv-lcd-io:
gui => new System_bus() { # KBD => wrap(hw-root.KBD); # MOUSE => wrap(hw-root.MOUSE); }
fbdrv => new System_bus() { sys => wrap(hw-root.sys); lcd => wrap(hw-root.lcd); i2c1 => wrap(hw-root.i2c1); gpio => wrap(hw-root.gpio); }
------------------------------------- arm-rv-lcd-cfg require("L4");
local l = L4.default_loader;
local io_buses = { gui = l:new_channel(); fbdrv = l:new_channel(); };
l:start({ caps = { gui = io_buses.gui:svr(), fbdrv = io_buses.fbdrv:svr(),
icu = L4.Env.icu, sigma0 = L4.cast(L4.Proto.Factory, L4.Env.sigma0):create(L4.Proto.Sigma0), }, log = { "IO", "y" }, l4re_dbg = L4.Dbg.Warn, }, "rom/io rom/arm-omap3-full.devs rom/arm-rv-lcd.io");
local fbdrv_fb = l:new_channel();
l:startv({ caps = { vbus = io_buses.fbdrv, fb = fbdrv_fb:svr(), }, log = { "fbdrv", "r" }, l4re_dbg = L4.Dbg.Warn, }, "rom/fb-drv", "-c", "init");
local mag_caps = { mag = l:new_channel(), svc = l:new_channel(), };
l:start({ caps = { vbus = io_buses.gui, fb = fbdrv_fb, mag = mag_caps.mag:svr(), svc = mag_caps.svc:svr(), }, log = { "mag", "g" }, l4re_dbg = L4.Dbg.Warn, -- scheduler = L4.Env.user_factory:create(L4.Proto.Scheduler, 0xa0, 0x80), }, "rom/mag");
e = l:start({ caps = { fb = mag_caps.svc:create(L4.Proto.Goos, "g=480x480"), }, log = { "spectrum", "b" }, l4re_dbg = L4.Dbg.Warn, -- scheduler = L4.Env.user_factory:create(L4.Proto.Scheduler, 0x18, 0x8), }, "rom/ex_fb_spectrum"); print("ex_fb_spectrum exited with: " .. e:wait());
------------------------------------ arm-omap3-full.devs:
hw-root { sys => new Device() { .hid = "System Control"; new-res Mmio(0x48002000 .. 0x48002fff); new-res Mmio(0x48004000 .. 0x48004fff); }
prcm => new Device() { .hid = "OMAP PRCM qq"; new-res Mmio(0x48000000 .. 0x48000fff); new-res Mmio(0x48001000 .. 0x48001fff); new-res Mmio(0x48002000 .. 0x48002fff); new-res Mmio(0x48003000 .. 0x48003fff); new-res Mmio(0x48004000 .. 0x48004fff); new-res Mmio(0x48005000 .. 0x48005fff); }
gpio => new Device() { .hid = "gpio"; new-res Mmio(0x48004000 .. 0x48004fff); new-res Mmio(0x48310000 .. 0x48310fff); new-res Mmio(0x49050000 .. 0x49050fff); new-res Mmio(0x49052000 .. 0x49052fff); new-res Mmio(0x49054000 .. 0x49054fff); new-res Mmio(0x49056000 .. 0x49056fff); new-res Mmio(0x49058000 .. 0x49058fff); }
lcd => new Device() { .hid = "OMAP_LCD"; new-res Mmio(0x48050000 .. 0x48050fff); }
i2c1 => new Device() { .hid = "i2c"; new-res Mmio(0x48070000 .. 0x48070fff); } }