/* * Remove */ static int s5p_tv_remove(struct platform_device *pdev) { __s5p_hdmi_release(pdev); __s5p_sdout_release(pdev); __s5p_mixer_release(pdev); __s5p_vp_release(pdev); #ifdef CONFIG_CPU_S5PC100 __s5p_tvclk_release(pdev); #endif #ifdef I2C_BASE i2c_del_driver(&hdcp_i2c_driver); #endif #if defined(CONFIG_MACH_P1) i2c_del_driver(&SII9234A_i2c_driver); i2c_del_driver(&SII9234B_i2c_driver); i2c_del_driver(&SII9234C_i2c_driver); i2c_del_driver(&SII9234_i2c_driver); #endif clk_disable(s5ptv_status.tvenc_clk); clk_disable(s5ptv_status.vp_clk); clk_disable(s5ptv_status.mixer_clk); clk_disable(s5ptv_status.hdmi_clk); clk_disable(s5ptv_status.sclk_hdmi); clk_disable(s5ptv_status.sclk_mixer); clk_disable(s5ptv_status.sclk_dac); clk_put(s5ptv_status.tvenc_clk); clk_put(s5ptv_status.vp_clk); clk_put(s5ptv_status.mixer_clk); clk_put(s5ptv_status.hdmi_clk); clk_put(s5ptv_status.sclk_hdmi); clk_put(s5ptv_status.sclk_mixer); clk_put(s5ptv_status.sclk_dac); clk_put(s5ptv_status.sclk_pixel); clk_put(s5ptv_status.sclk_hdmiphy); free_irq(IRQ_MIXER, pdev); free_irq(IRQ_HDMI, pdev); free_irq(IRQ_TVENC, pdev); #ifdef CONFIG_CPU_S5PC100 free_irq(IRQ_EINT5, pdev); #endif regulator_disable(s5ptv_status.tv_regulator); regulator_put(s5ptv_status.tv_regulator); regulator_disable(s5ptv_status.tv_tvout); regulator_put(s5ptv_status.tv_tvout); #ifdef CONFIG_MACH_P1 regulator_disable(s5ptv_status.tv_tv); regulator_put(s5ptv_status.tv_tv); #endif mutex_destroy(mutex_for_fo); #ifdef I2C_BASE mutex_destroy(mutex_for_i2c); #endif return 0; }
/* * Remove */ static int s5p_tv_remove(struct platform_device *pdev) { __s5p_hdmi_release(pdev); __s5p_sdout_release(pdev); __s5p_mixer_release(pdev); __s5p_vp_release(pdev); #ifdef I2C_BASE i2c_del_driver(&hdcp_i2c_driver); #endif clk_disable(s5ptv_status.tvenc_clk); clk_disable(s5ptv_status.vp_clk); clk_disable(s5ptv_status.mixer_clk); clk_disable(s5ptv_status.hdmi_clk); clk_disable(s5ptv_status.sclk_hdmi); clk_disable(s5ptv_status.sclk_mixer); clk_disable(s5ptv_status.sclk_dac); clk_put(s5ptv_status.tvenc_clk); clk_put(s5ptv_status.vp_clk); clk_put(s5ptv_status.mixer_clk); clk_put(s5ptv_status.hdmi_clk); clk_put(s5ptv_status.sclk_hdmi); clk_put(s5ptv_status.sclk_mixer); clk_put(s5ptv_status.sclk_dac); clk_put(s5ptv_status.sclk_pixel); clk_put(s5ptv_status.sclk_hdmiphy); free_irq(IRQ_MIXER, pdev); free_irq(IRQ_HDMI, pdev); free_irq(IRQ_TVENC, pdev); mutex_destroy(mutex_for_fo); #ifdef I2C_BASE mutex_destroy(mutex_for_i2c); #endif TVout_LDO_ctrl(false); return 0; }
/* * Remove */ static int s5p_tv_remove(struct platform_device *pdev) { __s5p_hdmi_release(pdev); __s5p_sdout_release(pdev); __s5p_mixer_release(pdev); __s5p_vp_release(pdev); #ifdef CONFIG_CPU_S5PC100 __s5p_tvclk_release(pdev); #endif i2c_del_driver(&hdcp_i2c_driver); clk_disable(s5ptv_status.tvenc_clk); clk_disable(s5ptv_status.vp_clk); clk_disable(s5ptv_status.mixer_clk); clk_disable(s5ptv_status.hdmi_clk); clk_disable(s5ptv_status.sclk_hdmi); clk_disable(s5ptv_status.sclk_mixer); clk_disable(s5ptv_status.sclk_tv); clk_put(s5ptv_status.tvenc_clk); clk_put(s5ptv_status.vp_clk); clk_put(s5ptv_status.mixer_clk); clk_put(s5ptv_status.hdmi_clk); clk_put(s5ptv_status.sclk_hdmi); clk_put(s5ptv_status.sclk_mixer); clk_put(s5ptv_status.sclk_tv); free_irq(IRQ_MIXER, pdev); free_irq(IRQ_HDMI, pdev); free_irq(IRQ_TVENC, pdev); free_irq(IRQ_EINT5, pdev); mutex_destroy(mutex_for_fo); mutex_destroy(mutex_for_i2c); return 0; }