forked from zephyrproject-rtos/hal_atmel
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Add initial version of pinctrl script. It creates pinctrl definitions from a well defined pinconfig yaml file. This file is filled with all I/O multiplexing and considerations for all Atmel SAM SoCs. The auto generated files produced by this script should be used inside a <board>-pinctrl.dtsi file to define the pinctrl groups. Signed-off-by: Gerson Fernando Budke <[email protected]>
- Loading branch information
Showing
7 changed files
with
454 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1 +1,2 @@ | ||
zephyr_include_directories(include) | ||
add_subdirectory(asf) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,161 @@ | ||
/* | ||
* Copyright (c) 2022 Gerson Fernando Budke | ||
* SPDX-License-Identifier: Apache-2.0 | ||
*/ | ||
|
||
#ifndef DT_BINDINGS_PINCTRL_ATMEL_SAM_H_ | ||
#define DT_BINDINGS_PINCTRL_ATMEL_SAM_H_ | ||
|
||
/* | ||
* @name Atmel SAM gpio port list. | ||
* @{ | ||
*/ | ||
|
||
#define SAM_PINMUX_PORT_a 0U | ||
#define SAM_PINMUX_PORT_b 1U | ||
#define SAM_PINMUX_PORT_c 2U | ||
#define SAM_PINMUX_PORT_d 3U | ||
#define SAM_PINMUX_PORT_e 4U | ||
#define SAM_PINMUX_PORT_f 5U | ||
#define SAM_PINMUX_PORT_g 6U | ||
#define SAM_PINMUX_PORT_h 7U | ||
#define SAM_PINMUX_PORT_i 8U | ||
#define SAM_PINMUX_PORT_j 9U | ||
#define SAM_PINMUX_PORT_k 10U | ||
#define SAM_PINMUX_PORT_l 11U | ||
#define SAM_PINMUX_PORT_m 12U | ||
#define SAM_PINMUX_PORT_n 13U | ||
#define SAM_PINMUX_PORT_o 14U | ||
#define SAM_PINMUX_PORT_p 15U | ||
|
||
/** @} */ | ||
|
||
/** | ||
* @name Atmel SAM peripheral list. | ||
* @{ | ||
*/ | ||
|
||
/** GPIO */ | ||
#define SAM_PINMUX_PERIPH_gpio 0U | ||
/** Peripherals */ | ||
#define SAM_PINMUX_PERIPH_a 0U | ||
#define SAM_PINMUX_PERIPH_b 1U | ||
#define SAM_PINMUX_PERIPH_c 2U | ||
#define SAM_PINMUX_PERIPH_d 3U | ||
#define SAM_PINMUX_PERIPH_e 4U | ||
#define SAM_PINMUX_PERIPH_f 5U | ||
#define SAM_PINMUX_PERIPH_g 6U | ||
#define SAM_PINMUX_PERIPH_h 7U | ||
#define SAM_PINMUX_PERIPH_i 8U | ||
#define SAM_PINMUX_PERIPH_j 9U | ||
#define SAM_PINMUX_PERIPH_k 10U | ||
#define SAM_PINMUX_PERIPH_l 11U | ||
#define SAM_PINMUX_PERIPH_m 12U | ||
#define SAM_PINMUX_PERIPH_n 13U | ||
/** Extra */ | ||
#define SAM_PINMUX_PERIPH_x 0U | ||
/** System */ | ||
#define SAM_PINMUX_PERIPH_s 0U | ||
/** LPM */ | ||
#define SAM_PINMUX_PERIPH_lpm 0U | ||
|
||
/** @} */ | ||
|
||
/** | ||
* @name Atmel SAM pin function list. | ||
* @{ | ||
*/ | ||
|
||
/** Selects pin to be used as GPIO */ | ||
#define SAM_PINMUX_FUNC_gpio 0U | ||
/** Selects pin to be used as by some peripheral */ | ||
#define SAM_PINMUX_FUNC_periph 1U | ||
/** Selects pin to be used as extra function */ | ||
#define SAM_PINMUX_FUNC_extra 2U | ||
/** Selects pin to be used as system function */ | ||
#define SAM_PINMUX_FUNC_system 3U | ||
/** Selects and configure pin to be used in Low Power Mode */ | ||
#define SAM_PINMUX_FUNC_lpm 4U | ||
|
||
/** @} */ | ||
|
||
/** | ||
* @name Atmel SAM pinmux bit field mask and positions. | ||
* @{ | ||
*/ | ||
|
||
/** Pinmux bit field position. */ | ||
#define SAM_PINCTRL_PINMUX_POS (16U) | ||
/** Pinmux bit field mask. */ | ||
#define SAM_PINCTRL_PINMUX_MASK (0xFFFF) | ||
|
||
/** Port field mask. */ | ||
#define SAM_PINMUX_PORT_MSK (0xFU) | ||
/** Port field position. */ | ||
#define SAM_PINMUX_PORT_POS (0U) | ||
/** Pin field mask. */ | ||
#define SAM_PINMUX_PIN_MSK (0x1FU) | ||
/** Pin field position. */ | ||
#define SAM_PINMUX_PIN_POS (SAM_PINMUX_PORT_POS + 4U) | ||
/** Function field mask. */ | ||
#define SAM_PINMUX_FUNC_MSK (0x7U) | ||
/** Function field position. */ | ||
#define SAM_PINMUX_FUNC_POS (SAM_PINMUX_PIN_POS + 5U) | ||
/** Peripheral field mask. */ | ||
#define SAM_PINMUX_PERIPH_MSK (0xFU) | ||
/** Peripheral field position. */ | ||
#define SAM_PINMUX_PERIPH_POS (SAM_PINMUX_FUNC_POS + 3U) | ||
|
||
/** @} */ | ||
|
||
/** | ||
* @brief Atmel SAM pinmux bit field. | ||
* @anchor SAM_PINMUX | ||
* | ||
* Fields: | ||
* | ||
* - 0..3: port | ||
* - 4..8: pin_num | ||
* - 9..11: func | ||
* - 12..15: pin_mux | ||
* | ||
* @param port Port ('A'..'P') | ||
* @param pin Pin (0..31) | ||
* @param func Function (GPIO, Peripheral, System, Extra, LPM - 0..4) | ||
* @param pin_mux Peripheral based on the Function selected (0..15) | ||
*/ | ||
#define SAM_PINMUX(port, pin_num, pin_mux, func) \ | ||
((((SAM_PINMUX_PORT_##port) & SAM_PINMUX_PORT_MSK) \ | ||
<< SAM_PINMUX_PORT_POS) | \ | ||
(((pin_num) & SAM_PINMUX_PIN_MSK) \ | ||
<< SAM_PINMUX_PIN_POS) | \ | ||
(((SAM_PINMUX_FUNC_##func) & SAM_PINMUX_FUNC_MSK) \ | ||
<< SAM_PINMUX_FUNC_POS) | \ | ||
(((SAM_PINMUX_PERIPH_##pin_mux) & SAM_PINMUX_PERIPH_MSK) \ | ||
<< SAM_PINMUX_PERIPH_POS)) | ||
|
||
/** | ||
* Obtain Pinmux value from pinctrl_soc_pin_t configuration. | ||
* | ||
* @param pincfg pinctrl_soc_pin_t bit field value. | ||
*/ | ||
#define SAM_PINMUX_GET(pincfg) \ | ||
(((pincfg) >> SAM_PINCTRL_PINMUX_POS) & SAM_PINCTRL_PINMUX_MASK) | ||
|
||
#define SAM_PINMUX_PORT_GET(pincfg) \ | ||
((SAM_PINMUX_GET(pincfg) >> SAM_PINMUX_PORT_POS) \ | ||
& SAM_PINMUX_PORT_MSK) | ||
|
||
#define SAM_PINMUX_PIN_GET(pincfg) \ | ||
((SAM_PINMUX_GET(pincfg) >> SAM_PINMUX_PIN_POS) \ | ||
& SAM_PINMUX_PIN_MSK) | ||
|
||
#define SAM_PINMUX_FUNC_GET(pincfg) \ | ||
((SAM_PINMUX_GET(pincfg) >> SAM_PINMUX_FUNC_POS) \ | ||
& SAM_PINMUX_FUNC_MSK) | ||
|
||
#define SAM_PINMUX_PERIPH_GET(pincfg) \ | ||
((SAM_PINMUX_GET(pincfg) >> SAM_PINMUX_PERIPH_POS) \ | ||
& SAM_PINMUX_PERIPH_MSK) | ||
|
||
#endif /* DT_BINDINGS_PINCTRL_ATMEL_SAM_H_ */ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,22 @@ | ||
# hal_atmel scripts | ||
|
||
This folder contains `hal_atmel` scripts. | ||
|
||
# Dependencies | ||
|
||
Scripts require Python 3.6+ and the Python dependencies listed in | ||
`requirements.txt`. They can be installed by running: | ||
|
||
``` | ||
pip install -r scripts/requirements.txt | ||
``` | ||
|
||
# Lint | ||
|
||
Scripts should be formatted using `black` and linted using `flake8`. | ||
|
||
Such development tools can be installed using: | ||
|
||
``` | ||
pip install -r scripts/requirements-dev.txt | ||
``` |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,2 @@ | ||
flake8 | ||
black |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,2 @@ | ||
pyyaml | ||
natsort |
Oops, something went wrong.