sandbox, test: add test for GPIO_HOG function
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 <hs@denx.de> Reviewed-by: Simon Glass <sjg@chromium.org>
This commit is contained in:
parent
cd2faeba1a
commit
9ba84329dc
@ -343,6 +343,26 @@
|
|||||||
#gpio-cells = <1>;
|
#gpio-cells = <1>;
|
||||||
gpio-bank-name = "a";
|
gpio-bank-name = "a";
|
||||||
sandbox,gpio-count = <20>;
|
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 {
|
gpio_b: extra-gpios {
|
||||||
|
@ -97,6 +97,7 @@ CONFIG_DM_DEMO_SIMPLE=y
|
|||||||
CONFIG_DM_DEMO_SHAPE=y
|
CONFIG_DM_DEMO_SHAPE=y
|
||||||
CONFIG_BOARD=y
|
CONFIG_BOARD=y
|
||||||
CONFIG_BOARD_SANDBOX=y
|
CONFIG_BOARD_SANDBOX=y
|
||||||
|
CONFIG_GPIO_HOG=y
|
||||||
CONFIG_PM8916_GPIO=y
|
CONFIG_PM8916_GPIO=y
|
||||||
CONFIG_SANDBOX_GPIO=y
|
CONFIG_SANDBOX_GPIO=y
|
||||||
CONFIG_I2C_CROS_EC_TUNNEL=y
|
CONFIG_I2C_CROS_EC_TUNNEL=y
|
||||||
|
@ -114,6 +114,7 @@ CONFIG_BOARD_SANDBOX=y
|
|||||||
CONFIG_DMA=y
|
CONFIG_DMA=y
|
||||||
CONFIG_DMA_CHANNELS=y
|
CONFIG_DMA_CHANNELS=y
|
||||||
CONFIG_SANDBOX_DMA=y
|
CONFIG_SANDBOX_DMA=y
|
||||||
|
CONFIG_GPIO_HOG=y
|
||||||
CONFIG_PM8916_GPIO=y
|
CONFIG_PM8916_GPIO=y
|
||||||
CONFIG_SANDBOX_GPIO=y
|
CONFIG_SANDBOX_GPIO=y
|
||||||
CONFIG_DM_HWSPINLOCK=y
|
CONFIG_DM_HWSPINLOCK=y
|
||||||
|
@ -82,6 +82,7 @@ CONFIG_DM_DEMO_SIMPLE=y
|
|||||||
CONFIG_DM_DEMO_SHAPE=y
|
CONFIG_DM_DEMO_SHAPE=y
|
||||||
CONFIG_BOARD=y
|
CONFIG_BOARD=y
|
||||||
CONFIG_BOARD_SANDBOX=y
|
CONFIG_BOARD_SANDBOX=y
|
||||||
|
CONFIG_GPIO_HOG=y
|
||||||
CONFIG_PM8916_GPIO=y
|
CONFIG_PM8916_GPIO=y
|
||||||
CONFIG_SANDBOX_GPIO=y
|
CONFIG_SANDBOX_GPIO=y
|
||||||
CONFIG_I2C_CROS_EC_TUNNEL=y
|
CONFIG_I2C_CROS_EC_TUNNEL=y
|
||||||
|
@ -101,6 +101,7 @@ CONFIG_DM_DEMO_SHAPE=y
|
|||||||
CONFIG_BOARD=y
|
CONFIG_BOARD=y
|
||||||
CONFIG_BOARD_SANDBOX=y
|
CONFIG_BOARD_SANDBOX=y
|
||||||
CONFIG_SPL_FIRMWARE=y
|
CONFIG_SPL_FIRMWARE=y
|
||||||
|
CONFIG_GPIO_HOG=y
|
||||||
CONFIG_PM8916_GPIO=y
|
CONFIG_PM8916_GPIO=y
|
||||||
CONFIG_SANDBOX_GPIO=y
|
CONFIG_SANDBOX_GPIO=y
|
||||||
CONFIG_I2C_CROS_EC_TUNNEL=y
|
CONFIG_I2C_CROS_EC_TUNNEL=y
|
||||||
|
@ -20,6 +20,7 @@ static int dm_test_gpio(struct unit_test_state *uts)
|
|||||||
unsigned int offset, gpio;
|
unsigned int offset, gpio;
|
||||||
struct dm_gpio_ops *ops;
|
struct dm_gpio_ops *ops;
|
||||||
struct udevice *dev;
|
struct udevice *dev;
|
||||||
|
struct gpio_desc *desc;
|
||||||
const char *name;
|
const char *name;
|
||||||
int offset_count;
|
int offset_count;
|
||||||
char buf[80];
|
char buf[80];
|
||||||
@ -109,6 +110,28 @@ static int dm_test_gpio(struct unit_test_state *uts)
|
|||||||
ut_asserteq_str("a", name);
|
ut_asserteq_str("a", name);
|
||||||
ut_asserteq(20, offset_count);
|
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;
|
return 0;
|
||||||
}
|
}
|
||||||
DM_TEST(dm_test_gpio, DM_TESTF_SCAN_PDATA | DM_TESTF_SCAN_FDT);
|
DM_TEST(dm_test_gpio, DM_TESTF_SCAN_PDATA | DM_TESTF_SCAN_FDT);
|
||||||
|
Loading…
Reference in New Issue
Block a user