Re: [PATCH v2 1/2] sandbox, test: add test for GPIO_HOG function

2020-02-02 Thread Simon Glass
On Sat, 1 Feb 2020 at 01:02, Heiko Schocher  wrote:
>
> currently gpio hog function is not tested with "ut dm gpio"
> so add some basic tests for gpio hog functionality.
>
> For this enable GPIO_HOG in sandbox_defconfig, add
> in DTS some gpio hog entries, and add testcase in
> "ut dm gpio" command.
>
> Signed-off-by: Heiko Schocher 
>
> ---
>
> Changes in v2:
> - add basic gpio hog test functions
>
>  arch/sandbox/dts/test.dts  | 24 
>  configs/sandbox64_defconfig|  1 +
>  configs/sandbox_defconfig  |  1 +
>  configs/sandbox_flattree_defconfig |  1 +
>  configs/sandbox_spl_defconfig  |  1 +
>  test/dm/gpio.c | 23 +++
>  6 files changed, 51 insertions(+)

Reviewed-by: Simon Glass 


[PATCH v2 1/2] sandbox, test: add test for GPIO_HOG function

2020-02-01 Thread Heiko Schocher
currently gpio hog function is not tested with "ut dm gpio"
so add some basic tests for gpio hog functionality.

For this enable GPIO_HOG in sandbox_defconfig, add
in DTS some gpio hog entries, and add testcase in
"ut dm gpio" command.

Signed-off-by: Heiko Schocher 

---

Changes in v2:
- add basic gpio hog test functions

 arch/sandbox/dts/test.dts  | 24 
 configs/sandbox64_defconfig|  1 +
 configs/sandbox_defconfig  |  1 +
 configs/sandbox_flattree_defconfig |  1 +
 configs/sandbox_spl_defconfig  |  1 +
 test/dm/gpio.c | 23 +++
 6 files changed, 51 insertions(+)

diff --git a/arch/sandbox/dts/test.dts b/arch/sandbox/dts/test.dts
index e529c54d8d..cff05dcf7c 100644
--- a/arch/sandbox/dts/test.dts
+++ b/arch/sandbox/dts/test.dts
@@ -1,5 +1,7 @@
 /dts-v1/;
 
+#include 
+
 / {
model = "sandbox";
compatible = "sandbox";
@@ -284,6 +286,28 @@
#gpio-cells = <1>;
gpio-bank-name = "a";
sandbox,gpio-count = <20>;
+
+   hog_input_active_low {
+   gpio-hog;
+   input;
+   gpios = <0 GPIO_ACTIVE_LOW>;
+   };
+   hog_input_active_high {
+   gpio-hog;
+   input;
+   gpios = <1 GPIO_ACTIVE_HIGH>;
+   };
+   hog_output_low {
+   gpio-hog;
+   output-low;
+   gpios = <2 GPIO_ACTIVE_HIGH>;
+   };
+   hog_output_high {
+   gpio-hog;
+   output-high;
+   gpios = <3 GPIO_ACTIVE_HIGH>;
+   };
+
};
 
