error_t soclib_fb_init(struct device_s *fb, void *base, uint_t size, uint_t irq) { fb->base = base; fb->irq = irq; fb->type = DEV_CHR; fb->op.dev.open = &fb_open; fb->op.dev.read = &fb_read; fb->op.dev.write = &fb_write; fb->op.dev.close = NULL; fb->op.dev.lseek = &fb_lseek; fb->op.dev.mmap = &fb_mmap; fb->op.dev.munmap = &fb_munmap; fb->op.dev.set_params = NULL; fb->op.dev.get_params = &fb_get_params; fb->op.drvid = SOCLIB_FB_ID; fb->data = (void*)size; sprintk(fb->name, #if CONFIG_ROOTFS_IS_VFAT "FB%d" #else "fb%d" #endif ,fb_count++); metafs_init(&fb->node, fb->name); return 0; }
error_t soclib_timer_init(struct device_s *timer) { timer->type = DEV_INTERNAL; timer->action.dev = timer; timer->action.irq_handler = &timer_irq_handler; timer->action.data = NULL; sprintk(timer->name, "timer%d", timer_count++); metafs_init(&timer->node, timer->name); timer->op.timer.run = &timer_run; timer->op.timer.stop = &timer_stop; timer->op.timer.set_period = &timer_set_period; timer->op.timer.get_value = &timer_get_value; timer->op.drvid = SOCLIB_TIMER_ID; timer->data = NULL; return 0; }