media: rockchip: cif: clear unready subdevice when kernel boot complete

Change-Id: Ib53d8138dce1e9237cf40d776241eaa2ac05f816
Signed-off-by: Hu Kejun <william.hu@rock-chips.com>
This commit is contained in:
Hu Kejun
2019-04-23 17:35:46 +08:00
committed by Tao Huang
parent 77e5e026b3
commit 108e05c271
2 changed files with 21 additions and 0 deletions

View File

@@ -43,6 +43,9 @@ MODULE_PARM_DESC(version, "version number");
int using_pingpong;
static DEFINE_MUTEX(rkcif_dev_mutex);
static LIST_HEAD(rkcif_device_list);
/***************************** media controller *******************************/
static int rkcif_create_links(struct rkcif_device *dev)
{
@@ -632,6 +635,10 @@ static int rkcif_plat_probe(struct platform_device *pdev)
pm_runtime_enable(&pdev->dev);
mutex_lock(&rkcif_dev_mutex);
list_add_tail(&cif_dev->list, &rkcif_device_list);
mutex_unlock(&rkcif_dev_mutex);
return 0;
err_unreg_media_dev:
@@ -678,6 +685,19 @@ static int __maybe_unused rkcif_runtime_resume(struct device *dev)
return 0;
}
static int __init rkcif_clr_unready_dev(void)
{
struct rkcif_device *cif_dev;
mutex_lock(&rkcif_dev_mutex);
list_for_each_entry(cif_dev, &rkcif_device_list, list)
v4l2_async_notifier_clr_unready_dev(&cif_dev->notifier);
mutex_unlock(&rkcif_dev_mutex);
return 0;
}
late_initcall_sync(rkcif_clr_unready_dev);
static const struct dev_pm_ops rkcif_plat_pm_ops = {
SET_SYSTEM_SLEEP_PM_OPS(pm_runtime_force_suspend,
pm_runtime_force_resume)

View File

@@ -186,6 +186,7 @@ static inline struct rkcif_stream *to_rkcif_stream(struct video_device *vdev)
* @stream: capture video device
*/
struct rkcif_device {
struct list_head list;
struct device *dev;
int irq;
void __iomem *base_addr;