avionic design with actual uboot and tooling

submodule of avionic design uboot bootloader and with included tools to
get you started , read readme.md and readme-tk1-loader.md
This commit is contained in:
2026-03-03 21:46:32 +02:00
parent fe3ba02c96
commit 68d74d3181
11967 changed files with 2221897 additions and 0 deletions

View File

@@ -0,0 +1,38 @@
Fixed Voltage regulator
Binding:
The binding is done by the property "compatible" - this is different, than for
binding by the node prefix (doc/device-tree-bindings/regulator/regulator.txt).
Required properties:
- compatible: "regulator-fixed"
- regulator-name: this is required by the regulator uclass
Optional properties:
- gpio: GPIO to use for enable control
- regulator constraints (binding info: regulator.txt)
Other kernel-style properties, are currently not used.
Note:
For the regulator constraints, driver expects that:
- regulator-min-microvolt is equal to regulator-max-microvolt
- regulator-min-microamp is equal to regulator-max-microamp
Example:
fixed_regulator@0 {
/* Mandatory */
compatible = "regulator-fixed";
regulator-name = "LED_3.3V";
/* Optional: */
gpio = <&gpc1 0 GPIO_ACTIVE_LOW>;
/* Optional for regulator uclass */
regulator-min-microvolt = <3300000>;
regulator-max-microvolt = <3300000>;
regulator-min-microamp = <15000>;
regulator-max-microamp = <15000>;
regulator-always-on;
regulator-boot-on;
};

View File

@@ -0,0 +1,70 @@
MAXIM, MAX77686 regulators
This device uses two drivers:
- drivers/power/pmic/max77686.c (as parent I/O device)
- drivers/power/regulator/max77686.c (for child regulators)
This file describes the binding info for the REGULATOR driver.
First, please read the binding info for the pmic:
- doc/device-tree-bindings/pmic/max77686.txt
Required subnode:
- voltage-regulators: required for the PMIC driver
Required properties:
- regulator-name: used for regulator uclass platform data '.name'
Optional:
- regulator-min-microvolt: minimum allowed Voltage to set
- regulator-max-microvolt: minimum allowed Voltage to set
- regulator-always-on: regulator should be never disabled
- regulator-boot-on: regulator should be enabled by the bootloader
Example:
(subnode of max77686 pmic node)
voltage-regulators {
ldo1 {
regulator-name = "VDD_ALIVE_1.0V";
regulator-min-microvolt = <1000000>;
regulator-max-microvolt = <1000000>;
regulator-always-on;
regulator-boot-on;
};
ldo2 {
regulator-name = "VDDQ_VM1M2_1.2V";
regulator-min-microvolt = <1200000>;
regulator-max-microvolt = <1200000>;
regulator-always-on;
regulator-boot-on;
};
.
.
.
ldo26 {
regulator-name = "nc";
regulator-min-microvolt = <3000000>;
regulator-max-microvolt = <3000000>;
regulator-always-on;
regulator-boot-on;
};
buck1 {
regulator-compatible = "BUCK1";
regulator-name = "VDD_MIF_1.0V";
regulator-min-microvolt = <8500000>;
regulator-max-microvolt = <1100000>;
regulator-always-on;
regulator-boot-on;
};
.
.
.
buck9 {
regulator-compatible = "BUCK9";
regulator-name = "nc";
regulator-min-microvolt = <1200000>;
regulator-max-microvolt = <1200000>;
};
};

View File

@@ -0,0 +1,51 @@
Voltage/Current regulator
Binding:
The regulator devices don't use the "compatible" property. The binding is done
by the prefix of regulator node's name. Usually the pmic I/O driver will provide
the array of 'struct pmic_child_info' with the prefixes and compatible drivers.
The bind is done by calling function: pmic_bind_childs().
Example drivers:
pmic: drivers/power/pmic/max77686.c
regulator: drivers/power/regulator/max77686.c
For the node name e.g.: "prefix[:alpha:]num { ... }":
- the driver prefix should be: "prefix" or "PREFIX" - case insensitive
- the node name's "num" is set as "dev->driver_data" on bind
Example the prefix "ldo" will pass for: "ldo1", "ldo@1", "LDO1", "LDOREG@1"...
Optional properties:
- regulator-name: a string, required by the regulator uclass
- regulator-min-microvolt: a minimum allowed Voltage value
- regulator-max-microvolt: a maximum allowed Voltage value
- regulator-min-microamp: a minimum allowed Current value
- regulator-max-microamp: a maximum allowed Current value
- regulator-always-on: regulator should never be disabled
- regulator-boot-on: enabled by bootloader/firmware
Note
The "regulator-name" constraint is used for setting the device's uclass
platform data '.name' field. And the regulator device name is set from
it's node name. If "regulator-name" is not provided in dts, node name
is chosen for setting the device's uclass platform data '.name' field.
Other kernel-style properties, are currently not used.
Note:
For the regulator autoset from constraints, the framework expects that:
- regulator-min-microvolt is equal to regulator-max-microvolt
- regulator-min-microamp is equal to regulator-max-microamp
- regulator-always-on or regulator-boot-on is set
Example:
ldo0 {
/* Optional */
regulator-name = "VDDQ_EMMC_1.8V";
regulator-min-microvolt = <1800000>;
regulator-max-microvolt = <1800000>;
regulator-min-microamp = <100000>;
regulator-max-microamp = <100000>;
regulator-always-on;
regulator-boot-on;
};

