u-boot/test/dm/soc.c
Simon Glass b073d48e8d test: Drop the blank line before test macros
Most tests don't have this. It helps to keep the test declaration
clearly associated with the function it relates to, rather than the next
one in the file. Remove the extra blank line and mention this in the
docs.

Signed-off-by: Simon Glass <sjg@chromium.org>
2024-08-26 18:51:49 -06:00

118 lines
2.4 KiB
C

// SPDX-License-Identifier: GPL-2.0+
/*
* Test for the SOC uclass
*
* (C) Copyright 2020 - Texas Instruments Incorporated - https://www.ti.com/
* Dave Gerlach <d-gerlach@ti.com>
*/
#include <dm.h>
#include <dm/test.h>
#include <dm/uclass-internal.h>
#include <soc.h>
#include <test/ut.h>
struct sb_soc_data {
unsigned long param;
};
static int dm_test_soc(struct unit_test_state *uts)
{
struct udevice *dev;
char text[128];
const struct soc_attr *soc_data;
const struct sb_soc_data *match_data;
static const struct sb_soc_data soc_sandbox1_sr10_data = { 0x91919191 };
static const struct sb_soc_data soc_sandbox123_data = { 0x84848484 };
static const struct soc_attr sb_soc_devices_full[] = {
{
.family = "SANDBOX0xx",
.machine = "SANDBOX012",
.revision = "1.0",
.data = NULL,
},
{
.family = "SANDBOX1xx",
.machine = "SANDBOX107",
.revision = "1.0",
.data = NULL,
},
{
.family = "SANDBOX1xx",
.machine = "SANDBOX123",
.revision = "1.0",
.data = &soc_sandbox123_data,
},
{
.family = "SANDBOX1xx",
.machine = "SANDBOX131",
.revision = "2.0",
.data = NULL,
},
{ /* sentinel */ }
};
static const struct soc_attr sb_soc_devices_partial[] = {
{
.family = "SANDBOX0xx",
.revision = "1.0",
.data = NULL,
},
{
.family = "SANDBOX1xx",
.revision = "1.0",
.data = &soc_sandbox1_sr10_data,
},
{
.family = "SANDBOX1xx",
.revision = "2.0",
.data = NULL,
},
{ /* sentinel */ }
};
static const struct soc_attr sb_soc_devices_nomatch[] = {
{
.family = "SANDBOX0xx",
.revision = "1.0",
.data = NULL,
},
{
.family = "SANDBOX1xx",
.revision = "2.0",
.data = NULL,
},
{ /* sentinel */ }
};
ut_assertok(soc_get(&dev));
ut_assertok(soc_get_machine(dev, text, sizeof(text)));
ut_assertok(strcmp(text, "SANDBOX123"));
ut_assertok(soc_get_family(dev, text, sizeof(text)));
ut_assertok(strcmp(text, "SANDBOX1xx"));
ut_assertok(soc_get_revision(dev, text, sizeof(text)));
ut_asserteq_str(text, "1.0");
soc_data = soc_device_match(sb_soc_devices_full);
ut_assert(soc_data);
match_data = soc_data->data;
ut_asserteq(match_data->param, 0x84848484);
soc_data = soc_device_match(sb_soc_devices_partial);
ut_assert(soc_data);
match_data = soc_data->data;
ut_asserteq(match_data->param, 0x91919191);
soc_data = soc_device_match(sb_soc_devices_nomatch);
ut_asserteq_ptr(soc_data, NULL);
return 0;
}
DM_TEST(dm_test_soc, UTF_SCAN_FDT);