zephyr/dts/arm/nordic/nrf51822.dtsi
Andrzej Głąbek f43bae38e8 dts: Use separate compatibles for Nordic SPI/SPIM/SPIS peripherals
This commit introduces separate "compatible" strings for DTS nodes
representing different types of Nordic SPI peripherals. Previously
"nordic,nrf-spi" was used for both SPI and SPIM. SPIS was already
handled separately.

Quite a few files need to be touched by this commit but the changes can
be divided into groups of related or very similar ones, distinguishable
by the initial part of the path to the modified file:

* dts/bindings/spi/
  new binding for "nordic,nrf-spim" is added and common fields for all
  3 types of Nordic SPI peripherals are extracted to a shared file

* dts/arm/nordic/
  "compatible" properties in spiX nodes are updated (when there is no
  choice as only one type of SPI peripheral is available) or replaced
  with a comment pointing out that the proper type of peripheral needs
  to be picked at some upper layer

* drivers/spi/
  spi_nrfx_spim driver is updated with the new form of macros generated
  from dts

* boards/
  all spiX nodes in dts files for boards equipped with an nRF chip are
  updated with the proper "compatible" property, according to the type
  of SPI peripheral that is currently selected for the board by the
  corresponding Kconfig choice option (SPI_x_NRF_SPI*)

Signed-off-by: Andrzej Głąbek <andrzej.glabek@nordicsemi.no>
2019-09-26 19:13:17 +02:00

237 lines
4.5 KiB
Text

/* SPDX-License-Identifier: Apache-2.0 */
#include <arm/armv6-m.dtsi>
#include <dt-bindings/i2c/i2c.h>
#include <dt-bindings/gpio/gpio.h>
#include "nrf5_common.dtsi"
/ {
cpus {
#address-cells = <1>;
#size-cells = <0>;
cpu@0 {
device_type = "cpu";
compatible = "arm,cortex-m0";
reg = <0>;
};
};
aliases {
i2c-0 = &i2c0;
i2c-1 = &i2c1;
spi-0 = &spi0;
spi-1 = &spi1;
uart-0 = &uart0;
adc-0 = &adc;
gpio-0 = &gpio0;
gpiote-0 = &gpiote;
wdt-0 = &wdt;
qdec-0 = &qdec;
rtc-0 = &rtc0;
rtc-1 = &rtc1;
timer-0 = &timer0;
timer-1 = &timer1;
timer-2 = &timer2;
};
soc {
flash-controller@4001e000 {
compatible = "nordic,nrf51-flash-controller";
reg = <0x4001e000 0x1000>;
#address-cells = <1>;
#size-cells = <1>;
label="NRF_FLASH_DRV_NAME";
flash0: flash@0 {
compatible = "soc-nv-flash";
label = "NRF_FLASH";
erase-block-size = <1024>;
write-block-size = <4>;
};
};
sram0: memory@20000000 {
compatible = "mmio-sram";
};
adc: adc@40007000 {
compatible = "nordic,nrf-adc";
reg = <0x40007000 0x1000>;
interrupts = <7 1>;
status = "disabled";
label = "ADC_0";
#io-channel-cells = <1>;
};
clock: clock@40000000 {
compatible = "nordic,nrf-clock";
reg = <0x40000000 0x1000>;
interrupts = <0 1>;
status = "okay";
label = "CLOCK";
};
uart0: uart@40002000 {
compatible = "nordic,nrf-uart";
reg = <0x40002000 0x1000>;
interrupts = <2 1>;
status = "disabled";
label = "UART_0";
};
gpiote: gpiote@40006000 {
compatible = "nordic,nrf-gpiote";
reg = <0x40006000 0x1000>;
interrupts = <6 1>;
status = "disabled";
label = "GPIOTE_0";
};
gpio0: gpio@50000000 {
compatible = "nordic,nrf-gpio";
gpio-controller;
reg = <0x50000000 0x1000>;
#gpio-cells = <2>;
label = "GPIO_0";
status = "disabled";
};
i2c0: i2c@40003000 {
compatible = "nordic,nrf-twi";
#address-cells = <1>;
#size-cells = <0>;
reg = <0x40003000 0x1000>;
clock-frequency = <I2C_BITRATE_STANDARD>;
interrupts = <3 1>;
status = "disabled";
label = "I2C_0";
};
i2c1: i2c@40004000 {
compatible = "nordic,nrf-twi";
#address-cells = <1>;
#size-cells = <0>;
reg = <0x40004000 0x1000>;
clock-frequency = <I2C_BITRATE_STANDARD>;
interrupts = <4 1>;
status = "disabled";
label = "I2C_1";
};
qdec: qdec@40012000 {
compatible = "nordic,nrf-qdec";
reg = <0x40012000 0x1000>;
interrupts = <18 1>;
status = "disabled";
label = "QDEC";
};
spi0: spi@40003000 {
compatible = "nordic,nrf-spi";
#address-cells = <1>;
#size-cells = <0>;
reg = <0x40003000 0x1000>;
interrupts = <3 1>;
status = "disabled";
label = "SPI_0";
};
spi1: spi@40004000 {
/*
* This spi node can be either SPI or SPIS,
* for the user to pick:
* compatible = "nordic,nrf-spi" or
* "nordic,nrf-spis".
*/
#address-cells = <1>;
#size-cells = <0>;
reg = <0x40004000 0x1000>;
interrupts = <4 1>;
status = "disabled";
label = "SPI_1";
};
rtc0: rtc@4000b000 {
compatible = "nordic,nrf-rtc";
reg = <0x4000b000 0x1000>;
interrupts = <11 1>;
status = "okay";
clock-frequency = <32768>;
prescaler = <1>;
label = "RTC_0";
};
rtc1: rtc@40011000 {
compatible = "nordic,nrf-rtc";
reg = <0x40011000 0x1000>;
interrupts = <17 1>;
status = "okay";
clock-frequency = <32768>;
prescaler = <1>;
label = "RTC_1";
};
timer0: timer@40008000 {
compatible = "nordic,nrf-timer";
status = "okay";
reg = <0x40008000 0x1000>;
interrupts = <8 1>;
prescaler = <0>;
label = "TIMER_0";
};
timer1: timer@40009000 {
compatible = "nordic,nrf-timer";
status = "okay";
reg = <0x40009000 0x1000>;
interrupts = <9 1>;
prescaler = <0>;
label = "TIMER_1";
};
timer2: timer@4000a000 {
compatible = "nordic,nrf-timer";
status = "okay";
reg = <0x4000a000 0x1000>;
interrupts = <10 1>;
prescaler = <0>;
label = "TIMER_2";
};
temp: temp@4000c000 {
compatible = "nordic,nrf-temp";
reg = <0x4000c000 0x1000>;
interrupts = <12 1>;
status = "okay";
label = "TEMP_0";
};
wdt: watchdog@40010000 {
compatible = "nordic,nrf-watchdog";
reg = <0x40010000 0x1000>;
interrupts = <16 1>;
status = "okay";
label = "WDT";
};
};
};
&nvic {
arm,num-irq-priority-bits = <2>;
};
/delete-node/ &systick;
&sw_pwm {
timer-instance = <1>;
channel-count = <3>;
clock-prescaler = <0>;
ppi-base = <7>;
gpiote-base = <0>;
status = "okay";
};