コード例 #1
0
int create_decon_mic(struct platform_device *pdev)
{
	struct device *dev = &pdev->dev;
	struct display_driver *dispdrv;
	struct decon_mic *mic;
	struct resource *res;

	dispdrv = get_display_driver();

	mic = devm_kzalloc(dev, sizeof(struct decon_mic), GFP_KERNEL);
	if (!mic) {
		dev_err(dev, "no memory for mic driver");
		return -ENOMEM;
	}

	mic->dev = dev;

	mic->lcd = decon_get_lcd_info();

	mic->mic_config = dispdrv->dt_ops.get_display_mic_config();

	mic->decon_mic_on = false;

	res = dispdrv->mic_driver.regs;
	if (!res) {
		dev_err(dev, "failed to find resource\n");
		return -ENOENT;
	}

	mic->reg_base = ioremap(res->start, resource_size(res));
	if (!mic->reg_base) {
		dev_err(dev, "failed to map registers\n");
		return -ENXIO;
	}

	decon_mic_set_sys_reg(mic, DECON_MIC_ON);

	decon_mic_set_image_size(mic);

	decon_mic_set_2d_bit_stream_size(mic);

	decon_mic_set_mic_base_operation(mic, DECON_MIC_ON);

	mic_for_decon = mic;

	mic->decon_mic_on = true;

	dispdrv->mic_driver.mic = mic;
#ifdef CONFIG_FB_HIBERNATION_DISPLAY
	dispdrv->mic_driver.ops->pwr_on = decon_mic_hibernation_power_on;
	dispdrv->mic_driver.ops->pwr_off = decon_mic_hibernation_power_off;
#endif

	dev_info(dev, "MIC driver has been probed\n");
	return 0;
}
コード例 #2
0
int decon_mic_hibernation_power_off(struct display_driver *dispdrv)
{
	struct decon_mic *mic = dispdrv->mic_driver.mic;

	decon_mic_set_mic_base_operation(mic, DECON_MIC_OFF);
	decon_mic_set_sys_reg(mic, DECON_MIC_OFF);

	mic->decon_mic_on = false;

	return 0;
}
コード例 #3
0
int decon_mic_hibernation_power_on(struct display_driver *dispdrv)
{
	struct decon_mic *mic = dispdrv->mic_driver.mic;

	decon_mic_set_sys_reg(mic, DECON_MIC_ON);
	decon_mic_set_image_size(mic);
	decon_mic_set_2d_bit_stream_size(mic);
	decon_mic_set_mic_base_operation(mic, DECON_MIC_ON);

	mic->decon_mic_on = true;

	return 0;
}
コード例 #4
0
int decon_mic_disable(struct decon_mic *mic)
{
	if (mic->decon_mic_on == false)
		return 0;
	decon_mic_set_sys_reg(mic, DECON_MIC_OFF);

	decon_mic_set_mic_base_operation(mic, DECON_MIC_OFF);

	mic->decon_mic_on = false;

	dev_info(mic->dev, "MIC driver is OFF;\n");

	return 0;
}
コード例 #5
0
int decon_mic_hibernation_power_on(struct display_driver *dispdrv)
{
	struct decon_mic *mic = dispdrv->mic_driver.mic;

	decon_mic_sw_reset(mic);
	decon_mic_set_sys_reg(mic, DECON_MIC_ON);
	decon_mic_set_porch_timing(mic);
	decon_mic_set_image_size(mic);
	decon_mic_set_output_timing(mic);
	decon_mic_set_alg_param(mic);
	decon_mic_set_mic_base_operation(mic, DECON_MIC_ON);

	mic->decon_mic_on = true;

	return 0;
}
コード例 #6
0
int decon_mic_enable(struct decon_mic *mic)
{
    if (!mic->lcd->mic)
        return 0;
    if (mic->decon_mic_on == true)
        return 0;

    decon_mic_set_sys_reg(mic, DECON_MIC_ON);
    mic_reg_start(mic->lcd);

    mic->decon_mic_on = true;

    dev_dbg(mic->dev, "MIC driver is ON;\n");

    return 0;
}
コード例 #7
0
int decon_mic_enable(struct decon_mic *mic)
{
	if (mic->decon_mic_on == true)
		return 0;

	decon_mic_sw_reset(mic);
	decon_mic_set_sys_reg(mic, DECON_MIC_ON);
	decon_mic_set_porch_timing(mic);
	decon_mic_set_image_size(mic);
	decon_mic_set_output_timing(mic);
	decon_mic_set_alg_param(mic);
	decon_mic_set_mic_base_operation(mic, DECON_MIC_ON);

	mic->decon_mic_on = true;

	dev_info(mic->dev, "MIC driver is ON;\n");

	return 0;
}
コード例 #8
0
int decon_mic_enable(struct decon_mic *mic)
{
	if (mic->decon_mic_on == true)
		return 0;

	decon_mic_set_sys_reg(mic, DECON_MIC_ON);

	decon_mic_set_image_size(mic);

	decon_mic_set_2d_bit_stream_size(mic);

	decon_mic_set_mic_base_operation(mic, DECON_MIC_ON);

	mic->decon_mic_on = true;

	dev_info(mic->dev, "MIC driver is ON;\n");

	return 0;
}
コード例 #9
0
int decon_mic_hibernation_power_on(struct display_driver *dispdrv)
{
    struct decon_mic *mic = dispdrv->mic_driver.mic;

    /* from here, it must be same with decon_mic_enable function */

    if (!mic->lcd->mic)
        return 0;
    if (mic->decon_mic_on == true)
        return 0;

    decon_mic_set_sys_reg(mic, DECON_MIC_ON);
    mic_reg_start(mic->lcd_update);

    mic->decon_mic_on = true;

    dev_dbg(mic->dev, "MIC driver is ON;\n");

    return 0;
}
コード例 #10
0
int decon_mic_disable(struct decon_mic *mic)
{
    if (!mic->lcd->mic)
        return 0;
    if (mic->decon_mic_on == false)
        return 0;

    mic_reg_stop(mic->lcd);
    decon_mic_set_sys_reg(mic, DECON_MIC_OFF);

    mic->decon_mic_on = false;

#ifdef CONFIG_FB_HIBERNATION_DISPLAY
    mic->lcd_update->xres = mic->lcd->xres;
    mic->lcd_update->yres = mic->lcd->yres;
#endif

    dev_dbg(mic->dev, "MIC driver is OFF;\n");

    return 0;
}