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:
Arnd Bergmann 2023-10-25 15:26:42 +02:00
commit 80957adc47
9 changed files with 30 additions and 92 deletions

View File

@ -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);

View File

@ -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,

View File

@ -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;
}

View File

@ -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,

View File

@ -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,

View File

@ -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);

View File

@ -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);

View File

@ -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,

View File

@ -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,