Merge tag 'ti-driver-soc-for-v6.7' of https://git.kernel.org/pub/scm/linux/kernel/git/ti/linux into soc/drivers
TI SoC driver updates for v6.7 - Generic fixups: Convert to platform remove callback returning void - ti_sci: Minor fixups and mark driver as non-removable - k3-socinfo: Documentation fixups, cosmetic fixups - knav_qmss_queue: Optimize with device_get_match_data Signed-off-by: Nishanth Menon <nm@ti.com> * tag 'ti-driver-soc-for-v6.7' of https://git.kernel.org/pub/scm/linux/kernel/git/ti/linux: soc: ti: k3-socinfo: Avoid overriding return value soc: ti: k3-socinfo: Fix typo in bitfield documentation soc: ti: knav_qmss_queue: Use device_get_match_data() firmware: ti_sci: Use device_get_match_data() soc/ti: wkup_m3_ipc: Convert to platform remove callback returning void soc/ti: smartreflex: Convert to platform remove callback returning void soc/ti: pruss: Convert to platform remove callback returning void soc/ti: pm33xx: Convert to platform remove callback returning void soc/ti: knav_qmss_queue: Convert to platform remove callback returning void soc/ti: knav_dma: Convert to platform remove callback returning void soc/ti: k3-ringacc: Convert to platform remove callback returning void firmware: ti_sci: Mark driver as non removable firmware: ti_sci: refactor deprecated strncpy firmware: ti_sci: Use list_for_each_entry() helper Link: https://lore.kernel.org/r/20231018165226.33x5cjn5jmgnm3di@magnolia Signed-off-by: Arnd Bergmann <arnd@arndb.de>
This commit is contained in:
@@ -16,7 +16,10 @@
|
||||
#include <linux/kernel.h>
|
||||
#include <linux/mailbox_client.h>
|
||||
#include <linux/module.h>
|
||||
#include <linux/of_device.h>
|
||||
#include <linux/of.h>
|
||||
#include <linux/of_platform.h>
|
||||
#include <linux/platform_device.h>
|
||||
#include <linux/property.h>
|
||||
#include <linux/semaphore.h>
|
||||
#include <linux/slab.h>
|
||||
#include <linux/soc/ti/ti-msgmgr.h>
|
||||
@@ -190,19 +193,6 @@ static int ti_sci_debugfs_create(struct platform_device *pdev,
|
||||
return 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* ti_sci_debugfs_destroy() - clean up log debug file
|
||||
* @pdev: platform device pointer
|
||||
* @info: Pointer to SCI entity information
|
||||
*/
|
||||
static void ti_sci_debugfs_destroy(struct platform_device *pdev,
|
||||
struct ti_sci_info *info)
|
||||
{
|
||||
if (IS_ERR(info->debug_region))
|
||||
return;
|
||||
|
||||
debugfs_remove(info->d);
|
||||
}
|
||||
#else /* CONFIG_DEBUG_FS */
|
||||
static inline int ti_sci_debugfs_create(struct platform_device *dev,
|
||||
struct ti_sci_info *info)
|
||||
@@ -485,7 +475,7 @@ static int ti_sci_cmd_get_revision(struct ti_sci_info *info)
|
||||
ver->abi_major = rev_info->abi_major;
|
||||
ver->abi_minor = rev_info->abi_minor;
|
||||
ver->firmware_revision = rev_info->firmware_revision;
|
||||
strncpy(ver->firmware_description, rev_info->firmware_description,
|
||||
strscpy(ver->firmware_description, rev_info->firmware_description,
|
||||
sizeof(ver->firmware_description));
|
||||
|
||||
fail:
|
||||
@@ -2886,7 +2876,6 @@ static void ti_sci_setup_ops(struct ti_sci_info *info)
|
||||
const struct ti_sci_handle *ti_sci_get_handle(struct device *dev)
|
||||
{
|
||||
struct device_node *ti_sci_np;
|
||||
struct list_head *p;
|
||||
struct ti_sci_handle *handle = NULL;
|
||||
struct ti_sci_info *info;
|
||||
|
||||
@@ -2901,8 +2890,7 @@ const struct ti_sci_handle *ti_sci_get_handle(struct device *dev)
|
||||
}
|
||||
|
||||
mutex_lock(&ti_sci_list_mutex);
|
||||
list_for_each(p, &ti_sci_list) {
|
||||
info = list_entry(p, struct ti_sci_info, node);
|
||||
list_for_each_entry(info, &ti_sci_list, node) {
|
||||
if (ti_sci_np == info->dev->of_node) {
|
||||
handle = &info->handle;
|
||||
info->users++;
|
||||
@@ -3012,7 +3000,6 @@ const struct ti_sci_handle *ti_sci_get_by_phandle(struct device_node *np,
|
||||
struct ti_sci_handle *handle = NULL;
|
||||
struct device_node *ti_sci_np;
|
||||
struct ti_sci_info *info;
|
||||
struct list_head *p;
|
||||
|
||||
if (!np) {
|
||||
pr_err("I need a device pointer\n");
|
||||
@@ -3024,8 +3011,7 @@ const struct ti_sci_handle *ti_sci_get_by_phandle(struct device_node *np,
|
||||
return ERR_PTR(-ENODEV);
|
||||
|
||||
mutex_lock(&ti_sci_list_mutex);
|
||||
list_for_each(p, &ti_sci_list) {
|
||||
info = list_entry(p, struct ti_sci_info, node);
|
||||
list_for_each_entry(info, &ti_sci_list, node) {
|
||||
if (ti_sci_np == info->dev->of_node) {
|
||||
handle = &info->handle;
|
||||
info->users++;
|
||||
@@ -3310,7 +3296,6 @@ MODULE_DEVICE_TABLE(of, ti_sci_of_match);
|
||||
static int ti_sci_probe(struct platform_device *pdev)
|
||||
{
|
||||
struct device *dev = &pdev->dev;
|
||||
const struct of_device_id *of_id;
|
||||
const struct ti_sci_desc *desc;
|
||||
struct ti_sci_xfer *xfer;
|
||||
struct ti_sci_info *info = NULL;
|
||||
@@ -3321,12 +3306,7 @@ static int ti_sci_probe(struct platform_device *pdev)
|
||||
int reboot = 0;
|
||||
u32 h_id;
|
||||
|
||||
of_id = of_match_device(ti_sci_of_match, dev);
|
||||
if (!of_id) {
|
||||
dev_err(dev, "OF data missing\n");
|
||||
return -EINVAL;
|
||||
}
|
||||
desc = of_id->data;
|
||||
desc = device_get_match_data(dev);
|
||||
|
||||
info = devm_kzalloc(dev, sizeof(*info), GFP_KERNEL);
|
||||
if (!info)
|
||||
@@ -3449,43 +3429,12 @@ out:
|
||||
return ret;
|
||||
}
|
||||
|
||||
static int ti_sci_remove(struct platform_device *pdev)
|
||||
{
|
||||
struct ti_sci_info *info;
|
||||
struct device *dev = &pdev->dev;
|
||||
int ret = 0;
|
||||
|
||||
of_platform_depopulate(dev);
|
||||
|
||||
info = platform_get_drvdata(pdev);
|
||||
|
||||
if (info->nb.notifier_call)
|
||||
unregister_restart_handler(&info->nb);
|
||||
|
||||
mutex_lock(&ti_sci_list_mutex);
|
||||
if (info->users)
|
||||
ret = -EBUSY;
|
||||
else
|
||||
list_del(&info->node);
|
||||
mutex_unlock(&ti_sci_list_mutex);
|
||||
|
||||
if (!ret) {
|
||||
ti_sci_debugfs_destroy(pdev, info);
|
||||
|
||||
/* Safe to free channels since no more users */
|
||||
mbox_free_channel(info->chan_tx);
|
||||
mbox_free_channel(info->chan_rx);
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
static struct platform_driver ti_sci_driver = {
|
||||
.probe = ti_sci_probe,
|
||||
.remove = ti_sci_remove,
|
||||
.driver = {
|
||||
.name = "ti-sci",
|
||||
.of_match_table = of_match_ptr(ti_sci_of_match),
|
||||
.suppress_bind_attrs = true,
|
||||
},
|
||||
};
|
||||
module_platform_driver(ti_sci_driver);
|
||||
|
||||
@@ -1551,19 +1551,18 @@ static int k3_ringacc_probe(struct platform_device *pdev)
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int k3_ringacc_remove(struct platform_device *pdev)
|
||||
static void k3_ringacc_remove(struct platform_device *pdev)
|
||||
{
|
||||
struct k3_ringacc *ringacc = dev_get_drvdata(&pdev->dev);
|
||||
|
||||
mutex_lock(&k3_ringacc_list_lock);
|
||||
list_del(&ringacc->list);
|
||||
mutex_unlock(&k3_ringacc_list_lock);
|
||||
return 0;
|
||||
}
|
||||
|
||||
static struct platform_driver k3_ringacc_driver = {
|
||||
.probe = k3_ringacc_probe,
|
||||
.remove = k3_ringacc_remove,
|
||||
.remove_new = k3_ringacc_remove,
|
||||
.driver = {
|
||||
.name = "k3-ringacc",
|
||||
.of_match_table = k3_ringacc_of_match,
|
||||
|
||||
@@ -20,7 +20,7 @@
|
||||
* 31-28 VARIANT Device variant
|
||||
* 27-12 PARTNO Part number
|
||||
* 11-1 MFG Indicates TI as manufacturer (0x17)
|
||||
* 1 Always 1
|
||||
* 0 Always 1
|
||||
*/
|
||||
#define CTRLMMR_WKUP_JTAGID_VARIANT_SHIFT (28)
|
||||
#define CTRLMMR_WKUP_JTAGID_VARIANT_MASK GENMASK(31, 28)
|
||||
@@ -60,7 +60,7 @@ k3_chipinfo_partno_to_names(unsigned int partno,
|
||||
return 0;
|
||||
}
|
||||
|
||||
return -EINVAL;
|
||||
return -ENODEV;
|
||||
}
|
||||
|
||||
static int k3_chipinfo_probe(struct platform_device *pdev)
|
||||
@@ -111,8 +111,7 @@ static int k3_chipinfo_probe(struct platform_device *pdev)
|
||||
|
||||
ret = k3_chipinfo_partno_to_names(partno_id, soc_dev_attr);
|
||||
if (ret) {
|
||||
dev_err(dev, "Unknown SoC JTAGID[0x%08X]\n", jtag_id);
|
||||
ret = -ENODEV;
|
||||
dev_err(dev, "Unknown SoC JTAGID[0x%08X]: %d\n", jtag_id, ret);
|
||||
goto err_free_rev;
|
||||
}
|
||||
|
||||
|
||||
@@ -773,7 +773,7 @@ err_pm_disable:
|
||||
return ret;
|
||||
}
|
||||
|
||||
static int knav_dma_remove(struct platform_device *pdev)
|
||||
static void knav_dma_remove(struct platform_device *pdev)
|
||||
{
|
||||
struct knav_dma_device *dma;
|
||||
|
||||
@@ -784,8 +784,6 @@ static int knav_dma_remove(struct platform_device *pdev)
|
||||
|
||||
pm_runtime_put_sync(&pdev->dev);
|
||||
pm_runtime_disable(&pdev->dev);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static struct of_device_id of_match[] = {
|
||||
@@ -797,7 +795,7 @@ MODULE_DEVICE_TABLE(of, of_match);
|
||||
|
||||
static struct platform_driver knav_dma_driver = {
|
||||
.probe = knav_dma_probe,
|
||||
.remove = knav_dma_remove,
|
||||
.remove_new = knav_dma_remove,
|
||||
.driver = {
|
||||
.name = "keystone-navigator-dma",
|
||||
.of_match_table = of_match,
|
||||
|
||||
@@ -14,10 +14,12 @@
|
||||
#include <linux/interrupt.h>
|
||||
#include <linux/io.h>
|
||||
#include <linux/module.h>
|
||||
#include <linux/of.h>
|
||||
#include <linux/of_address.h>
|
||||
#include <linux/of_device.h>
|
||||
#include <linux/of_irq.h>
|
||||
#include <linux/platform_device.h>
|
||||
#include <linux/pm_runtime.h>
|
||||
#include <linux/property.h>
|
||||
#include <linux/slab.h>
|
||||
#include <linux/soc/ti/knav_qmss.h>
|
||||
|
||||
@@ -1754,7 +1756,6 @@ static int knav_queue_probe(struct platform_device *pdev)
|
||||
{
|
||||
struct device_node *node = pdev->dev.of_node;
|
||||
struct device_node *qmgrs, *queue_pools, *regions, *pdsps;
|
||||
const struct of_device_id *match;
|
||||
struct device *dev = &pdev->dev;
|
||||
u32 temp[2];
|
||||
int ret;
|
||||
@@ -1770,8 +1771,7 @@ static int knav_queue_probe(struct platform_device *pdev)
|
||||
return -ENOMEM;
|
||||
}
|
||||
|
||||
match = of_match_device(of_match_ptr(keystone_qmss_of_match), dev);
|
||||
if (match && match->data)
|
||||
if (device_get_match_data(dev))
|
||||
kdev->version = QMSS_66AK2G;
|
||||
|
||||
platform_set_drvdata(pdev, kdev);
|
||||
@@ -1884,17 +1884,16 @@ err:
|
||||
return ret;
|
||||
}
|
||||
|
||||
static int knav_queue_remove(struct platform_device *pdev)
|
||||
static void knav_queue_remove(struct platform_device *pdev)
|
||||
{
|
||||
/* TODO: Free resources */
|
||||
pm_runtime_put_sync(&pdev->dev);
|
||||
pm_runtime_disable(&pdev->dev);
|
||||
return 0;
|
||||
}
|
||||
|
||||
static struct platform_driver keystone_qmss_driver = {
|
||||
.probe = knav_queue_probe,
|
||||
.remove = knav_queue_remove,
|
||||
.remove_new = knav_queue_remove,
|
||||
.driver = {
|
||||
.name = "keystone-navigator-qmss",
|
||||
.of_match_table = keystone_qmss_of_match,
|
||||
|
||||
@@ -583,7 +583,7 @@ err_wkup_m3_ipc_put:
|
||||
return ret;
|
||||
}
|
||||
|
||||
static int am33xx_pm_remove(struct platform_device *pdev)
|
||||
static void am33xx_pm_remove(struct platform_device *pdev)
|
||||
{
|
||||
pm_runtime_put_sync(&pdev->dev);
|
||||
pm_runtime_disable(&pdev->dev);
|
||||
@@ -594,7 +594,6 @@ static int am33xx_pm_remove(struct platform_device *pdev)
|
||||
am33xx_pm_free_sram();
|
||||
iounmap(rtc_base_virt);
|
||||
clk_put(rtc_fck);
|
||||
return 0;
|
||||
}
|
||||
|
||||
static struct platform_driver am33xx_pm_driver = {
|
||||
@@ -602,7 +601,7 @@ static struct platform_driver am33xx_pm_driver = {
|
||||
.name = "pm33xx",
|
||||
},
|
||||
.probe = am33xx_pm_probe,
|
||||
.remove = am33xx_pm_remove,
|
||||
.remove_new = am33xx_pm_remove,
|
||||
};
|
||||
module_platform_driver(am33xx_pm_driver);
|
||||
|
||||
|
||||
@@ -565,7 +565,7 @@ rpm_disable:
|
||||
return ret;
|
||||
}
|
||||
|
||||
static int pruss_remove(struct platform_device *pdev)
|
||||
static void pruss_remove(struct platform_device *pdev)
|
||||
{
|
||||
struct device *dev = &pdev->dev;
|
||||
|
||||
@@ -573,8 +573,6 @@ static int pruss_remove(struct platform_device *pdev)
|
||||
|
||||
pm_runtime_put_sync(dev);
|
||||
pm_runtime_disable(dev);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* instance-specific driver private data */
|
||||
@@ -610,7 +608,7 @@ static struct platform_driver pruss_driver = {
|
||||
.of_match_table = pruss_of_match,
|
||||
},
|
||||
.probe = pruss_probe,
|
||||
.remove = pruss_remove,
|
||||
.remove_new = pruss_remove,
|
||||
};
|
||||
module_platform_driver(pruss_driver);
|
||||
|
||||
|
||||
@@ -933,7 +933,7 @@ err_list_del:
|
||||
return ret;
|
||||
}
|
||||
|
||||
static int omap_sr_remove(struct platform_device *pdev)
|
||||
static void omap_sr_remove(struct platform_device *pdev)
|
||||
{
|
||||
struct device *dev = &pdev->dev;
|
||||
struct omap_sr *sr_info = platform_get_drvdata(pdev);
|
||||
@@ -945,7 +945,6 @@ static int omap_sr_remove(struct platform_device *pdev)
|
||||
pm_runtime_disable(dev);
|
||||
clk_unprepare(sr_info->fck);
|
||||
list_del(&sr_info->node);
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void omap_sr_shutdown(struct platform_device *pdev)
|
||||
@@ -970,7 +969,7 @@ MODULE_DEVICE_TABLE(of, omap_sr_match);
|
||||
|
||||
static struct platform_driver smartreflex_driver = {
|
||||
.probe = omap_sr_probe,
|
||||
.remove = omap_sr_remove,
|
||||
.remove_new = omap_sr_remove,
|
||||
.shutdown = omap_sr_shutdown,
|
||||
.driver = {
|
||||
.name = DRIVER_NAME,
|
||||
|
||||
@@ -713,7 +713,7 @@ err_free_mbox:
|
||||
return ret;
|
||||
}
|
||||
|
||||
static int wkup_m3_ipc_remove(struct platform_device *pdev)
|
||||
static void wkup_m3_ipc_remove(struct platform_device *pdev)
|
||||
{
|
||||
wkup_m3_ipc_dbg_destroy(m3_ipc_state);
|
||||
|
||||
@@ -723,8 +723,6 @@ static int wkup_m3_ipc_remove(struct platform_device *pdev)
|
||||
rproc_put(m3_ipc_state->rproc);
|
||||
|
||||
m3_ipc_state = NULL;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int __maybe_unused wkup_m3_ipc_suspend(struct device *dev)
|
||||
@@ -760,7 +758,7 @@ MODULE_DEVICE_TABLE(of, wkup_m3_ipc_of_match);
|
||||
|
||||
static struct platform_driver wkup_m3_ipc_driver = {
|
||||
.probe = wkup_m3_ipc_probe,
|
||||
.remove = wkup_m3_ipc_remove,
|
||||
.remove_new = wkup_m3_ipc_remove,
|
||||
.driver = {
|
||||
.name = "wkup_m3_ipc",
|
||||
.of_match_table = wkup_m3_ipc_of_match,
|
||||
|
||||
Reference in New Issue
Block a user