예제 #1
0
void processor_start(int mode)
{
	const struct video_timing *m = &video_modes[mode];
	processor_mode = mode;
	processor_h_active = m->h_active;
	processor_v_active = m->v_active;
	processor_refresh = calculate_refresh_rate(m);

	hdmi_out0_fi_enable_write(0);
	hdmi_out1_fi_enable_write(0);
	hdmi_out0_driver_clocking_pll_reset_write(1);
	hdmi_in0_edid_hpd_en_write(0);
	hdmi_in1_edid_hpd_en_write(0);

	hdmi_in0_disable();
	hdmi_in1_disable();
	hdmi_in0_clear_framebuffers();
	hdmi_in1_clear_framebuffers();
	pattern_fill_framebuffer(m->h_active, m->v_active);

	pll_config_for_clock(m->pixel_clock);
	fb_set_mode(m);
	edid_set_mode(m);
	hdmi_in0_init_video(m->h_active, m->v_active);
	hdmi_in1_init_video(m->h_active, m->v_active);

	hdmi_out0_driver_clocking_pll_reset_write(0);
	hdmi_out0_fi_enable_write(1);
	hdmi_out1_fi_enable_write(1);
	hdmi_in0_edid_hpd_en_write(1);
	hdmi_in1_edid_hpd_en_write(1);
}
예제 #2
0
파일: kmain.c 프로젝트: robixnai/fofolito
void kmain()
{
	irq_disable();
	/* 
	 * A primeira coisa a se fazer é iniciar todo o gerenciador
	 * de memória.
	 */
	mm_init();
	arch_early_init();
	ioremap_init();
	irq_init();
	sched_init();
	timer_init();
	/* 
	 * Neste momento temos o gerenciador de memória e escalonador prontos,
	 * já podemos habilitar as interrupções, que podem ser utilizadas
	 * pelos drivers.
	 */
	irq_enable();

	/* Inicia os drivers da plataforma */
	arch_setup();

	/* Requisita um modo se existir um framebuffer*/
	fb_set_mode();
	/* Inicia o console sobre o framebuffer */
	fb_console_init();
	kernel_info();

#if 1
	irq_disable();
	semaphore_init(&sem, 1);
	create_task("a", 4);
	create_task("b", 5);
	create_task("c", 6);
	create_task("d", 7);
	create_task("b", 8);
	create_task("b", 9);
	irq_enable();
	/* Fica de boas esperando as trocas de contexto */
#endif
	/* Como queremos imprimir para depuração do driver, inicializamos ele agora */
	//bcm2835_emmc_init();
	for (;;) {
		led_blink();
		//printk("-");
	}
}