1

mhu-v3, omap2+ : fix kconfig dependencies

imx: use devie name instead of genereic imx_mu_chan as interrupt name
 qcom: enable sa8255p and qcs8300 ipc controllers
 bcm2835: Fix timeout during suspend mode
 mailbox: convert to use use of_property_match_string
 mediatek: enable mt8188
 spreadtrum: use devm_clk_get_enabled helpers
 rockchip: fix device-id typo
 -----BEGIN PGP SIGNATURE-----
 
 iQIzBAABCgAdFiEE6EwehDt/SOnwFyTyf9lkf8eYP5UFAmb5dsUACgkQf9lkf8eY
 P5WwLQ//d1DboQvqf4AqqPCbTp+UvcVCFVTriCJvA1voBVAj9He1z9QVleF6MblS
 XZHBXau2cBW7OWRE9SYZ+qlrN/yCxFPjprbxx9w9nvsLvXCycxWZqpRPYA1LXXHp
 bULXIHJpuqZdJbXCK+qORFX+kyavWKnRRg5cM5hIEWf81BkjzGG5se95GeGzuC3D
 NzVKshtXl4WGVjWl1J+S/7k+/8VlDM/lRjRz4H8UG8bAya5sNv/9CHRfXw3qXXuv
 DsiojkLKhsefzBI3lvsirZvX5LsRaHE1lbseFU+KqLnJt+YKZBCjYrKHCQRZ/iJx
 7THCZN+Qkmu+Q4x+2tEf2VmZzyX7nwJiZmTyStdZK4f8V0gAELq4h5Lbz3jWe9Vc
 K9kHRRjufiAW9yFYuB4FzOPt6uSbB7QyyVOjgW0LaL1PsCWhyJUuATQ3WutKKfHB
 ttTTK/hsHc4tCoJDejJeCRuGp9exYnMUZ8zGOyCrAc0Wn0ClRgLB+SBfvdo0wgz/
 qdI8Rf+RXb1iQdv5f6UfS+xnH/uhqh6vyr5GhuGfZGWUOejLQMNwDKxLvei2ROFL
 oXxwKHZiBAHJgSHyEG0HmY0ct/Qsyrh8ufCFlUbzRa7OqNg+HqtJ1cSVuyeJ412g
 XHyqouwUlIUYuxWqm8Bhc0OHw63i6C4lODTcOXNLkFqXHqICHYM=
 =nCRH
 -----END PGP SIGNATURE-----

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
This commit is contained in:
Linus Torvalds 2024-09-29 09:53:04 -07:00
commit e7ed343658
10 changed files with 32 additions and 51 deletions

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -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__);
return ERR_PTR(-EINVAL);
}
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", dev_err(cl->dev, "%s() could not locate channel named \"%s\"\n",
__func__, name); __func__, name);
return ERR_PTR(-EINVAL); return ERR_PTR(-EINVAL);
}
return mbox_request_channel(cl, index);
} }
EXPORT_SYMBOL_GPL(mbox_request_channel_byname); EXPORT_SYMBOL_GPL(mbox_request_channel_byname);

View File

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

View File

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

View File

@ -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 = {
.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)
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");

View File

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