static __init void s5pv210_fb_init(void) { struct s5pv210fb_lcd * lcd; s5pv210_fb.priv = resource_get_data(s5pv210_fb.info->name); lcd = (struct s5pv210fb_lcd *)(s5pv210_fb.priv); if(! s5pv210_fb.priv) { LOG_W("can't get the resource of \'%s\'", s5pv210_fb.info->name); return; } if(! clk_get_rate("dsys-hclk", 0)) { LOG_E("can't get the clock of \'dsys-hclk\'"); return; } if( (lcd->bits_per_pixel != 16) && (lcd->bits_per_pixel != 24) && (lcd->bits_per_pixel != 32) ) return; info.surface.info.bits_per_pixel = lcd->bits_per_pixel; info.surface.info.bytes_per_pixel = lcd->bytes_per_pixel; info.surface.info.red_mask_size = lcd->rgba.r_mask; info.surface.info.red_field_pos = lcd->rgba.r_field; info.surface.info.green_mask_size = lcd->rgba.g_mask; info.surface.info.green_field_pos = lcd->rgba.g_field; info.surface.info.blue_mask_size = lcd->rgba.b_mask; info.surface.info.blue_field_pos = lcd->rgba.b_field; info.surface.info.alpha_mask_size = lcd->rgba.a_mask; info.surface.info.alpha_field_pos = lcd->rgba.a_field; info.surface.info.fmt = get_pixel_format(&(info.surface.info)); info.surface.w = lcd->width; info.surface.h = lcd->height; info.surface.pitch = lcd->width * lcd->bytes_per_pixel; info.surface.flag = SURFACE_PIXELS_DONTFREE; info.surface.pixels = lcd->vram_front; info.surface.clip.x = 0; info.surface.clip.y = 0; info.surface.clip.w = lcd->width; info.surface.clip.h = lcd->height; memset(&info.surface.maps, 0, sizeof(struct surface_maps)); surface_set_maps(&info.surface.maps); if(! register_framebuffer(&s5pv210_fb)) LOG_E("failed to register framebuffer driver '%s'", s5pv210_fb.info->name); }
static __init void console_trigger_init(void) { struct led * led; led = (struct led *)resource_get_data(console_trigger.name); if(led && led->set) { if(led->init) (led->init)(); console_trigger.led = led; if(trigger_register(&console_trigger)) { setup_timer(&console_trigger_timer, console_trigger_function, (u32_t)(&console_trigger)); valid = TRUE; return; } } valid = FALSE; }
static __init void s5pv210_serial_dev_init(void) { struct serial_parameter * param; u32_t i; if(!clk_get_rate("psys-pclk", 0)) { LOG_E("can't get the clock of \'psys-pclk\'"); return; } /* register serial driver */ for(i = 0; i < ARRAY_SIZE(s5pv210_uart_driver); i++) { param = (struct serial_parameter *)resource_get_data(s5pv210_uart_driver[i].info->name); if(param) memcpy(s5pv210_uart_driver[i].info->parameter, param, sizeof(struct serial_parameter)); else LOG_W("can't get the resource of \'%s\', use default parameter", s5pv210_uart_driver[i].info->name); if(!register_serial(&s5pv210_uart_driver[i])) LOG_E("failed to register serial driver '%s'", s5pv210_uart_driver[i].info->name); } }