1 -- vim: ft=lua ts=2 et sw=2 2 3 -- Start the framebuffer driver with supporting devices. 4 -- The target platform is the MIPS Creator CI20. 5 6 local L4 = require("L4"); 7 8 local l = L4.default_loader; 9 10 -- Define general access to peripherals. 11 12 local io_buses = { 13 cpm = l:new_channel(); 14 gpio = l:new_channel(); 15 hdmi = l:new_channel(); 16 lcd = l:new_channel(); 17 }; 18 19 l:start({ 20 caps = { 21 cpm = io_buses.cpm:svr(), 22 gpio = io_buses.gpio:svr(), 23 hdmi = io_buses.hdmi:svr(), 24 lcd = io_buses.lcd:svr(), 25 26 icu = L4.Env.icu, 27 sigma0 = L4.cast(L4.Proto.Factory, L4.Env.sigma0):create(L4.Proto.Sigma0), 28 }, 29 }, 30 "rom/io rom/hw_devices.io rom/mips-ci20-common.io"); 31 32 -- Expose the CPM peripheral. 33 34 local cpm = l:new_channel(); 35 36 l:start({ 37 caps = { 38 vbus = io_buses.cpm, 39 cpm = cpm:svr(), 40 }, 41 }, 42 "rom/dev_cpm_jz4780"); 43 44 -- Expose a display device for the CI20. 45 46 local display = l:new_channel(); -- exposes display device 47 48 l:start({ 49 caps = { 50 cpm = cpm, 51 display = display:svr(), 52 icu = L4.Env.icu, 53 vbus = io_buses.hdmi, -- for HDMI resource access 54 }, 55 }, 56 "rom/dev_display_ci20_hdmi"); 57 58 -- Expose a framebuffer device. 59 60 local fbdrv_fb = l:new_channel(); 61 62 l:start({ 63 caps = { 64 vbus = io_buses.lcd, 65 fb = fbdrv_fb:svr(), 66 cpm = cpm, 67 display = display, -- needed by LCD driver 68 }, 69 }, 70 "rom/fb-drv");