Skip to content

Commit 26cbb4d

Browse files
committed
Axiado AX3000 SoC SPI DB controller driver
Merge series from Vladimir Moravcevic <vmoravcevic@axiado.com>: This series introduces new SPI controller driver for Axiado AX3000 SoC and its evaluation board. The SPI controller provides: - Full-duplex and half-duplex transfer support - Configurable clock polarity and phase - Interrupt-driven Functionality has been verified using the `jedec,spi-nor` interface to access onboard flash memory. This ensures compatibility with common NOR flash devices used in boot and storage subsystem. Further improvements, including performance tuning and extended hardware feature support, will be submitted in follow-up patches.
2 parents a014c20 + db4371d commit 26cbb4d

6 files changed

Lines changed: 1235 additions & 0 deletions

File tree

Lines changed: 73 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,73 @@
1+
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
2+
%YAML 1.2
3+
---
4+
$id: http://devicetree.org/schemas/spi/axiado,ax3000-spi.yaml#
5+
$schema: http://devicetree.org/meta-schemas/core.yaml#
6+
7+
title: Axiado AX3000 SoC SPI controller
8+
9+
maintainers:
10+
- Vladimir Moravcevic <vmoravcevic@axiado.com>
11+
- Tzu-Hao Wei <twei@axiado.com>
12+
- Swark Yang <syang@axiado.com>
13+
- Prasad Bolisetty <pbolisetty@axiado.com>
14+
15+
allOf:
16+
- $ref: spi-controller.yaml#
17+
18+
properties:
19+
compatible:
20+
enum:
21+
- axiado,ax3000-spi
22+
23+
reg:
24+
maxItems: 1
25+
26+
interrupts:
27+
maxItems: 1
28+
29+
clock-names:
30+
items:
31+
- const: ref
32+
- const: pclk
33+
34+
clocks:
35+
maxItems: 2
36+
37+
num-cs:
38+
description: |
39+
Number of chip selects used.
40+
$ref: /schemas/types.yaml#/definitions/uint32
41+
minimum: 1
42+
maximum: 4
43+
default: 4
44+
45+
required:
46+
- compatible
47+
- reg
48+
- interrupts
49+
- clock-names
50+
- clocks
51+
52+
unevaluatedProperties: false
53+
54+
examples:
55+
- |
56+
#include <dt-bindings/interrupt-controller/irq.h>
57+
#include <dt-bindings/interrupt-controller/arm-gic.h>
58+
59+
soc {
60+
#address-cells = <2>;
61+
#size-cells = <2>;
62+
63+
spi@80510000 {
64+
compatible = "axiado,ax3000-spi";
65+
reg = <0x00 0x80510000 0x00 0x1000>;
66+
clock-names = "ref", "pclk";
67+
clocks = <&spi_clk>, <&apb_pclk>;
68+
interrupt-parent = <&gic500>;
69+
interrupts = <GIC_SPI 115 IRQ_TYPE_LEVEL_HIGH>;
70+
num-cs = <4>;
71+
};
72+
};
73+
...

MAINTAINERS

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4276,6 +4276,17 @@ W: https://ez.analog.com/linux-software-drivers
42764276
F: Documentation/devicetree/bindings/pwm/adi,axi-pwmgen.yaml
42774277
F: drivers/pwm/pwm-axi-pwmgen.c
42784278

4279+
AXIADO SPI DB DRIVER
4280+
M: Vladimir Moravcevic <vmoravcevic@axiado.com>
4281+
M: Tzu-Hao Wei <twei@axiado.com>
4282+
M: Swark Yang <syang@axiado.com>
4283+
M: Prasad Bolisetty <pbolisetty@axiado.com>
4284+
L: linux-spi@vger.kernel.org
4285+
S: Maintained
4286+
F: Documentation/devicetree/bindings/spi/axiado,ax3000-spi.yaml
4287+
F: drivers/spi/spi-axiado.c
4288+
F: drivers/spi/spi-axiado.h
4289+
42794290
AYANEO PLATFORM EC DRIVER
42804291
M: Antheas Kapenekakis <lkml@antheas.dev>
42814292
L: platform-driver-x86@vger.kernel.org

drivers/spi/Kconfig

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -213,6 +213,16 @@ config SPI_AXI_SPI_ENGINE
213213
It is part of the SPI Engine framework that is used in some Analog Devices
214214
reference designs for FPGAs.
215215

216+
config SPI_AXIADO
217+
tristate "Axiado DB-H SPI controller"
218+
depends on SPI_MEM
219+
help
220+
Enable support for the SPI controller present on Axiado AX3000 SoCs.
221+
222+
The implementation supports host-only mode and does not provide target
223+
functionality. It is intended for use cases where the SoC acts as the SPI
224+
host, communicating with peripheral devices such as flash memory.
225+
216226
config SPI_BCM2835
217227
tristate "BCM2835 SPI controller"
218228
depends on GPIOLIB

drivers/spi/Makefile

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ obj-$(CONFIG_SPI_AT91_USART) += spi-at91-usart.o
3333
obj-$(CONFIG_SPI_ATH79) += spi-ath79.o
3434
obj-$(CONFIG_SPI_AU1550) += spi-au1550.o
3535
obj-$(CONFIG_SPI_AXI_SPI_ENGINE) += spi-axi-spi-engine.o
36+
obj-$(CONFIG_SPI_AXIADO) += spi-axiado.o
3637
obj-$(CONFIG_SPI_BCM2835) += spi-bcm2835.o
3738
obj-$(CONFIG_SPI_BCM2835AUX) += spi-bcm2835aux.o
3839
obj-$(CONFIG_SPI_BCM63XX) += spi-bcm63xx.o

0 commit comments

Comments
 (0)