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
@ -201,6 +201,10 @@
|
||||
compatible = "denx,u-boot-fdt-test1";
|
||||
};
|
||||
|
||||
devres-test {
|
||||
compatible = "denx,u-boot-devres-test";
|
||||
};
|
||||
|
||||
clocks {
|
||||
clk_fixed: clk-fixed {
|
||||
compatible = "fixed-clock";
|
||||
|
@ -19,6 +19,7 @@ enum uclass_id {
|
||||
UCLASS_TEST_BUS,
|
||||
UCLASS_TEST_PROBE,
|
||||
UCLASS_TEST_DUMMY,
|
||||
UCLASS_TEST_DEVRES,
|
||||
UCLASS_SPI_EMUL, /* sandbox SPI device emulator */
|
||||
UCLASS_I2C_EMUL, /* sandbox I2C device emulator */
|
||||
UCLASS_I2C_EMUL_PARENT, /* parent for I2C device emulators */
|
||||
|
@ -46,5 +46,14 @@ struct unit_test {
|
||||
.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 */
|
||||
|
@ -153,6 +153,53 @@ UCLASS_DRIVER(testprobe) = {
|
||||
.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)
|
||||
{
|
||||
struct udevice *dev;
|
||||
|
Loading…
Reference in New Issue
Block a user