| /* |
| * Copyright (c) 2021 Seagate Technology LLC |
| * |
| * SPDX-License-Identifier: Apache-2.0 |
| */ |
| |
| /dts-v1/; |
| #include <st/f0/stm32f070Xb.dtsi> |
| #include <st/f0/stm32f070cbtx-pinctrl.dtsi> |
| #include <zephyr/dt-bindings/led/led.h> |
| #include <zephyr/dt-bindings/led/seagate_legend_b1414.h> |
| |
| / { |
| chosen { |
| zephyr,console = &usart1; |
| zephyr,shell-uart = &usart1; |
| zephyr,sram = &sram0; |
| zephyr,flash = &flash0; |
| }; |
| |
| aliases { |
| watchdog0 = &iwdg; |
| spi-flash0 = &spi_nor; |
| }; |
| |
| board_id: brd-id { |
| compatible = "gpio-keys"; |
| brd_id0: brd_id_0 { |
| label = "BRD_ID_0"; |
| gpios = <&gpioc 13 0>; |
| }; |
| brd_id1: brd_id_1 { |
| label = "BRD_ID_1"; |
| gpios = <&gpioc 14 0>; |
| }; |
| brd_id2: brd_id_2 { |
| label = "BRD_ID_2"; |
| gpios = <&gpioc 15 0>; |
| }; |
| }; |
| |
| }; |
| |
| &usart1 { |
| pinctrl-0 = <&usart1_tx_pa9 &usart1_rx_pa10>; |
| pinctrl-names = "default"; |
| current-speed = <115200>; |
| status = "okay"; |
| }; |
| |
| &i2c1 { |
| pinctrl-0 = <&i2c1_scl_pb6 &i2c1_sda_pb7>; |
| pinctrl-names = "default"; |
| clock-frequency = <I2C_BITRATE_STANDARD>; |
| status = "okay"; |
| }; |
| |
| &spi1 { |
| pinctrl-0 = <&spi1_sck_pa5 &spi1_miso_pa6 &spi1_mosi_pa7>; |
| pinctrl-names = "default"; |
| dmas = <&dma1 3 0x20440>, <&dma1 2 0x20480>; |
| dma-names = "tx", "rx"; |
| status = "okay"; |
| |
| led_strip_spi: b1414@0 { |
| compatible = "everlight,b1414", "worldsemi,ws2812-spi"; |
| |
| /* SPI */ |
| reg = <0>; /* ignored, but necessary for SPI bindings */ |
| spi-max-frequency = <SPI_FREQ>; |
| |
| /* B1414 */ |
| spi-one-frame = <ONE_FRAME>; |
| spi-zero-frame = <ZERO_FRAME>; |
| color-mapping = <LED_COLOR_ID_RED>, |
| <LED_COLOR_ID_GREEN>, |
| <LED_COLOR_ID_BLUE>; |
| reset-delay = <250>; |
| }; |
| }; |
| |
| &spi2 { |
| pinctrl-0 = <&spi2_sck_pb13 &spi2_miso_pb14 &spi2_mosi_pb15>; |
| pinctrl-names = "default"; |
| cs-gpios = <&gpiob 12 GPIO_ACTIVE_LOW>; |
| status = "okay"; |
| |
| spi_nor: spi_nor@0 { |
| status = "okay"; |
| compatible = "jedec,spi-nor"; |
| reg = <0>; |
| spi-max-frequency = <8000000>; |
| size = <1048576>; |
| /* |
| * Main flash source |
| * |
| * Vendor : Puya |
| * Model : P25Q21H |
| * Total size : 256 KB |
| * Erase size : whole chip, 64 and 32 KB blocks, 4 KB sectors, |
| * 256 B pages |
| * Write size : up to 256 B (page size) |
| * Lifetime : 100K erase/program cycles on each sector/block |
| */ |
| jedec-id = [85 40 12]; |
| /* |
| * Alternate flash source |
| * |
| * Vendor : Fudan |
| * Model : FM25F01B |
| * Total size : 128 KB |
| * Erase size : whole chip, 64 and 32 KB blocks, 4 KB sectors |
| * Write size : up to 256 B (page size) |
| * Lifetime : 100K erase/program cycles on each sector/block |
| * |
| * jedec-id = [a1 31 11]; |
| * |
| * Model only found in first Jordan (2"5) EVT revision |
| * |
| * Vendor : Fudan |
| * Model : FM25F005 |
| * Total size : 64 KB |
| * Erase size : whole chip, 64 and 32 KB blocks, 4 KB sectors |
| * |
| * jedec-id = [a1 31 10]; |
| */ |
| partitions { |
| compatible = "fixed-partitions"; |
| #address-cells = <1>; |
| #size-cells = <1>; |
| |
| product_info: partition@0 { |
| label = "product-info"; |
| reg = <0x00000000 DT_SIZE_K(4)>; |
| }; |
| led_das: partition@10000 { |
| label = "led-das"; |
| reg = <0x00001000 DT_SIZE_K(60)>; |
| }; |
| }; |
| }; |
| }; |
| |
| &spi_nor { |
| status = "okay"; |
| }; |
| |
| &dma1 { |
| status = "okay"; |
| }; |
| |
| &timers3 { |
| /* |
| * The maximum period needed on Legend devices for activity LED |
| * hardware blinking is 250ms (i.e. "error" fast blink at 4 Hz). |
| * |
| * We can use the following equation to compute the |
| * corresponding prescaler value: |
| * |
| * period_max = counter_size / cycles_per_second |
| * |
| * With: |
| * |
| * cycles_per_second = 48 MHz / (prescaler + 1) |
| * counter_size = 2^16 |
| * period_max = 0.25 |
| * |
| * Which gives: |
| * |
| * prescaler = 48 MHz * 0.25 / 2^16 + 1 = 182 |
| * |
| * So any prescaler value above 182 is good for a 4 Hz hardware |
| * blinking. In addition the PWM frequency must be as high as |
| * possible to fool eyes and cameras with steady brightness |
| * levels. |
| */ |
| st,prescaler = <200>; |
| |
| pwm3: pwm { |
| pinctrl-0 = <&tim3_ch3_pb0>; |
| pinctrl-names = "default"; |
| status = "disabled"; |
| }; |
| }; |
| |
| &gpiod { |
| status = "disabled"; |
| }; |
| |
| &gpiof { |
| status = "disabled"; |
| }; |
| |
| &iwdg { |
| status = "okay"; |
| }; |