gpio_b: extra-gpios {
diff --git a/configs/sandbox64_defconfig b/configs/sandbox64_defconfig
index 7b80033c3b..f614b23666 100644
--- a/configs/sandbox64_defconfig
+++ b/configs/sandbox64_defconfig
@@ -92,6 +92,7 @@ CONFIG_DM_DEMO_SIMPLE=y
 CONFIG_DM_DEMO_SHAPE=y
 CONFIG_BOARD=y
 CONFIG_BOARD_SANDBOX=y
+CONFIG_GPIO_HOG=y
 CONFIG_PM8916_GPIO=y
 CONFIG_SANDBOX_GPIO=y
 CONFIG_I2C_CROS_EC_TUNNEL=y
diff --git a/configs/sandbox_defconfig b/configs/sandbox_defconfig
index fc018bdd2c..afce8050b4 100644
--- a/configs/sandbox_defconfig
+++ b/configs/sandbox_defconfig
@@ -108,6 +108,7 @@ CONFIG_BOARD_SANDBOX=y
 CONFIG_DMA=y
 CONFIG_DMA_CHANNELS=y
 CONFIG_SANDBOX_DMA=y
+CONFIG_GPIO_HOG=y
 CONFIG_PM8916_GPIO=y
 CONFIG_SANDBOX_GPIO=y
 CONFIG_DM_HWSPINLOCK=y
diff --git a/configs/sandbox_flattree_defconfig 
b/configs/sandbox_flattree_defconfig
index 2c90639ecb..0518b56fd9 100644
--- a/configs/sandbox_flattree_defconfig
+++ b/configs/sandbox_flattree_defconfig
@@ -78,6 +78,7 @@ CONFIG_DM_DEMO_SIMPLE=y
 CONFIG_DM_DEMO_SHAPE=y
 CONFIG_BOARD=y
 CONFIG_BOARD_SANDBOX=y
+CONFIG_GPIO_HOG=y
 CONFIG_PM8916_GPIO=y
 CONFIG_SANDBOX_GPIO=y
 CONFIG_I2C_CROS_EC_TUNNEL=y
diff --git a/configs/sandbox_spl_defconfig b/configs/sandbox_spl_defconfig
index b78115af61..e70f2b4aa8 100644
--- a/configs/sandbox_spl_defconfig
+++ b/configs/sandbox_spl_defconfig
@@ -98,6 +98,7 @@ CONFIG_DM_DEMO_SHAPE=y
 CONFIG_BOARD=y
 CONFIG_BOARD_SANDBOX=y
 CONFIG_SPL_FIRMWARE=y
+CONFIG_GPIO_HOG=y
 CONFIG_PM8916_GPIO=y
 CONFIG_SANDBOX_GPIO=y
 CONFIG_I2C_CROS_EC_TUNNEL=y
diff --git a/test/dm/gpio.c b/test/dm/gpio.c
index bb4b20cea9..9003ea82c7 100644
--- a/test/dm/gpio.c
+++ b/test/dm/gpio.c
@@ -18,6 +18,7 @@ static int dm_test_gpio(struct unit_test_state *uts)
unsigned int offset, gpio;
struct dm_gpio_ops *ops;
struct udevice *dev;
+   struct gpio_desc *desc;
const char *name;
int offset_count;
char buf[80];
@@ -102,6 +103,28 @@ static int dm_test_gpio(struct unit_test_state *uts)
ut_asserteq_str("a", name);
ut_asserteq(20, offset_count);
 
+   /* add gpio hog tests */
+   ut_assertok(gpio_hog_lookup_name("hog_input_active_low", &desc));
+   ut_asserteq(GPIOD_IS_IN | GPIOD_ACTIVE_LOW, desc->flags);
+   ut_asserteq(0, desc->offset);
+   ut_asserteq(1, dm_gpio_get_value(desc));
+   ut_assertok(gpio_hog_lookup_name("hog_input_active_high", &desc));
+   ut_asserteq(GPIOD_IS_IN, desc->flags);
+   ut_asserteq(1, desc->offset);
+   ut_asserteq(0, dm_gpio_get_value(desc));
+   ut_assertok(gpio_hog_lookup_name("hog_output_low", &desc));
+   ut_asserteq(GPIOD_IS_OUT, desc->flags);
+   ut_asserteq(2, desc->offset);
+   ut_asserteq(0, dm_gpio_get_value(desc));
+   ut_assertok(dm_gpio_set_value(desc, 1));
+   ut_asserteq(1, dm_gpio_get_value(desc));
+   ut_assertok(gpio_hog_lookup_name("hog_output_high", &desc));
+   ut_asserteq(GPIOD_IS_OUT, desc->flags);
+   ut_asserteq(3, desc->offset);
+   ut_asserteq(1, dm_gpio_get_value(desc));
+   ut_assertok(dm_gpio_set_value(desc, 0));
+   ut_asserteq(0, dm_gpio_get_value(desc));
+
return 0;
 }
 DM_TEST(dm_