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; }
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(&pdev->dev, "no memory for mic driver\n"); 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) { mic_err("failed to find resource\n"); return -ENOENT; } mic->reg_base = ioremap(res->start, resource_size(res)); if (!mic->reg_base) { mic_err("failed to map registers\n"); return -ENXIO; } mic_for_decon = mic; dispdrv->mic_driver.mic = mic; #ifdef CONFIG_S5P_LCD_INIT decon_mic_enable(mic); #endif #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; mic->lcd_update = kzalloc(sizeof(struct decon_lcd), GFP_KERNEL); memcpy(mic->lcd_update, mic->lcd, sizeof(struct decon_lcd)); #endif mic_info("MIC driver has been probed\n"); return 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; int ret; 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"); ret = -ENOENT; } mic->reg_base = ioremap(res->start, resource_size(res)); if (!mic->reg_base) { dev_err(dev, "failed to map registers\n"); ret = -ENXIO; } decon_mic_enable(mic); mic_for_decon = mic; mic->decon_mic_on = true; dispdrv->mic_driver.mic = mic; dev_info(dev, "MIC driver has been probed\n"); return 0; }