summaryrefslogtreecommitdiff
path: root/arch
diff options
context:
space:
mode:
authorLucien.Jheng <[email protected]>2026-04-25 16:06:49 +0800
committerJerome Forissier <[email protected]>2026-05-06 11:07:22 +0200
commit615c5367170272b5dda8b7ceae515f18dcfcafbf (patch)
tree76a0f2ccf1b5f0be4e55704ffa9875d55e00db21 /arch
parentc008ffdf61c01d0be99719adc8795ac00c55f90a (diff)
test: dm: add PHY common props unit tests and sandbox DT nodes
Add sandbox DM unit tests for the PHY common properties library and the corresponding device tree test nodes to arch/sandbox/dts/test.dts. Also enable CONFIG_PHY_COMMON_PROPS in configs/sandbox_defconfig so the tests are built and run in the sandbox environment. The test file covers rx/tx polarity lookups for all relevant cases: - missing property (defaults to PHY_POL_NORMAL) - single value without names array (applies to all modes) - count mismatch between values and names arrays (-EINVAL) - name found by exact match - name not found with no "default" fallback (-EINVAL) - name not found with a "default" entry (uses fallback value) - unsupported polarity value (-EOPNOTSUPP) Ported from Linux KUnit test: linux/drivers/phy/phy-common-props-test.c Signed-off-by: Lucien.Jheng <[email protected]>
Diffstat (limited to 'arch')
-rw-r--r--arch/sandbox/dts/test.dts60
1 files changed, 60 insertions, 0 deletions
diff --git a/arch/sandbox/dts/test.dts b/arch/sandbox/dts/test.dts
index ac92ebf1afd..0887de4333b 100644
--- a/arch/sandbox/dts/test.dts
+++ b/arch/sandbox/dts/test.dts
@@ -16,6 +16,7 @@
#include <dt-bindings/leds/common.h>
#include <dt-bindings/pinctrl/sandbox-pinmux.h>
#include <dt-bindings/mux/mux.h>
+#include <dt-bindings/phy/phy.h>
/ {
model = "sandbox";
@@ -502,6 +503,65 @@
phy-names = "phy1";
};
+ /* PHY common props test nodes */
+ phy_common_props_missing: phy-common-props-missing {
+ /* empty: no rx-polarity or tx-polarity properties */
+ };
+
+ phy_common_props_more_values: phy-common-props-more-values {
+ /* 3 values but only 2 names => count mismatch */
+ rx-polarity = <PHY_POL_NORMAL PHY_POL_INVERT PHY_POL_NORMAL>;
+ rx-polarity-names = "sgmii", "2500base-x";
+ tx-polarity = <PHY_POL_NORMAL PHY_POL_INVERT PHY_POL_NORMAL>;
+ tx-polarity-names = "sgmii", "2500base-x";
+ };
+
+ phy_common_props_single: phy-common-props-single {
+ /* 1 value, no names array => value applies to all modes */
+ rx-polarity = <PHY_POL_INVERT>;
+ tx-polarity = <PHY_POL_INVERT>;
+ };
+
+ phy_common_props_more_names: phy-common-props-more-names {
+ /* 2 values but 3 names => count mismatch */
+ rx-polarity = <PHY_POL_NORMAL PHY_POL_INVERT>;
+ rx-polarity-names = "sgmii", "2500base-x", "1000base-x";
+ tx-polarity = <PHY_POL_NORMAL PHY_POL_INVERT>;
+ tx-polarity-names = "sgmii", "2500base-x", "1000base-x";
+ };
+
+ phy_common_props_find_by_name: phy-common-props-find-by-name {
+ /* valid 3-element arrays, lookup by mode name */
+ rx-polarity = <PHY_POL_NORMAL PHY_POL_INVERT PHY_POL_AUTO>;
+ rx-polarity-names = "sgmii", "2500base-x", "usb-ss";
+ tx-polarity = <PHY_POL_NORMAL PHY_POL_INVERT PHY_POL_NORMAL>;
+ tx-polarity-names = "sgmii", "2500base-x", "1000base-x";
+ };
+
+ phy_common_props_no_default: phy-common-props-no-default {
+ /* name not in array, no "default" entry => -EINVAL */
+ rx-polarity = <PHY_POL_NORMAL PHY_POL_INVERT>;
+ rx-polarity-names = "2500base-x", "1000base-x";
+ tx-polarity = <PHY_POL_NORMAL PHY_POL_INVERT>;
+ tx-polarity-names = "2500base-x", "1000base-x";
+ };
+
+ phy_common_props_with_default: phy-common-props-with-default {
+ /* name not in array, but "default" entry exists */
+ rx-polarity = <PHY_POL_NORMAL PHY_POL_INVERT>;
+ rx-polarity-names = "2500base-x", "default";
+ tx-polarity = <PHY_POL_NORMAL PHY_POL_INVERT>;
+ tx-polarity-names = "2500base-x", "default";
+ };
+
+ phy_common_props_unsupported: phy-common-props-unsupported {
+ /* PHY_POL_AUTO is not supported for manual-only modes */
+ rx-polarity = <PHY_POL_AUTO>;
+ rx-polarity-names = "sgmii";
+ tx-polarity = <PHY_POL_AUTO>;
+ tx-polarity-names = "sgmii";
+ };
+
some-bus {
#address-cells = <1>;
#size-cells = <0>;