123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107 |
- // SPDX-License-Identifier: GPL-2.0+
- /*
- * (C) Copyright 2018
- * Mario Six, Guntermann & Drunck GmbH, mario.six@gdsys.cc
- */
- #include <common.h>
- #include <dm.h>
- #include <board.h>
- #include "sandbox.h"
- struct board_sandbox_priv {
- bool called_detect;
- int test_i1;
- int test_i2;
- };
- char vacation_spots[][64] = {"R'lyeh", "Dreamlands", "Plateau of Leng",
- "Carcosa", "Yuggoth", "The Nameless City"};
- int board_sandbox_detect(struct udevice *dev)
- {
- struct board_sandbox_priv *priv = dev_get_priv(dev);
- priv->called_detect = true;
- priv->test_i2 = 100;
- return 0;
- }
- int board_sandbox_get_bool(struct udevice *dev, int id, bool *val)
- {
- struct board_sandbox_priv *priv = dev_get_priv(dev);
- switch (id) {
- case BOOL_CALLED_DETECT:
- /* Checks if the dectect method has been called */
- *val = priv->called_detect;
- return 0;
- }
- return -ENOENT;
- }
- int board_sandbox_get_int(struct udevice *dev, int id, int *val)
- {
- struct board_sandbox_priv *priv = dev_get_priv(dev);
- switch (id) {
- case INT_TEST1:
- *val = priv->test_i1;
- /* Increments with every call */
- priv->test_i1++;
- return 0;
- case INT_TEST2:
- *val = priv->test_i2;
- /* Decrements with every call */
- priv->test_i2--;
- return 0;
- }
- return -ENOENT;
- }
- int board_sandbox_get_str(struct udevice *dev, int id, size_t size, char *val)
- {
- struct board_sandbox_priv *priv = dev_get_priv(dev);
- int i1 = priv->test_i1;
- int i2 = priv->test_i2;
- int index = (i1 * i2) % ARRAY_SIZE(vacation_spots);
- switch (id) {
- case STR_VACATIONSPOT:
- /* Picks a vacation spot depending on i1 and i2 */
- snprintf(val, size, vacation_spots[index]);
- return 0;
- }
- return -ENOENT;
- }
- static const struct udevice_id board_sandbox_ids[] = {
- { .compatible = "sandbox,board_sandbox" },
- { /* sentinel */ }
- };
- static const struct board_ops board_sandbox_ops = {
- .detect = board_sandbox_detect,
- .get_bool = board_sandbox_get_bool,
- .get_int = board_sandbox_get_int,
- .get_str = board_sandbox_get_str,
- };
- int board_sandbox_probe(struct udevice *dev)
- {
- return 0;
- }
- U_BOOT_DRIVER(board_sandbox) = {
- .name = "board_sandbox",
- .id = UCLASS_BOARD,
- .of_match = board_sandbox_ids,
- .ops = &board_sandbox_ops,
- .priv_auto_alloc_size = sizeof(struct board_sandbox_priv),
- .probe = board_sandbox_probe,
- };
|