The Turris Mox shares the moxtet IRQ with various devices on the board,
so mark the IRQ as shared in the driver as well.
Without this loading the module will fail with:
genirq: Flags mismatch irq 40. 00002002 (moxtet) vs. 00002080 (mcp7940x)
Signed-off-by: Sjoerd Simons <[email protected]>
---
drivers/bus/moxtet.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/bus/moxtet.c b/drivers/bus/moxtet.c
index 5eb0fe73ddc4..48c18f95660a 100644
--- a/drivers/bus/moxtet.c
+++ b/drivers/bus/moxtet.c
@@ -755,7 +755,7 @@ static int moxtet_irq_setup(struct moxtet *moxtet)
moxtet->irq.masked = ~0;
ret = request_threaded_irq(moxtet->dev_irq, NULL, moxtet_irq_thread_fn,
- IRQF_ONESHOT, "moxtet", moxtet);
+ IRQF_SHARED | IRQF_ONESHOT, "moxtet", moxtet);
if (ret < 0)
goto err_free;
--
2.42.0
The moxtet module was failing to auto-load on my system. Add a SPI id
table to allow it to do so.
Signed-off-by: Sjoerd Simons <[email protected]>
---
drivers/bus/moxtet.c | 7 +++++++
1 file changed, 7 insertions(+)
diff --git a/drivers/bus/moxtet.c b/drivers/bus/moxtet.c
index 48c18f95660a..e384fbc6c1d9 100644
--- a/drivers/bus/moxtet.c
+++ b/drivers/bus/moxtet.c
@@ -830,6 +830,12 @@ static void moxtet_remove(struct spi_device *spi)
mutex_destroy(&moxtet->lock);
}
+static const struct spi_device_id moxtet_spi_ids[] = {
+ { "moxtet" },
+ { },
+};
+MODULE_DEVICE_TABLE(spi, moxtet_spi_ids);
+
static const struct of_device_id moxtet_dt_ids[] = {
{ .compatible = "cznic,moxtet" },
{},
@@ -841,6 +847,7 @@ static struct spi_driver moxtet_spi_driver = {
.name = "moxtet",
.of_match_table = moxtet_dt_ids,
},
+ .id_table = moxtet_spi_ids,
.probe = moxtet_probe,
.remove = moxtet_remove,
};
--
2.42.0
On Thu, 23 Nov 2023 15:23:37 +0100
Sjoerd Simons <[email protected]> wrote:
> The Turris Mox shares the moxtet IRQ with various devices on the board,
> so mark the IRQ as shared in the driver as well.
>
> Without this loading the module will fail with:
> genirq: Flags mismatch irq 40. 00002002 (moxtet) vs. 00002080 (mcp7940x)
>
> Signed-off-by: Sjoerd Simons <[email protected]>
> ---
>
> drivers/bus/moxtet.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/bus/moxtet.c b/drivers/bus/moxtet.c
> index 5eb0fe73ddc4..48c18f95660a 100644
> --- a/drivers/bus/moxtet.c
> +++ b/drivers/bus/moxtet.c
> @@ -755,7 +755,7 @@ static int moxtet_irq_setup(struct moxtet *moxtet)
> moxtet->irq.masked = ~0;
>
> ret = request_threaded_irq(moxtet->dev_irq, NULL, moxtet_irq_thread_fn,
> - IRQF_ONESHOT, "moxtet", moxtet);
> + IRQF_SHARED | IRQF_ONESHOT, "moxtet", moxtet);
> if (ret < 0)
> goto err_free;
>
Reviewed-by: Marek Behún <[email protected]>
On Thu, 23 Nov 2023 15:23:38 +0100
Sjoerd Simons <[email protected]> wrote:
> The moxtet module was failing to auto-load on my system. Add a SPI id
> table to allow it to do so.
>
> Signed-off-by: Sjoerd Simons <[email protected]>
>
> ---
>
> drivers/bus/moxtet.c | 7 +++++++
> 1 file changed, 7 insertions(+)
>
> diff --git a/drivers/bus/moxtet.c b/drivers/bus/moxtet.c
> index 48c18f95660a..e384fbc6c1d9 100644
> --- a/drivers/bus/moxtet.c
> +++ b/drivers/bus/moxtet.c
> @@ -830,6 +830,12 @@ static void moxtet_remove(struct spi_device *spi)
> mutex_destroy(&moxtet->lock);
> }
>
> +static const struct spi_device_id moxtet_spi_ids[] = {
> + { "moxtet" },
> + { },
> +};
> +MODULE_DEVICE_TABLE(spi, moxtet_spi_ids);
> +
> static const struct of_device_id moxtet_dt_ids[] = {
> { .compatible = "cznic,moxtet" },
> {},
> @@ -841,6 +847,7 @@ static struct spi_driver moxtet_spi_driver = {
> .name = "moxtet",
> .of_match_table = moxtet_dt_ids,
> },
> + .id_table = moxtet_spi_ids,
> .probe = moxtet_probe,
> .remove = moxtet_remove,
> };
Reviewed-by: Marek Behún <[email protected]>