View File

@@ -0,0 +1,45 @@
Sandbox, PMIC regulators
This device uses two drivers:
- drivers/power/pmic/sandbox.c (as parent I/O device)
- drivers/power/regulator/sandbox.c (for child regulators)
This file describes the binding info for the REGULATOR driver.
First, please read the binding info for the PMIC:
- doc/device-tree-bindings/pmic/sandbox.txt
Required subnodes:
- ldoN { };
- buckN { };
The sandbox PMIC can support: ldo1, ldo2, buck1, buck2.
For each PMIC's regulator subnode, there is one required property:
- regulator-name: used for regulator uclass platform data '.name'
Optional:
- regulator-min-microvolt: minimum allowed Voltage to set
- regulator-max-microvolt: minimum allowed Voltage to set
- regulator-min-microamps: minimum allowed Current limit to set (LDO1/BUCK1)
- regulator-max-microamps: minimum allowed Current limit to set (LDO1/BUCK1)
- regulator-always-on: regulator should be never disabled
- regulator-boot-on: regulator should be enabled by the bootloader
Example PMIC's regulator subnodes:
ldo1 {
regulator-name = "VDD_1.0V";
regulator-min-microvolt = <1000000>;
regulator-max-microvolt = <1200000>;
regulator-min-microamps = <100000>;
regulator-max-microamps = <400000>;
regulator-always-on;
};
buck2 {
regulator-name = "VDD_1.8V";
regulator-min-microvolt = <1800000>;
regulator-max-microvolt = <1800000>;
regulator-boot-on;
};

View File

@@ -0,0 +1,122 @@
TPS65090 regulators
Required properties:
- compatible: "ti,tps65090"
- reg: I2C slave address
- interrupts: the interrupt outputs of the controller
- regulators: A node that houses a sub-node for each regulator within the
device. Each sub-node is identified using the node's name, with valid
values listed below. The content of each sub-node is defined by the
standard binding for regulators; see regulator.txt.
dcdc[1-3], fet[1-7] and ldo[1-2] respectively.
- vsys[1-3]-supply: The input supply for DCDC[1-3] respectively.
- infet[1-7]-supply: The input supply for FET[1-7] respectively.
- vsys-l[1-2]-supply: The input supply for LDO[1-2] respectively.
Optional properties:
- ti,enable-ext-control: This is applicable for DCDC1, DCDC2 and DCDC3.
If DCDCs are externally controlled then this property should be there.
- "dcdc-ext-control-gpios: This is applicable for DCDC1, DCDC2 and DCDC3.
If DCDCs are externally controlled and if it is from GPIO then GPIO
number should be provided. If it is externally controlled and no GPIO
entry then driver will just configure this rails as external control
and will not provide any enable/disable APIs.
Each regulator is defined using the standard binding for regulators.
Example:
tps65090@48 {
compatible = "ti,tps65090";
reg = <0x48>;
interrupts = <0 88 0x4>;
vsys1-supply = <&some_reg>;
vsys2-supply = <&some_reg>;
vsys3-supply = <&some_reg>;
infet1-supply = <&some_reg>;
infet2-supply = <&some_reg>;
infet3-supply = <&some_reg>;
infet4-supply = <&some_reg>;
infet5-supply = <&some_reg>;
infet6-supply = <&some_reg>;
infet7-supply = <&some_reg>;
vsys_l1-supply = <&some_reg>;
vsys_l2-supply = <&some_reg>;
regulators {
dcdc1 {
regulator-name = "dcdc1";
regulator-boot-on;
regulator-always-on;
ti,enable-ext-control;
dcdc-ext-control-gpios = <&gpio 10 0>;
};
dcdc2 {
regulator-name = "dcdc2";
regulator-boot-on;
regulator-always-on;
};
dcdc3 {
regulator-name = "dcdc3";
regulator-boot-on;
regulator-always-on;
};
fet1 {
regulator-name = "fet1";
regulator-boot-on;
regulator-always-on;
};
fet2 {
regulator-name = "fet2";
regulator-boot-on;
regulator-always-on;
};
fet3 {
regulator-name = "fet3";
regulator-boot-on;
regulator-always-on;
};
fet4 {
regulator-name = "fet4";
regulator-boot-on;
regulator-always-on;
};
fet5 {
regulator-name = "fet5";
regulator-boot-on;
regulator-always-on;
};
fet6 {
regulator-name = "fet6";
regulator-boot-on;
regulator-always-on;
};
fet7 {
regulator-name = "fet7";
regulator-boot-on;
regulator-always-on;
};
ldo1 {
regulator-name = "ldo1";
regulator-boot-on;
regulator-always-on;
};
ldo2 {
regulator-name = "ldo2";
regulator-boot-on;
regulator-always-on;
};
};
};