diff options
Diffstat (limited to 'drivers/media/cec')
-rw-r--r-- | drivers/media/cec/core/cec-adap.c | 7 | ||||
-rw-r--r-- | drivers/media/cec/platform/cec-gpio/cec-gpio.c | 5 | ||||
-rw-r--r-- | drivers/media/cec/platform/cros-ec/cros-ec-cec.c | 22 | ||||
-rw-r--r-- | drivers/media/cec/platform/meson/ao-cec-g12a.c | 6 | ||||
-rw-r--r-- | drivers/media/cec/platform/meson/ao-cec.c | 6 | ||||
-rw-r--r-- | drivers/media/cec/platform/s5p/s5p_cec.c | 5 | ||||
-rw-r--r-- | drivers/media/cec/platform/seco/seco-cec.c | 6 | ||||
-rw-r--r-- | drivers/media/cec/platform/sti/stih-cec.c | 6 | ||||
-rw-r--r-- | drivers/media/cec/platform/stm32/stm32-cec.c | 6 | ||||
-rw-r--r-- | drivers/media/cec/platform/tegra/tegra_cec.c | 6 |
10 files changed, 35 insertions, 40 deletions
diff --git a/drivers/media/cec/core/cec-adap.c b/drivers/media/cec/core/cec-adap.c index 4f5ab3cae8a7..769ea6b2e1d0 100644 --- a/drivers/media/cec/core/cec-adap.c +++ b/drivers/media/cec/core/cec-adap.c @@ -1052,6 +1052,7 @@ void cec_received_msg_ts(struct cec_adapter *adap, u8 cmd = msg->msg[1]; bool is_reply = false; bool valid_la = true; + bool monitor_valid_la = true; u8 min_len = 0; if (WARN_ON(!msg->len || msg->len > CEC_MAX_MSG_SIZE)) @@ -1093,8 +1094,10 @@ void cec_received_msg_ts(struct cec_adapter *adap, adap->last_initiator = 0xff; /* Check if this message was for us (directed or broadcast). */ - if (!cec_msg_is_broadcast(msg)) + if (!cec_msg_is_broadcast(msg)) { valid_la = cec_has_log_addr(adap, msg_dest); + monitor_valid_la = valid_la; + } /* * Check if the length is not too short or if the message is a @@ -1227,7 +1230,7 @@ void cec_received_msg_ts(struct cec_adapter *adap, mutex_unlock(&adap->lock); /* Pass the message on to any monitoring filehandles */ - cec_queue_msg_monitor(adap, msg, valid_la); + cec_queue_msg_monitor(adap, msg, monitor_valid_la); /* We're done if it is not for us or a poll message */ if (!valid_la || msg->len <= 1) diff --git a/drivers/media/cec/platform/cec-gpio/cec-gpio.c b/drivers/media/cec/platform/cec-gpio/cec-gpio.c index c8c4efc83f5f..ff34490fd869 100644 --- a/drivers/media/cec/platform/cec-gpio/cec-gpio.c +++ b/drivers/media/cec/platform/cec-gpio/cec-gpio.c @@ -269,13 +269,12 @@ del_adap: return ret; } -static int cec_gpio_remove(struct platform_device *pdev) +static void cec_gpio_remove(struct platform_device *pdev) { struct cec_gpio *cec = platform_get_drvdata(pdev); cec_notifier_cec_adap_unregister(cec->notifier, cec->adap); cec_unregister_adapter(cec->adap); - return 0; } static const struct of_device_id cec_gpio_match[] = { @@ -288,7 +287,7 @@ MODULE_DEVICE_TABLE(of, cec_gpio_match); static struct platform_driver cec_gpio_pdrv = { .probe = cec_gpio_probe, - .remove = cec_gpio_remove, + .remove_new = cec_gpio_remove, .driver = { .name = "cec-gpio", .of_match_table = cec_gpio_match, diff --git a/drivers/media/cec/platform/cros-ec/cros-ec-cec.c b/drivers/media/cec/platform/cros-ec/cros-ec-cec.c index 6ebedc71d67d..c17faf002877 100644 --- a/drivers/media/cec/platform/cros-ec/cros-ec-cec.c +++ b/drivers/media/cec/platform/cros-ec/cros-ec-cec.c @@ -225,6 +225,12 @@ static const struct cec_dmi_match cec_dmi_match_table[] = { { "Google", "Kinox", "0000:00:02.0", "Port B" }, /* Google Kuldax */ { "Google", "Kuldax", "0000:00:02.0", "Port B" }, + /* Google Aurash */ + { "Google", "Aurash", "0000:00:02.0", "Port B" }, + /* Google Gladios */ + { "Google", "Gladios", "0000:00:02.0", "Port B" }, + /* Google Lisbon */ + { "Google", "Lisbon", "0000:00:02.0", "Port B" }, }; static struct device *cros_ec_cec_find_hdmi_dev(struct device *dev, @@ -326,31 +332,31 @@ out_probe_adapter: return ret; } -static int cros_ec_cec_remove(struct platform_device *pdev) +static void cros_ec_cec_remove(struct platform_device *pdev) { struct cros_ec_cec *cros_ec_cec = platform_get_drvdata(pdev); struct device *dev = &pdev->dev; int ret; + /* + * blocking_notifier_chain_unregister() only fails if the notifier isn't + * in the list. We know it was added to it by .probe(), so there should + * be no need for error checking. Be cautious and still check. + */ ret = blocking_notifier_chain_unregister( &cros_ec_cec->cros_ec->event_notifier, &cros_ec_cec->notifier); - - if (ret) { + if (ret) dev_err(dev, "failed to unregister notifier\n"); - return ret; - } cec_notifier_cec_adap_unregister(cros_ec_cec->notify, cros_ec_cec->adap); cec_unregister_adapter(cros_ec_cec->adap); - - return 0; } static struct platform_driver cros_ec_cec_driver = { .probe = cros_ec_cec_probe, - .remove = cros_ec_cec_remove, + .remove_new = cros_ec_cec_remove, .driver = { .name = DRV_NAME, .pm = &cros_ec_cec_pm_ops, diff --git a/drivers/media/cec/platform/meson/ao-cec-g12a.c b/drivers/media/cec/platform/meson/ao-cec-g12a.c index 68fe6d6a8178..51294b9b6cd5 100644 --- a/drivers/media/cec/platform/meson/ao-cec-g12a.c +++ b/drivers/media/cec/platform/meson/ao-cec-g12a.c @@ -744,7 +744,7 @@ out_probe_adapter: return ret; } -static int meson_ao_cec_g12a_remove(struct platform_device *pdev) +static void meson_ao_cec_g12a_remove(struct platform_device *pdev) { struct meson_ao_cec_g12a_device *ao_cec = platform_get_drvdata(pdev); @@ -753,8 +753,6 @@ static int meson_ao_cec_g12a_remove(struct platform_device *pdev) cec_notifier_cec_adap_unregister(ao_cec->notify, ao_cec->adap); cec_unregister_adapter(ao_cec->adap); - - return 0; } static const struct meson_ao_cec_g12a_data ao_cec_g12a_data = { @@ -780,7 +778,7 @@ MODULE_DEVICE_TABLE(of, meson_ao_cec_g12a_of_match); static struct platform_driver meson_ao_cec_g12a_driver = { .probe = meson_ao_cec_g12a_probe, - .remove = meson_ao_cec_g12a_remove, + .remove_new = meson_ao_cec_g12a_remove, .driver = { .name = "meson-ao-cec-g12a", .of_match_table = of_match_ptr(meson_ao_cec_g12a_of_match), diff --git a/drivers/media/cec/platform/meson/ao-cec.c b/drivers/media/cec/platform/meson/ao-cec.c index 6b440f0635d9..f6f51a34f7bd 100644 --- a/drivers/media/cec/platform/meson/ao-cec.c +++ b/drivers/media/cec/platform/meson/ao-cec.c @@ -696,7 +696,7 @@ out_probe_adapter: return ret; } -static int meson_ao_cec_remove(struct platform_device *pdev) +static void meson_ao_cec_remove(struct platform_device *pdev) { struct meson_ao_cec_device *ao_cec = platform_get_drvdata(pdev); @@ -704,8 +704,6 @@ static int meson_ao_cec_remove(struct platform_device *pdev) cec_notifier_cec_adap_unregister(ao_cec->notify, ao_cec->adap); cec_unregister_adapter(ao_cec->adap); - - return 0; } static const struct of_device_id meson_ao_cec_of_match[] = { @@ -716,7 +714,7 @@ MODULE_DEVICE_TABLE(of, meson_ao_cec_of_match); static struct platform_driver meson_ao_cec_driver = { .probe = meson_ao_cec_probe, - .remove = meson_ao_cec_remove, + .remove_new = meson_ao_cec_remove, .driver = { .name = "meson-ao-cec", .of_match_table = of_match_ptr(meson_ao_cec_of_match), diff --git a/drivers/media/cec/platform/s5p/s5p_cec.c b/drivers/media/cec/platform/s5p/s5p_cec.c index 0a30e7acdc10..51ab4a80aafe 100644 --- a/drivers/media/cec/platform/s5p/s5p_cec.c +++ b/drivers/media/cec/platform/s5p/s5p_cec.c @@ -249,14 +249,13 @@ err_delete_adapter: return ret; } -static int s5p_cec_remove(struct platform_device *pdev) +static void s5p_cec_remove(struct platform_device *pdev) { struct s5p_cec_dev *cec = platform_get_drvdata(pdev); cec_notifier_cec_adap_unregister(cec->notifier, cec->adap); cec_unregister_adapter(cec->adap); pm_runtime_disable(&pdev->dev); - return 0; } static int __maybe_unused s5p_cec_runtime_suspend(struct device *dev) @@ -295,7 +294,7 @@ MODULE_DEVICE_TABLE(of, s5p_cec_match); static struct platform_driver s5p_cec_pdrv = { .probe = s5p_cec_probe, - .remove = s5p_cec_remove, + .remove_new = s5p_cec_remove, .driver = { .name = CEC_NAME, .of_match_table = s5p_cec_match, diff --git a/drivers/media/cec/platform/seco/seco-cec.c b/drivers/media/cec/platform/seco/seco-cec.c index 580905e3d066..5d4c5a2cae09 100644 --- a/drivers/media/cec/platform/seco/seco-cec.c +++ b/drivers/media/cec/platform/seco/seco-cec.c @@ -668,7 +668,7 @@ err: return ret; } -static int secocec_remove(struct platform_device *pdev) +static void secocec_remove(struct platform_device *pdev) { struct secocec_data *secocec = platform_get_drvdata(pdev); u16 val; @@ -686,8 +686,6 @@ static int secocec_remove(struct platform_device *pdev) release_region(BRA_SMB_BASE_ADDR, 7); dev_dbg(&pdev->dev, "CEC device removed\n"); - - return 0; } #ifdef CONFIG_PM_SLEEP @@ -780,7 +778,7 @@ static struct platform_driver secocec_driver = { .pm = SECOCEC_PM_OPS, }, .probe = secocec_probe, - .remove = secocec_remove, + .remove_new = secocec_remove, }; module_platform_driver(secocec_driver); diff --git a/drivers/media/cec/platform/sti/stih-cec.c b/drivers/media/cec/platform/sti/stih-cec.c index 4edbdd09535d..a20fc5c0c88d 100644 --- a/drivers/media/cec/platform/sti/stih-cec.c +++ b/drivers/media/cec/platform/sti/stih-cec.c @@ -364,14 +364,12 @@ err_delete_adapter: return ret; } -static int stih_cec_remove(struct platform_device *pdev) +static void stih_cec_remove(struct platform_device *pdev) { struct stih_cec *cec = platform_get_drvdata(pdev); cec_notifier_cec_adap_unregister(cec->notifier, cec->adap); cec_unregister_adapter(cec->adap); - - return 0; } static const struct of_device_id stih_cec_match[] = { @@ -384,7 +382,7 @@ MODULE_DEVICE_TABLE(of, stih_cec_match); static struct platform_driver stih_cec_pdrv = { .probe = stih_cec_probe, - .remove = stih_cec_remove, + .remove_new = stih_cec_remove, .driver = { .name = CEC_NAME, .of_match_table = stih_cec_match, diff --git a/drivers/media/cec/platform/stm32/stm32-cec.c b/drivers/media/cec/platform/stm32/stm32-cec.c index 7b2db46a5722..ada3d153362a 100644 --- a/drivers/media/cec/platform/stm32/stm32-cec.c +++ b/drivers/media/cec/platform/stm32/stm32-cec.c @@ -344,7 +344,7 @@ err_unprepare_cec_clk: return ret; } -static int stm32_cec_remove(struct platform_device *pdev) +static void stm32_cec_remove(struct platform_device *pdev) { struct stm32_cec *cec = platform_get_drvdata(pdev); @@ -352,8 +352,6 @@ static int stm32_cec_remove(struct platform_device *pdev) clk_unprepare(cec->clk_hdmi_cec); cec_unregister_adapter(cec->adap); - - return 0; } static const struct of_device_id stm32_cec_of_match[] = { @@ -364,7 +362,7 @@ MODULE_DEVICE_TABLE(of, stm32_cec_of_match); static struct platform_driver stm32_cec_driver = { .probe = stm32_cec_probe, - .remove = stm32_cec_remove, + .remove_new = stm32_cec_remove, .driver = { .name = CEC_NAME, .of_match_table = stm32_cec_of_match, diff --git a/drivers/media/cec/platform/tegra/tegra_cec.c b/drivers/media/cec/platform/tegra/tegra_cec.c index 5e907395ca2e..04dc06e3c42a 100644 --- a/drivers/media/cec/platform/tegra/tegra_cec.c +++ b/drivers/media/cec/platform/tegra/tegra_cec.c @@ -421,7 +421,7 @@ err_clk: return ret; } -static int tegra_cec_remove(struct platform_device *pdev) +static void tegra_cec_remove(struct platform_device *pdev) { struct tegra_cec *cec = platform_get_drvdata(pdev); @@ -429,8 +429,6 @@ static int tegra_cec_remove(struct platform_device *pdev) cec_notifier_cec_adap_unregister(cec->notifier, cec->adap); cec_unregister_adapter(cec->adap); - - return 0; } #ifdef CONFIG_PM @@ -467,7 +465,7 @@ static struct platform_driver tegra_cec_driver = { .of_match_table = of_match_ptr(tegra_cec_of_match), }, .probe = tegra_cec_probe, - .remove = tegra_cec_remove, + .remove_new = tegra_cec_remove, #ifdef CONFIG_PM .suspend = tegra_cec_suspend, |