Commit e0678631 authored by Arnd Bergmann's avatar Arnd Bergmann

Merge tag 'ti-driver-soc-for-v6.10' of...

Merge tag 'ti-driver-soc-for-v6.10' of https://git.kernel.org/pub/scm/linux/kernel/git/ti/linux into soc/drivers

TI SoC driver updates for v6.10

Generic Cleanups/Fixes:
- wkup_m3_ipc: Minor optimization to send NULL dummy message instead of empty pointer message
- ti_sci: Register restart handler unconditionally

* tag 'ti-driver-soc-for-v6.10' of https://git.kernel.org/pub/scm/linux/kernel/git/ti/linux:
  soc: ti: wkup_m3_ipc: Send NULL dummy message instead of pointer message
  firmware: ti_sci: Unconditionally register reset handler
  firmware: ti_sci: Use devm_register_restart_handler()

Link: https://lore.kernel.org/r/20240501124300.i5jzeugdlrlnfg22@undraftedSigned-off-by: default avatarArnd Bergmann <arnd@arndb.de>
parents 1c9fc342 ddbf3204
...@@ -87,7 +87,6 @@ struct ti_sci_desc { ...@@ -87,7 +87,6 @@ struct ti_sci_desc {
* struct ti_sci_info - Structure representing a TI SCI instance * struct ti_sci_info - Structure representing a TI SCI instance
* @dev: Device pointer * @dev: Device pointer
* @desc: SoC description for this instance * @desc: SoC description for this instance
* @nb: Reboot Notifier block
* @d: Debugfs file entry * @d: Debugfs file entry
* @debug_region: Memory region where the debug message are available * @debug_region: Memory region where the debug message are available
* @debug_region_size: Debug region size * @debug_region_size: Debug region size
...@@ -103,7 +102,6 @@ struct ti_sci_desc { ...@@ -103,7 +102,6 @@ struct ti_sci_desc {
*/ */
struct ti_sci_info { struct ti_sci_info {
struct device *dev; struct device *dev;
struct notifier_block nb;
const struct ti_sci_desc *desc; const struct ti_sci_desc *desc;
struct dentry *d; struct dentry *d;
void __iomem *debug_region; void __iomem *debug_region;
...@@ -122,7 +120,6 @@ struct ti_sci_info { ...@@ -122,7 +120,6 @@ struct ti_sci_info {
#define cl_to_ti_sci_info(c) container_of(c, struct ti_sci_info, cl) #define cl_to_ti_sci_info(c) container_of(c, struct ti_sci_info, cl)
#define handle_to_ti_sci_info(h) container_of(h, struct ti_sci_info, handle) #define handle_to_ti_sci_info(h) container_of(h, struct ti_sci_info, handle)
#define reboot_to_ti_sci_info(n) container_of(n, struct ti_sci_info, nb)
#ifdef CONFIG_DEBUG_FS #ifdef CONFIG_DEBUG_FS
...@@ -3254,10 +3251,9 @@ devm_ti_sci_get_resource(const struct ti_sci_handle *handle, struct device *dev, ...@@ -3254,10 +3251,9 @@ devm_ti_sci_get_resource(const struct ti_sci_handle *handle, struct device *dev,
} }
EXPORT_SYMBOL_GPL(devm_ti_sci_get_resource); EXPORT_SYMBOL_GPL(devm_ti_sci_get_resource);
static int tisci_reboot_handler(struct notifier_block *nb, unsigned long mode, static int tisci_reboot_handler(struct sys_off_data *data)
void *cmd)
{ {
struct ti_sci_info *info = reboot_to_ti_sci_info(nb); struct ti_sci_info *info = data->cb_data;
const struct ti_sci_handle *handle = &info->handle; const struct ti_sci_handle *handle = &info->handle;
ti_sci_cmd_core_reboot(handle); ti_sci_cmd_core_reboot(handle);
...@@ -3303,7 +3299,6 @@ static int ti_sci_probe(struct platform_device *pdev) ...@@ -3303,7 +3299,6 @@ static int ti_sci_probe(struct platform_device *pdev)
struct mbox_client *cl; struct mbox_client *cl;
int ret = -EINVAL; int ret = -EINVAL;
int i; int i;
int reboot = 0;
u32 h_id; u32 h_id;
desc = device_get_match_data(dev); desc = device_get_match_data(dev);
...@@ -3327,8 +3322,6 @@ static int ti_sci_probe(struct platform_device *pdev) ...@@ -3327,8 +3322,6 @@ static int ti_sci_probe(struct platform_device *pdev)
} }
} }
reboot = of_property_read_bool(dev->of_node,
"ti,system-reboot-controller");
INIT_LIST_HEAD(&info->node); INIT_LIST_HEAD(&info->node);
minfo = &info->minfo; minfo = &info->minfo;
...@@ -3399,15 +3392,10 @@ static int ti_sci_probe(struct platform_device *pdev) ...@@ -3399,15 +3392,10 @@ static int ti_sci_probe(struct platform_device *pdev)
ti_sci_setup_ops(info); ti_sci_setup_ops(info);
if (reboot) { ret = devm_register_restart_handler(dev, tisci_reboot_handler, info);
info->nb.notifier_call = tisci_reboot_handler; if (ret) {
info->nb.priority = 128; dev_err(dev, "reboot registration fail(%d)\n", ret);
goto out;
ret = register_restart_handler(&info->nb);
if (ret) {
dev_err(dev, "reboot registration fail(%d)\n", ret);
goto out;
}
} }
dev_info(dev, "ABI: %d.%d (firmware rev 0x%04x '%s')\n", dev_info(dev, "ABI: %d.%d (firmware rev 0x%04x '%s')\n",
......
...@@ -16,7 +16,6 @@ ...@@ -16,7 +16,6 @@
#include <linux/irq.h> #include <linux/irq.h>
#include <linux/module.h> #include <linux/module.h>
#include <linux/of.h> #include <linux/of.h>
#include <linux/omap-mailbox.h>
#include <linux/platform_device.h> #include <linux/platform_device.h>
#include <linux/remoteproc.h> #include <linux/remoteproc.h>
#include <linux/suspend.h> #include <linux/suspend.h>
...@@ -314,7 +313,6 @@ static irqreturn_t wkup_m3_txev_handler(int irq, void *ipc_data) ...@@ -314,7 +313,6 @@ static irqreturn_t wkup_m3_txev_handler(int irq, void *ipc_data)
static int wkup_m3_ping(struct wkup_m3_ipc *m3_ipc) static int wkup_m3_ping(struct wkup_m3_ipc *m3_ipc)
{ {
struct device *dev = m3_ipc->dev; struct device *dev = m3_ipc->dev;
mbox_msg_t dummy_msg = 0;
int ret; int ret;
if (!m3_ipc->mbox) { if (!m3_ipc->mbox) {
...@@ -330,7 +328,7 @@ static int wkup_m3_ping(struct wkup_m3_ipc *m3_ipc) ...@@ -330,7 +328,7 @@ static int wkup_m3_ping(struct wkup_m3_ipc *m3_ipc)
* the RX callback to avoid multiple interrupts being received * the RX callback to avoid multiple interrupts being received
* by the CM3. * by the CM3.
*/ */
ret = mbox_send_message(m3_ipc->mbox, &dummy_msg); ret = mbox_send_message(m3_ipc->mbox, NULL);
if (ret < 0) { if (ret < 0) {
dev_err(dev, "%s: mbox_send_message() failed: %d\n", dev_err(dev, "%s: mbox_send_message() failed: %d\n",
__func__, ret); __func__, ret);
...@@ -352,7 +350,6 @@ static int wkup_m3_ping(struct wkup_m3_ipc *m3_ipc) ...@@ -352,7 +350,6 @@ static int wkup_m3_ping(struct wkup_m3_ipc *m3_ipc)
static int wkup_m3_ping_noirq(struct wkup_m3_ipc *m3_ipc) static int wkup_m3_ping_noirq(struct wkup_m3_ipc *m3_ipc)
{ {
struct device *dev = m3_ipc->dev; struct device *dev = m3_ipc->dev;
mbox_msg_t dummy_msg = 0;
int ret; int ret;
if (!m3_ipc->mbox) { if (!m3_ipc->mbox) {
...@@ -361,7 +358,7 @@ static int wkup_m3_ping_noirq(struct wkup_m3_ipc *m3_ipc) ...@@ -361,7 +358,7 @@ static int wkup_m3_ping_noirq(struct wkup_m3_ipc *m3_ipc)
return -EIO; return -EIO;
} }
ret = mbox_send_message(m3_ipc->mbox, &dummy_msg); ret = mbox_send_message(m3_ipc->mbox, NULL);
if (ret < 0) { if (ret < 0) {
dev_err(dev, "%s: mbox_send_message() failed: %d\n", dev_err(dev, "%s: mbox_send_message() failed: %d\n",
__func__, ret); __func__, ret);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment