Commit e7ed3436 authored by Linus Torvalds's avatar Linus Torvalds

Merge tag 'mailbox-v6.12' of git://git.kernel.org/pub/scm/linux/kernel/git/jassibrar/mailbox

Pull mailbox updates from Jassi Brar:

 - fix kconfig dependencies (mhu-v3, omap2+)

 - use devie name instead of genereic imx_mu_chan as interrupt name
   (imx)

 - enable sa8255p and qcs8300 ipc controllers (qcom)

 - Fix timeout during suspend mode (bcm2835)

 - convert to use use of_property_match_string (mailbox)

 - enable mt8188 (mediatek)

 - use devm_clk_get_enabled helpers (spreadtrum)

 - fix device-id typo (rockchip)

* tag 'mailbox-v6.12' of git://git.kernel.org/pub/scm/linux/kernel/git/jassibrar/mailbox:
  mailbox, remoteproc: omap2+: fix compile testing
  dt-bindings: mailbox: qcom-ipcc: Document QCS8300 IPCC
  dt-bindings: mailbox: qcom-ipcc: document the support for SA8255p
  dt-bindings: mailbox: mtk,adsp-mbox: Add compatible for MT8188
  mailbox: Use of_property_match_string() instead of open-coding
  mailbox: bcm2835: Fix timeout during suspend mode
  mailbox: sprd: Use devm_clk_get_enabled() helpers
  mailbox: rockchip: fix a typo in module autoloading
  mailbox: imx: use device name in interrupt name
  mailbox: ARM_MHU_V3 should depend on ARM64
parents 907537f5 54595f28
...@@ -17,9 +17,15 @@ description: | ...@@ -17,9 +17,15 @@ description: |
properties: properties:
compatible: compatible:
enum: oneOf:
- mediatek,mt8195-adsp-mbox - enum:
- mediatek,mt8186-adsp-mbox - mediatek,mt8186-adsp-mbox
- mediatek,mt8195-adsp-mbox
- items:
- enum:
- mediatek,mt8188-adsp-mbox
- const: mediatek,mt8186-adsp-mbox
"#mbox-cells": "#mbox-cells":
const: 0 const: 0
......
...@@ -24,7 +24,9 @@ properties: ...@@ -24,7 +24,9 @@ properties:
compatible: compatible:
items: items:
- enum: - enum:
- qcom,qcs8300-ipcc
- qcom,qdu1000-ipcc - qcom,qdu1000-ipcc
- qcom,sa8255p-ipcc
- qcom,sa8775p-ipcc - qcom,sa8775p-ipcc
- qcom,sc7280-ipcc - qcom,sc7280-ipcc
- qcom,sc8280xp-ipcc - qcom,sc8280xp-ipcc
......
...@@ -25,6 +25,7 @@ config ARM_MHU_V2 ...@@ -25,6 +25,7 @@ config ARM_MHU_V2
config ARM_MHU_V3 config ARM_MHU_V3
tristate "ARM MHUv3 Mailbox" tristate "ARM MHUv3 Mailbox"
depends on ARM64 || COMPILE_TEST
depends on HAS_IOMEM || COMPILE_TEST depends on HAS_IOMEM || COMPILE_TEST
depends on OF depends on OF
help help
...@@ -73,7 +74,7 @@ config ARMADA_37XX_RWTM_MBOX ...@@ -73,7 +74,7 @@ config ARMADA_37XX_RWTM_MBOX
config OMAP2PLUS_MBOX config OMAP2PLUS_MBOX
tristate "OMAP2+ Mailbox framework support" tristate "OMAP2+ Mailbox framework support"
depends on ARCH_OMAP2PLUS || ARCH_K3 depends on ARCH_OMAP2PLUS || ARCH_K3 || COMPILE_TEST
help help
Mailbox implementation for OMAP family chips with hardware for Mailbox implementation for OMAP family chips with hardware for
interprocessor communication involving DSP, IVA1.0 and IVA2 in interprocessor communication involving DSP, IVA1.0 and IVA2 in
......
...@@ -145,7 +145,8 @@ static int bcm2835_mbox_probe(struct platform_device *pdev) ...@@ -145,7 +145,8 @@ static int bcm2835_mbox_probe(struct platform_device *pdev)
spin_lock_init(&mbox->lock); spin_lock_init(&mbox->lock);
ret = devm_request_irq(dev, irq_of_parse_and_map(dev->of_node, 0), ret = devm_request_irq(dev, irq_of_parse_and_map(dev->of_node, 0),
bcm2835_mbox_irq, 0, dev_name(dev), mbox); bcm2835_mbox_irq, IRQF_NO_SUSPEND, dev_name(dev),
mbox);
if (ret) { if (ret) {
dev_err(dev, "Failed to register a mailbox IRQ handler: %d\n", dev_err(dev, "Failed to register a mailbox IRQ handler: %d\n",
ret); ret);
......
...@@ -30,7 +30,7 @@ ...@@ -30,7 +30,7 @@
#define IMX_MU_SCU_CHANS 6 #define IMX_MU_SCU_CHANS 6
/* TX0/RX0 */ /* TX0/RX0 */
#define IMX_MU_S4_CHANS 2 #define IMX_MU_S4_CHANS 2
#define IMX_MU_CHAN_NAME_SIZE 20 #define IMX_MU_CHAN_NAME_SIZE 32
#define IMX_MU_V2_PAR_OFF 0x4 #define IMX_MU_V2_PAR_OFF 0x4
#define IMX_MU_V2_TR_MASK GENMASK(7, 0) #define IMX_MU_V2_TR_MASK GENMASK(7, 0)
...@@ -782,7 +782,7 @@ static int imx_mu_init_generic(struct imx_mu_priv *priv) ...@@ -782,7 +782,7 @@ static int imx_mu_init_generic(struct imx_mu_priv *priv)
cp->chan = &priv->mbox_chans[i]; cp->chan = &priv->mbox_chans[i];
priv->mbox_chans[i].con_priv = cp; priv->mbox_chans[i].con_priv = cp;
snprintf(cp->irq_desc, sizeof(cp->irq_desc), snprintf(cp->irq_desc, sizeof(cp->irq_desc),
"imx_mu_chan[%i-%i]", cp->type, cp->idx); "%s[%i-%i]", dev_name(priv->dev), cp->type, cp->idx);
} }
priv->mbox.num_chans = IMX_MU_CHANS; priv->mbox.num_chans = IMX_MU_CHANS;
...@@ -819,7 +819,7 @@ static int imx_mu_init_specific(struct imx_mu_priv *priv) ...@@ -819,7 +819,7 @@ static int imx_mu_init_specific(struct imx_mu_priv *priv)
cp->chan = &priv->mbox_chans[i]; cp->chan = &priv->mbox_chans[i];
priv->mbox_chans[i].con_priv = cp; priv->mbox_chans[i].con_priv = cp;
snprintf(cp->irq_desc, sizeof(cp->irq_desc), snprintf(cp->irq_desc, sizeof(cp->irq_desc),
"imx_mu_chan[%i-%i]", cp->type, cp->idx); "%s[%i-%i]", dev_name(priv->dev), cp->type, cp->idx);
} }
priv->mbox.num_chans = num_chans; priv->mbox.num_chans = num_chans;
......
...@@ -450,30 +450,20 @@ struct mbox_chan *mbox_request_channel_byname(struct mbox_client *cl, ...@@ -450,30 +450,20 @@ struct mbox_chan *mbox_request_channel_byname(struct mbox_client *cl,
const char *name) const char *name)
{ {
struct device_node *np = cl->dev->of_node; struct device_node *np = cl->dev->of_node;
struct property *prop; int index;
const char *mbox_name;
int index = 0;
if (!np) { if (!np) {
dev_err(cl->dev, "%s() currently only supports DT\n", __func__); dev_err(cl->dev, "%s() currently only supports DT\n", __func__);
return ERR_PTR(-EINVAL); return ERR_PTR(-EINVAL);
} }
if (!of_get_property(np, "mbox-names", NULL)) { index = of_property_match_string(np, "mbox-names", name);
dev_err(cl->dev, if (index < 0) {
"%s() requires an \"mbox-names\" property\n", __func__); dev_err(cl->dev, "%s() could not locate channel named \"%s\"\n",
__func__, name);
return ERR_PTR(-EINVAL); return ERR_PTR(-EINVAL);
} }
return mbox_request_channel(cl, index);
of_property_for_each_string(np, "mbox-names", prop, mbox_name) {
if (!strncmp(name, mbox_name, strlen(name)))
return mbox_request_channel(cl, index);
index++;
}
dev_err(cl->dev, "%s() could not locate channel named \"%s\"\n",
__func__, name);
return ERR_PTR(-EINVAL);
} }
EXPORT_SYMBOL_GPL(mbox_request_channel_byname); EXPORT_SYMBOL_GPL(mbox_request_channel_byname);
......
...@@ -603,7 +603,7 @@ static struct platform_driver omap_mbox_driver = { ...@@ -603,7 +603,7 @@ static struct platform_driver omap_mbox_driver = {
.driver = { .driver = {
.name = "omap-mailbox", .name = "omap-mailbox",
.pm = &omap_mbox_pm_ops, .pm = &omap_mbox_pm_ops,
.of_match_table = of_match_ptr(omap_mailbox_of_match), .of_match_table = omap_mailbox_of_match,
}, },
}; };
module_platform_driver(omap_mbox_driver); module_platform_driver(omap_mbox_driver);
......
...@@ -159,7 +159,7 @@ static const struct of_device_id rockchip_mbox_of_match[] = { ...@@ -159,7 +159,7 @@ static const struct of_device_id rockchip_mbox_of_match[] = {
{ .compatible = "rockchip,rk3368-mailbox", .data = &rk3368_drv_data}, { .compatible = "rockchip,rk3368-mailbox", .data = &rk3368_drv_data},
{ }, { },
}; };
MODULE_DEVICE_TABLE(of, rockchp_mbox_of_match); MODULE_DEVICE_TABLE(of, rockchip_mbox_of_match);
static int rockchip_mbox_probe(struct platform_device *pdev) static int rockchip_mbox_probe(struct platform_device *pdev)
{ {
......
...@@ -62,7 +62,6 @@ struct sprd_mbox_priv { ...@@ -62,7 +62,6 @@ struct sprd_mbox_priv {
void __iomem *outbox_base; void __iomem *outbox_base;
/* Base register address for supplementary outbox */ /* Base register address for supplementary outbox */
void __iomem *supp_base; void __iomem *supp_base;
struct clk *clk;
u32 outbox_fifo_depth; u32 outbox_fifo_depth;
struct mutex lock; struct mutex lock;
...@@ -291,19 +290,13 @@ static const struct mbox_chan_ops sprd_mbox_ops = { ...@@ -291,19 +290,13 @@ static const struct mbox_chan_ops sprd_mbox_ops = {
.shutdown = sprd_mbox_shutdown, .shutdown = sprd_mbox_shutdown,
}; };
static void sprd_mbox_disable(void *data)
{
struct sprd_mbox_priv *priv = data;
clk_disable_unprepare(priv->clk);
}
static int sprd_mbox_probe(struct platform_device *pdev) static int sprd_mbox_probe(struct platform_device *pdev)
{ {
struct device *dev = &pdev->dev; struct device *dev = &pdev->dev;
struct sprd_mbox_priv *priv; struct sprd_mbox_priv *priv;
int ret, inbox_irq, outbox_irq, supp_irq; int ret, inbox_irq, outbox_irq, supp_irq;
unsigned long id, supp; unsigned long id, supp;
struct clk *clk;
priv = devm_kzalloc(dev, sizeof(*priv), GFP_KERNEL); priv = devm_kzalloc(dev, sizeof(*priv), GFP_KERNEL);
if (!priv) if (!priv)
...@@ -331,20 +324,10 @@ static int sprd_mbox_probe(struct platform_device *pdev) ...@@ -331,20 +324,10 @@ static int sprd_mbox_probe(struct platform_device *pdev)
if (IS_ERR(priv->outbox_base)) if (IS_ERR(priv->outbox_base))
return PTR_ERR(priv->outbox_base); return PTR_ERR(priv->outbox_base);
priv->clk = devm_clk_get(dev, "enable"); clk = devm_clk_get_enabled(dev, "enable");
if (IS_ERR(priv->clk)) { if (IS_ERR(clk)) {
dev_err(dev, "failed to get mailbox clock\n"); dev_err(dev, "failed to get mailbox clock\n");
return PTR_ERR(priv->clk); return PTR_ERR(clk);
}
ret = clk_prepare_enable(priv->clk);
if (ret)
return ret;
ret = devm_add_action_or_reset(dev, sprd_mbox_disable, priv);
if (ret) {
dev_err(dev, "failed to add mailbox disable action\n");
return ret;
} }
inbox_irq = platform_get_irq_byname(pdev, "inbox"); inbox_irq = platform_get_irq_byname(pdev, "inbox");
......
...@@ -330,8 +330,7 @@ config STM32_RPROC ...@@ -330,8 +330,7 @@ config STM32_RPROC
config TI_K3_DSP_REMOTEPROC config TI_K3_DSP_REMOTEPROC
tristate "TI K3 DSP remoteproc support" tristate "TI K3 DSP remoteproc support"
depends on ARCH_K3 depends on ARCH_K3
select MAILBOX depends on OMAP2PLUS_MBOX
select OMAP2PLUS_MBOX
help help
Say m here to support TI's C66x and C71x DSP remote processor Say m here to support TI's C66x and C71x DSP remote processor
subsystems on various TI K3 family of SoCs through the remote subsystems on various TI K3 family of SoCs through the remote
...@@ -356,8 +355,7 @@ config TI_K3_M4_REMOTEPROC ...@@ -356,8 +355,7 @@ config TI_K3_M4_REMOTEPROC
config TI_K3_R5_REMOTEPROC config TI_K3_R5_REMOTEPROC
tristate "TI K3 R5 remoteproc support" tristate "TI K3 R5 remoteproc support"
depends on ARCH_K3 depends on ARCH_K3
select MAILBOX depends on OMAP2PLUS_MBOX
select OMAP2PLUS_MBOX
help help
Say m here to support TI's R5F remote processor subsystems Say m here to support TI's R5F remote processor subsystems
on various TI K3 family of SoCs through the remote processor on various TI K3 family of SoCs through the remote processor
......
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