From 17287b2cb5b47a36620b532092132a3c9370d1ab Mon Sep 17 00:00:00 2001 From: Mert Ekren Date: Wed, 5 Jun 2024 11:24:02 +0300 Subject: [PATCH 1/4] drivers: spi: MAX32657 fix related to register name change MAX32657 introduces changes for registers named (master, slave) to (controller, target) this causes build issues Signed-off-by: Mert Ekren --- drivers/spi/spi_max32.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/drivers/spi/spi_max32.c b/drivers/spi/spi_max32.c index 98ca60d209ca..ae2fe9b45497 100644 --- a/drivers/spi/spi_max32.c +++ b/drivers/spi/spi_max32.c @@ -382,7 +382,7 @@ static int transceive(const struct device *dev, const struct spi_config *config, spi_context_cs_control(ctx, true); } else { cfg->regs->ctrl0 = - (cfg->regs->ctrl0 & ~MXC_F_SPI_CTRL0_START) | MXC_F_SPI_CTRL0_SS_CTRL; + (cfg->regs->ctrl0 & ~MXC_F_SPI_CTRL0_START) | ADI_MAX32_SPI_CTRL0_SS_CTRL; } #ifdef CONFIG_SPI_MAX32_INTERRUPT @@ -412,7 +412,7 @@ static int transceive(const struct device *dev, const struct spi_config *config, if (!hw_cs_ctrl) { spi_context_cs_control(ctx, false); } else { - cfg->regs->ctrl0 &= ~(MXC_F_SPI_CTRL0_START | MXC_F_SPI_CTRL0_SS_CTRL | + cfg->regs->ctrl0 &= ~(MXC_F_SPI_CTRL0_START | ADI_MAX32_SPI_CTRL0_SS_CTRL | ADI_MAX32_SPI_CTRL_EN); cfg->regs->ctrl0 |= ADI_MAX32_SPI_CTRL_EN; } @@ -571,7 +571,7 @@ static int transceive_dma(const struct device *dev, const struct spi_config *con if (!hw_cs_ctrl) { spi_context_cs_control(ctx, true); } else { - spi->ctrl0 = (spi->ctrl0 & ~MXC_F_SPI_CTRL0_START) | MXC_F_SPI_CTRL0_SS_CTRL; + spi->ctrl0 = (spi->ctrl0 & ~MXC_F_SPI_CTRL0_START) | ADI_MAX32_SPI_CTRL0_SS_CTRL; } MXC_SPI_SetSlave(cfg->regs, ctx->config->slave); @@ -620,7 +620,7 @@ static int transceive_dma(const struct device *dev, const struct spi_config *con if (!hw_cs_ctrl) { spi_context_cs_control(ctx, false); } else { - spi->ctrl0 &= ~(MXC_F_SPI_CTRL0_START | MXC_F_SPI_CTRL0_SS_CTRL | + spi->ctrl0 &= ~(MXC_F_SPI_CTRL0_START | ADI_MAX32_SPI_CTRL0_SS_CTRL | ADI_MAX32_SPI_CTRL_EN); spi->ctrl0 |= ADI_MAX32_SPI_CTRL_EN; } @@ -772,7 +772,7 @@ static void spi_max32_callback(mxc_spi_req_t *req, int error) if (spi_cs_is_gpio(ctx->config)) { spi_context_cs_control(ctx, false); } else { - req->spi->ctrl0 &= ~(MXC_F_SPI_CTRL0_START | MXC_F_SPI_CTRL0_SS_CTRL | + req->spi->ctrl0 &= ~(MXC_F_SPI_CTRL0_START | ADI_MAX32_SPI_CTRL0_SS_CTRL | ADI_MAX32_SPI_CTRL_EN); req->spi->ctrl0 |= ADI_MAX32_SPI_CTRL_EN; } From be79f9b19fd7cf69752769ef187b1945ec4e0f92 Mon Sep 17 00:00:00 2001 From: Mert Ekren Date: Thu, 7 Nov 2024 17:28:32 +0300 Subject: [PATCH 2/4] dts: arm: adi: Add MAX32657 SPI instance and binding file Add SPI node to MAX32657 dtsi file Signed-off-by: Mert Ekren 226e230b349on how to improve this. --- dts/arm/adi/max32/max32657_common.dtsi | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/dts/arm/adi/max32/max32657_common.dtsi b/dts/arm/adi/max32/max32657_common.dtsi index 445e8d1587e7..bc5b70b651c8 100644 --- a/dts/arm/adi/max32/max32657_common.dtsi +++ b/dts/arm/adi/max32/max32657_common.dtsi @@ -268,6 +268,16 @@ status = "disabled"; }; }; + + spi0: spi@46000 { + compatible = "adi,max32-spi"; + reg = <0x46000 0x1000>; + #address-cells = <1>; + #size-cells = <0>; + clocks = <&gcr ADI_MAX32_CLOCK_BUS0 6>; + interrupts = <12 0>; + status = "disabled"; + }; }; &nvic { From fda89e39e96c2e27de04f52c9e63a18e29ac25b4 Mon Sep 17 00:00:00 2001 From: Mert Ekren Date: Thu, 11 Jul 2024 13:01:52 +0300 Subject: [PATCH 3/4] boards: arm: adi: Add SPI to MAX32657 boards driver list Add SPI into '.yaml' files. Signed-off-by: Mert Ekren --- boards/adi/max32657evkit/max32657evkit_max32657.yaml | 1 + boards/adi/max32657evkit/max32657evkit_max32657_common.dtsi | 6 ++++++ boards/adi/max32657evkit/max32657evkit_max32657_ns.yaml | 1 + 3 files changed, 8 insertions(+) diff --git a/boards/adi/max32657evkit/max32657evkit_max32657.yaml b/boards/adi/max32657evkit/max32657evkit_max32657.yaml index 062779481b7e..4d351c9c0555 100644 --- a/boards/adi/max32657evkit/max32657evkit_max32657.yaml +++ b/boards/adi/max32657evkit/max32657evkit_max32657.yaml @@ -14,5 +14,6 @@ supported: - dma - counter - pwm + - spi ram: 256 flash: 960 diff --git a/boards/adi/max32657evkit/max32657evkit_max32657_common.dtsi b/boards/adi/max32657evkit/max32657evkit_max32657_common.dtsi index 9eb96846dc34..17f5bf912547 100644 --- a/boards/adi/max32657evkit/max32657evkit_max32657_common.dtsi +++ b/boards/adi/max32657evkit/max32657evkit_max32657_common.dtsi @@ -65,3 +65,9 @@ &wdt0 { status = "okay"; }; + +&spi0 { + status = "okay"; + pinctrl-0 = <&spi0_mosi_p0_2 &spi0_miso_p0_4 &spi0_sck_p0_6 &spi0_ss0_p0_3>; + pinctrl-names = "default"; +}; diff --git a/boards/adi/max32657evkit/max32657evkit_max32657_ns.yaml b/boards/adi/max32657evkit/max32657evkit_max32657_ns.yaml index 15b244360bf3..b8323e5aca87 100644 --- a/boards/adi/max32657evkit/max32657evkit_max32657_ns.yaml +++ b/boards/adi/max32657evkit/max32657evkit_max32657_ns.yaml @@ -13,5 +13,6 @@ supported: - dma - counter - pwm + - spi ram: 192 flash: 576 From 6ffe69c80cd93a4492116ccb5b27886c323ae5ed Mon Sep 17 00:00:00 2001 From: Mert Ekren Date: Tue, 4 Jun 2024 13:31:32 +0300 Subject: [PATCH 4/4] tests: drivers: spi: Add MAX32657 overlay files Enable 'spi_loopback' test for MAX32657 boards. Signed-off-by: Mert Ekren --- .../boards/max32657evkit_max32657.conf | 6 +++++ .../boards/max32657evkit_max32657.overlay | 25 +++++++++++++++++++ .../boards/max32657evkit_max32657_ns.conf | 6 +++++ .../boards/max32657evkit_max32657_ns.overlay | 18 +++++++++++++ 4 files changed, 55 insertions(+) create mode 100644 tests/drivers/spi/spi_loopback/boards/max32657evkit_max32657.conf create mode 100644 tests/drivers/spi/spi_loopback/boards/max32657evkit_max32657.overlay create mode 100644 tests/drivers/spi/spi_loopback/boards/max32657evkit_max32657_ns.conf create mode 100644 tests/drivers/spi/spi_loopback/boards/max32657evkit_max32657_ns.overlay diff --git a/tests/drivers/spi/spi_loopback/boards/max32657evkit_max32657.conf b/tests/drivers/spi/spi_loopback/boards/max32657evkit_max32657.conf new file mode 100644 index 000000000000..87c673fcdaff --- /dev/null +++ b/tests/drivers/spi/spi_loopback/boards/max32657evkit_max32657.conf @@ -0,0 +1,6 @@ +# +# Copyright (c) 2024 Analog Devices, Inc. +# +# SPDX-License-Identifier: Apache-2.0 +# +CONFIG_SPI_MAX32_INTERRUPT=y diff --git a/tests/drivers/spi/spi_loopback/boards/max32657evkit_max32657.overlay b/tests/drivers/spi/spi_loopback/boards/max32657evkit_max32657.overlay new file mode 100644 index 000000000000..83a4a0b60da6 --- /dev/null +++ b/tests/drivers/spi/spi_loopback/boards/max32657evkit_max32657.overlay @@ -0,0 +1,25 @@ +/* + * Copyright (c) 2024 Analog Devices, Inc. + * + * SPDX-License-Identifier: Apache-2.0 + */ + +&dma1 { + status = "okay"; +}; + +&spi0 { + dmas = <&dma1 1 MAX32_DMA_SLOT_SPI_TX>, <&dma1 2 MAX32_DMA_SLOT_SPI_RX>; + dma-names = "tx", "rx"; + + slow@1 { + compatible = "test-spi-loopback-slow"; + reg = <1>; + spi-max-frequency = <128000>; + }; + fast@1 { + compatible = "test-spi-loopback-fast"; + reg = <1>; + spi-max-frequency = <500000>; + }; +}; diff --git a/tests/drivers/spi/spi_loopback/boards/max32657evkit_max32657_ns.conf b/tests/drivers/spi/spi_loopback/boards/max32657evkit_max32657_ns.conf new file mode 100644 index 000000000000..87c673fcdaff --- /dev/null +++ b/tests/drivers/spi/spi_loopback/boards/max32657evkit_max32657_ns.conf @@ -0,0 +1,6 @@ +# +# Copyright (c) 2024 Analog Devices, Inc. +# +# SPDX-License-Identifier: Apache-2.0 +# +CONFIG_SPI_MAX32_INTERRUPT=y diff --git a/tests/drivers/spi/spi_loopback/boards/max32657evkit_max32657_ns.overlay b/tests/drivers/spi/spi_loopback/boards/max32657evkit_max32657_ns.overlay new file mode 100644 index 000000000000..ee529c8bf487 --- /dev/null +++ b/tests/drivers/spi/spi_loopback/boards/max32657evkit_max32657_ns.overlay @@ -0,0 +1,18 @@ +/* + * Copyright (c) 2024 Analog Devices, Inc. + * + * SPDX-License-Identifier: Apache-2.0 + */ + +&spi0 { + slow@1 { + compatible = "test-spi-loopback-slow"; + reg = <1>; + spi-max-frequency = <128000>; + }; + fast@1 { + compatible = "test-spi-loopback-fast"; + reg = <1>; + spi-max-frequency = <500000>; + }; +};