Linux Audio

Check our new training course

Embedded Linux Audio

Check our new training course
with Creative Commons CC-BY-SA
lecture materials

Bootlin logo

Elixir Cross Referencer

Loading...
/*
 * Copyright 2021 The Chromium OS Authors
 *
 * SPDX-License-Identifier: Apache-2.0
 */

/dts-v1/;
#include <st/g0/stm32g081Xb.dtsi>
#include <st/g0/stm32g081rbtx-pinctrl.dtsi>

/ {
	model = "STM32G081B EVAL board";
	compatible = "st,stm32g081-eval";

	chosen {
		zephyr,console = &usart3;
		zephyr,shell-uart = &usart3;
		zephyr,sram = &sram0;
		zephyr,flash = &flash0;
	};

	leds {
		compatible = "gpio-leds";
		led_1: led1 {
			gpios = <&gpiod 5 GPIO_ACTIVE_HIGH>;
			label = "LED1";
		};
		led_2: led2 {
			gpios = <&gpiod 6 GPIO_ACTIVE_HIGH>;
			label = "LED2";
		};
		led_3: led3 {
			gpios = <&gpiod 8 GPIO_ACTIVE_HIGH>;
			label = "LED3";
		};
		led_4: led4 {
			gpios = <&gpiod 9 GPIO_ACTIVE_HIGH>;
			label = "LED4";
		};
	};

	gpio_keys {
		compatible = "gpio-keys";
		joy_sel: button0 {
			label = "JOY_SEL";
			gpios = <&gpioa 0 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)>;
		};
		joy_left: button1 {
			label = "JOY_LEFT";
			gpios = <&gpioc 8 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)>;
		};
		joy_down: button2 {
			label = "JOY_DOWN";
			gpios = <&gpioc 3 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)>;
		};
		joy_right: button3 {
			label = "JOY_RIGHT";
			gpios = <&gpioc 7 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)>;
		};
		joy_up: button4 {
			label = "JOY_UP";
			gpios = <&gpioc 2 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)>;
		};
	};

	aliases {
		led0 = &led_1;
		led1 = &led_2;
		led2 = &led_3;
		led3 = &led_4;
		sw0 = &joy_sel;
		sw1 = &joy_left;
		sw2 = &joy_down;
		sw3 = &joy_right;
		sw4 = &joy_up;
		watchdog0 = &iwdg;
	};
};

&clk_hsi {
	status = "okay";
};

&pll {
	div-m = <1>;
	mul-n = <8>;
	div-p = <2>;
	div-q = <2>;
	div-r = <2>;
	clocks = <&clk_hsi>;
	status = "okay";
};

&rcc {
	clocks = <&pll>;
	clock-frequency = <DT_FREQ_M(64)>;
	ahb-prescaler = <1>;
	apb1-prescaler = <1>;
};

&usart3 {
	pinctrl-0 = <&usart3_tx_pc10 &usart3_rx_pc11>;
	pinctrl-names = "default";
	current-speed = <115200>;
	status = "okay";
};

&tim15_ch1_pc1 {
	slew-rate = "very-high-speed";
	bias-pull-up;
	drive-open-drain;
};

&timers15 {
	status = "okay";
	pwm15: pwm {
		status = "okay";
		pinctrl-0 = <&tim15_ch1_pc1>;
		pinctrl-names = "default";
	};
};

&adc1 {
	pinctrl-0 = <&adc1_in3_pa3 &adc1_in9_pb1>;
	pinctrl-names = "default";
	status = "okay";

	#address-cells = <1>;
	#size-cells = <0>;

	channel@3 {
		reg = <3>;
		zephyr,gain = "ADC_GAIN_1";
		zephyr,reference = "ADC_REF_INTERNAL";
		zephyr,acquisition-time = <ADC_ACQ_TIME_DEFAULT>;
		zephyr,resolution = <12>;
		zephyr,vref-mv = <3300>;
	};

	channel@9 {
		reg = <9>;
		zephyr,gain = "ADC_GAIN_1";
		zephyr,reference = "ADC_REF_INTERNAL";
		zephyr,acquisition-time = <ADC_ACQ_TIME_DEFAULT>;
		zephyr,resolution = <12>;
		zephyr,vref-mv = <3300>;
	};
};

&ucpd1 {
	status = "okay";

	/*
	 * UCPD is fed directly from HSI which is @ 16MHz. The ucpd_clk goes to
	 * a prescaler who's output feeds the 'half-bit' divider which is used
	 * to generate clock for delay counters and BMC Rx/Tx blocks. The rx is
	 * designed to work in freq ranges of 6 <--> 18 MHz, however recommended
	 * range is 9 <--> 18 MHz.
	 *
	 *          +-------+ @ 16 MHz +-------+   @ ~600 kHz   +-----------+
	 * HSI ---->| /psc  |--------->| /hbit |--------------->| trans_cnt |
	 *          +-------+          +-------+   |            +-----------+
	 *                                         |            +-----------+
	 *                                         +----------->| ifrgap_cnt|
	 *                                                      +-----------+
	 * Requirements:
	 *   1. hbit_clk ~= 600 kHz: 16 MHz / 600 kHz = 26.67
	 *   2. tTransitionWindow - 12 to 20 uSec
	 *   3. tInterframGap - uSec
	 *
	 * hbit_clk = HSI_clk / 27 = 592.6 kHz = 1.687 uSec period
	 * tTransitionWindow = 1.687 uS * 8 = 13.5 uS
	 * tInterFrameGap = 1.687 uS * 17 = 28.68 uS
	 */
	psc-ucpdclk = <1>;
	hbitclkdiv = <27>;
	pinctrl-0 = <&ucpd1_cc1_pa8 &ucpd1_cc2_pb15>;
	pinctrl-names = "default";
};

&ucpd2 {
	status = "okay";

	/*
	 * UCPD is fed directly from HSI which is @ 16MHz. The ucpd_clk goes to
	 * a prescaler who's output feeds the 'half-bit' divider which is used
	 * to generate clock for delay counters and BMC Rx/Tx blocks. The rx is
	 * designed to work in freq ranges of 6 <--> 18 MHz, however recommended
	 * range is 9 <--> 18 MHz.
	 *
	 *          +-------+ @ 16 MHz +-------+   @ ~600 kHz   +-----------+
	 * HSI ---->| /psc  |--------->| /hbit |--------------->| trans_cnt |
	 *          +-------+          +-------+   |            +-----------+
	 *                                         |            +-----------+
	 *                                         +----------->| ifrgap_cnt|
	 *                                                      +-----------+
	 * Requirements:
	 *   1. hbit_clk ~= 600 kHz: 16 MHz / 600 kHz = 26.67
	 *   2. tTransitionWindow - 12 to 20 uSec
	 *   3. tInterframGap - uSec
	 *
	 * hbit_clk = HSI_clk / 27 = 592.6 kHz = 1.687 uSec period
	 * tTransitionWindow = 1.687 uS * 8 = 13.5 uS
	 * tInterFrameGap = 1.687 uS * 17 = 28.68 uS
	 */
	psc-ucpdclk = <1>;
	hbitclkdiv = <27>;
	pinctrl-0 = <&ucpd2_cc1_pd0 &ucpd2_cc2_pd2>;
	pinctrl-names = "default";
};

&iwdg {
	status = "okay";
};