mirror of
https://github.com/torvalds/linux.git
synced 2026-05-24 15:12:13 +02:00
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> -----BEGIN PGP SIGNATURE----- iQIzBAABCgAdFiEE+KKGk1TrgjIXoxo03bWEnRc2JJ0FAmUwCggACgkQ3bWEnRc2 JJ1LZg//dFofW+sMC5tZT/gUp4QYcyMYap24CadWnGqkD8kSG2yrP+FIP+m7qr63 mF44UxUamASAQfL1s3zfGJIxY3sE8XUY8giQt2df3Vra7/6zv5EdZ87uIkBSPjZ1 zkrE3JHOEGAZUIwcRlLfSJp/rGf5NyFkBpjWyAA9RfABUT3/Vd3PMpziyE5FtODd rHSHX9gmBrH60INUhQedb3gNDuyK0+EN/5N8XKtZslmGwBrRc4nxMQn/FSLdLVbn j+IpWTcLH0pV6Nukx62lsejuVuKEBALTrhgjKlat9U3ubXZeuvI6fTEOWtxuXsHQ WVwfnDlIH6gu+600CflhTRDVXMDI1G+q/ag07hrJpvzlCsSMUEUUTIPdOwebml9T +1h/D1zoFEnSEEvMgmexI03aHT2xwuA8d1oHPZaffU/c7i5161pg7Qfx4v3i1zOU 5H58SInZmdRK0SNvyHZcjKgdPeoAl+vAYjWB2IhniesbSlu+WP7U7A6Ln33CZTKw Tdzdnq86MHxlv2N+tnBs0W5bEwp1AeQ+GwoyBerbVz9yR6gNfPSdUvcGdHiPhBhK GLnQsC96Kyxoc86XJJduqUfd2RfW5w5Jb/0zq9R5hodL/lb4OKGk5kdWj5PbAfgA XV+qbPA/08Py+erHn7+oTgvu/G/011jrL88vEtWHgvGx66dAf8g= =PtGl -----END PGP SIGNATURE----- gpgsig -----BEGIN PGP SIGNATURE----- iQIzBAABCgAdFiEEiK/NIGsWEZVxh/FrYKtH/8kJUicFAmU5F5cACgkQYKtH/8kJ UifwNRAAmTZIgC+024z79719pxO2udTayvCTAsVDgND19USrpMZiutIgdsnb7m+O qecc2EA7XhNBGjUWK8AHQ+/0i5H4uje6615i4R4SgPeNqkzHXoNi6KAZNc4PP+fO 2mtOu09ysbZ+Qfx942ldFKv6Rv02UkGkijCDwnm2yG3tBOv3cDqfuHjSQdxxh5tC UKZyBudtlnNDMFP9HORomAbbR5C3ZiABurFjBMm9C1eG4W00kGNZhbyg6nGmlCB3 bzZEEVKwbVkFgmMcTZdRAia7N33oC0788OTyx5oQ842SDBGzyS07+/16KrHHrou2 I5GLte109GZ9586MHg68wpjeP/y4RrVkDVq1IHNGSTQnB9cK7eN5y8QQ6CERoUAm XKqy9SD4hnQCHIo9ltOUHiA5NEWbXMyWR8XXkvznYGz4nQOSbrYtgZlh+U71cZ06 WByz2e4Z+fbuxAs679QffGjbEiZUr0oGsxP/wD5VldTxXC/MlMciN3D4PP+7umCZ wvz4mp8IDzXAu+LL/9gT4jk3DRv5ISYd/RQ0yUG8VnUJkKTTcGE4kyByIiUkr/Ez 2StqltwaIuExxCOwjHYLv2OJS+haEtE5NURh39CE8xQxV4rIKc+JNOjLauatgSYP rIwtW/7m8wnhfRab/L8amuUIcEyx/+8X+FGMJ+2WMz6lGA9rKmY= =x0sJ -----END PGP SIGNATURE----- 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:
commit
80957adc47
|
|
@ -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 @@ static int ti_sci_probe(struct platform_device *pdev)
|
|||
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 @@ static int knav_dma_probe(struct platform_device *pdev)
|
|||
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 @@ static int knav_queue_probe(struct platform_device *pdev)
|
|||
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 @@ static int am33xx_pm_probe(struct platform_device *pdev)
|
|||
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 @@ static int pruss_probe(struct platform_device *pdev)
|
|||
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 @@ static int omap_sr_probe(struct platform_device *pdev)
|
|||
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 @@ static int wkup_m3_ipc_probe(struct platform_device *pdev)
|
|||
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,
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user