mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-11-28 23:51:33 +00:00
dm: test: Add a test driver for devres
Add a driver which does devres allocations so that we can write tests for devres. Signed-off-by: Simon Glass <sjg@chromium.org>
This commit is contained in:
parent
cce61fc428
commit
dc12ebbbdb
4 changed files with 61 additions and 0 deletions
|
@ -201,6 +201,10 @@
|
||||||
compatible = "denx,u-boot-fdt-test1";
|
compatible = "denx,u-boot-fdt-test1";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
devres-test {
|
||||||
|
compatible = "denx,u-boot-devres-test";
|
||||||
|
};
|
||||||
|
|
||||||
clocks {
|
clocks {
|
||||||
clk_fixed: clk-fixed {
|
clk_fixed: clk-fixed {
|
||||||
compatible = "fixed-clock";
|
compatible = "fixed-clock";
|
||||||
|
|
|
@ -19,6 +19,7 @@ enum uclass_id {
|
||||||
UCLASS_TEST_BUS,
|
UCLASS_TEST_BUS,
|
||||||
UCLASS_TEST_PROBE,
|
UCLASS_TEST_PROBE,
|
||||||
UCLASS_TEST_DUMMY,
|
UCLASS_TEST_DUMMY,
|
||||||
|
UCLASS_TEST_DEVRES,
|
||||||
UCLASS_SPI_EMUL, /* sandbox SPI device emulator */
|
UCLASS_SPI_EMUL, /* sandbox SPI device emulator */
|
||||||
UCLASS_I2C_EMUL, /* sandbox I2C device emulator */
|
UCLASS_I2C_EMUL, /* sandbox I2C device emulator */
|
||||||
UCLASS_I2C_EMUL_PARENT, /* parent for I2C device emulators */
|
UCLASS_I2C_EMUL_PARENT, /* parent for I2C device emulators */
|
||||||
|
|
|
@ -46,5 +46,14 @@ struct unit_test {
|
||||||
.func = _name, \
|
.func = _name, \
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Sizes for devres tests */
|
||||||
|
enum {
|
||||||
|
TEST_DEVRES_SIZE = 100,
|
||||||
|
TEST_DEVRES_COUNT = 10,
|
||||||
|
TEST_DEVRES_TOTAL = TEST_DEVRES_SIZE * TEST_DEVRES_COUNT,
|
||||||
|
|
||||||
|
/* A different size */
|
||||||
|
TEST_DEVRES_SIZE2 = 15,
|
||||||
|
};
|
||||||
|
|
||||||
#endif /* __TEST_TEST_H */
|
#endif /* __TEST_TEST_H */
|
||||||
|
|
|
@ -153,6 +153,53 @@ UCLASS_DRIVER(testprobe) = {
|
||||||
.flags = DM_UC_FLAG_SEQ_ALIAS,
|
.flags = DM_UC_FLAG_SEQ_ALIAS,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
struct dm_testdevres_pdata {
|
||||||
|
void *ptr;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct dm_testdevres_priv {
|
||||||
|
void *ptr;
|
||||||
|
};
|
||||||
|
|
||||||
|
static int testdevres_drv_bind(struct udevice *dev)
|
||||||
|
{
|
||||||
|
struct dm_testdevres_pdata *pdata = dev_get_platdata(dev);
|
||||||
|
|
||||||
|
pdata->ptr = devm_kmalloc(dev, TEST_DEVRES_SIZE, 0);
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static int testdevres_drv_probe(struct udevice *dev)
|
||||||
|
{
|
||||||
|
struct dm_testdevres_priv *priv = dev_get_priv(dev);
|
||||||
|
|
||||||
|
priv->ptr = devm_kmalloc(dev, TEST_DEVRES_SIZE2, 0);
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static const struct udevice_id testdevres_ids[] = {
|
||||||
|
{ .compatible = "denx,u-boot-devres-test" },
|
||||||
|
{ }
|
||||||
|
};
|
||||||
|
|
||||||
|
U_BOOT_DRIVER(testdevres_drv) = {
|
||||||
|
.name = "testdevres_drv",
|
||||||
|
.of_match = testdevres_ids,
|
||||||
|
.id = UCLASS_TEST_DEVRES,
|
||||||
|
.bind = testdevres_drv_bind,
|
||||||
|
.probe = testdevres_drv_probe,
|
||||||
|
.platdata_auto_alloc_size = sizeof(struct dm_testdevres_pdata),
|
||||||
|
.priv_auto_alloc_size = sizeof(struct dm_testdevres_priv),
|
||||||
|
};
|
||||||
|
|
||||||
|
UCLASS_DRIVER(testdevres) = {
|
||||||
|
.name = "testdevres",
|
||||||
|
.id = UCLASS_TEST_DEVRES,
|
||||||
|
.flags = DM_UC_FLAG_SEQ_ALIAS,
|
||||||
|
};
|
||||||
|
|
||||||
int dm_check_devices(struct unit_test_state *uts, int num_devices)
|
int dm_check_devices(struct unit_test_state *uts, int num_devices)
|
||||||
{
|
{
|
||||||
struct udevice *dev;
|
struct udevice *dev;
|
||||||
|
|
Loading…
Reference in a new issue