aboutsummaryrefslogtreecommitdiff
path: root/drivers/board
diff options
context:
space:
mode:
authorSimon Glass <sjg@chromium.org>2020-11-05 06:32:05 -0700
committerBin Meng <bmeng.cn@gmail.com>2020-11-06 10:18:20 +0800
commit3a8ee3df836614b68881f5b84d3197305ee1b08e (patch)
treeff5e90586913588eb3dcb8babb01cd2893a8644a /drivers/board
parenta40f890bdb01c54745274a939cd23942d92648ab (diff)
downloadu-boot-3a8ee3df836614b68881f5b84d3197305ee1b08e.zip
u-boot-3a8ee3df836614b68881f5b84d3197305ee1b08e.tar.gz
u-boot-3a8ee3df836614b68881f5b84d3197305ee1b08e.tar.bz2
board: Rename uclass to sysinfo
This uclass is intended to provide a way to obtain information about a U-Boot board. But the concept of a U-Boot 'board' is the whole system, not just one circuit board, meaning that 'board' is something of a misnomer for this uclass. In addition, the name 'board' is a bit overused in U-Boot and we want to use the same uclass to provide SMBIOS information. The obvious name is 'system' but that is so vague as to be meaningless. Use 'sysinfo' instead, since this uclass is aimed at providing information on the system. Rename everything accordingly. Note: Due to the patch delta caused by the symbol renames, this patch shows some renamed files as being deleted in one place and created in another. Signed-off-by: Simon Glass <sjg@chromium.org> Reviewed-by: Bin Meng <bmeng.cn@gmail.com>
Diffstat (limited to 'drivers/board')
-rw-r--r--drivers/board/Kconfig25
-rw-r--r--drivers/board/Makefile7
-rw-r--r--drivers/board/board-uclass.c71
-rw-r--r--drivers/board/gazerbeam.c265
-rw-r--r--drivers/board/gazerbeam.h17
-rw-r--r--drivers/board/sandbox.c107
-rw-r--r--drivers/board/sandbox.h12
7 files changed, 0 insertions, 504 deletions
diff --git a/drivers/board/Kconfig b/drivers/board/Kconfig
deleted file mode 100644
index 254f657..0000000
--- a/drivers/board/Kconfig
+++ /dev/null
@@ -1,25 +0,0 @@
-menuconfig BOARD
- bool "Device Information"
- help
- Support methods to query hardware configurations from internal
- mechanisms (e.g. reading GPIO values, determining the presence of
- devices on busses, etc.). This enables the usage of U-Boot with
- modular board architectures.
-
-if BOARD
-
-config SPL_BOARD
- depends on SPL_DM
- bool "Enable board driver support in SPL"
-
-config BOARD_GAZERBEAM
- bool "Enable board driver for the Gazerbeam board"
- help
- Support querying device information for the gdsys Gazerbeam board.
-
-config BOARD_SANDBOX
- bool "Enable board driver for the Sandbox board"
- help
- Support querying device information for the Sandbox boards.
-
-endif
diff --git a/drivers/board/Makefile b/drivers/board/Makefile
deleted file mode 100644
index cc16361..0000000
--- a/drivers/board/Makefile
+++ /dev/null
@@ -1,7 +0,0 @@
-# SPDX-License-Identifier: GPL-2.0+
-#
-# (C) Copyright 2017
-# Mario Six, Guntermann & Drunck GmbH, mario.six@gdsys.cc
-obj-y += board-uclass.o
-obj-$(CONFIG_BOARD_GAZERBEAM) += gazerbeam.o
-obj-$(CONFIG_BOARD_SANDBOX) += sandbox.o
diff --git a/drivers/board/board-uclass.c b/drivers/board/board-uclass.c
deleted file mode 100644
index b5485e9..0000000
--- a/drivers/board/board-uclass.c
+++ /dev/null
@@ -1,71 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0+
-/*
- * (C) Copyright 2017
- * Mario Six, Guntermann & Drunck GmbH, mario.six@gdsys.cc
- */
-
-#include <common.h>
-#include <dm.h>
-#include <board.h>
-
-int board_get(struct udevice **devp)
-{
- return uclass_first_device_err(UCLASS_BOARD, devp);
-}
-
-int board_detect(struct udevice *dev)
-{
- struct board_ops *ops = board_get_ops(dev);
-
- if (!ops->detect)
- return -ENOSYS;
-
- return ops->detect(dev);
-}
-
-int board_get_fit_loadable(struct udevice *dev, int index,
- const char *type, const char **strp)
-{
- struct board_ops *ops = board_get_ops(dev);
-
- if (!ops->get_fit_loadable)
- return -ENOSYS;
-
- return ops->get_fit_loadable(dev, index, type, strp);
-}
-
-int board_get_bool(struct udevice *dev, int id, bool *val)
-{
- struct board_ops *ops = board_get_ops(dev);
-
- if (!ops->get_bool)
- return -ENOSYS;
-
- return ops->get_bool(dev, id, val);
-}
-
-int board_get_int(struct udevice *dev, int id, int *val)
-{
- struct board_ops *ops = board_get_ops(dev);
-
- if (!ops->get_int)
- return -ENOSYS;
-
- return ops->get_int(dev, id, val);
-}
-
-int board_get_str(struct udevice *dev, int id, size_t size, char *val)
-{
- struct board_ops *ops = board_get_ops(dev);
-
- if (!ops->get_str)
- return -ENOSYS;
-
- return ops->get_str(dev, id, size, val);
-}
-
-UCLASS_DRIVER(board) = {
- .id = UCLASS_BOARD,
- .name = "board",
- .post_bind = dm_scan_fdt_dev,
-};
diff --git a/drivers/board/gazerbeam.c b/drivers/board/gazerbeam.c
deleted file mode 100644
index ed50fc5..0000000
--- a/drivers/board/gazerbeam.c
+++ /dev/null
@@ -1,265 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0+
-/*
- * (C) Copyright 2017
- * Mario Six, Guntermann & Drunck GmbH, mario.six@gdsys.cc
- */
-
-#include <common.h>
-#include <dm.h>
-#include <board.h>
-#include <i2c.h>
-#include <log.h>
-#include <asm/gpio.h>
-
-#include "gazerbeam.h"
-
-/* Sequence number of I2C bus that holds the GPIO expanders */
-static const int I2C_BUS_SEQ_NO = 1;
-
-/* I2C address of SC/MC2 expander */
-static const int MC2_EXPANDER_ADDR = 0x20;
-/* I2C address of MC4 expander */
-static const int MC4_EXPANDER_ADDR = 0x22;
-
-/* Number of the GPIO to read the SC data from */
-static const int SC_GPIO_NO;
-/* Number of the GPIO to read the CON data from */
-static const int CON_GPIO_NO = 1;
-
-/**
- * struct board_gazerbeam_priv - Private data structure for the gazerbeam board
- * driver.
- * @reset_gpios: GPIOs for the board's reset GPIOs.
- * @var_gpios: GPIOs for the board's hardware variant GPIOs
- * @ver_gpios: GPIOs for the board's hardware version GPIOs
- * @variant: Container for the board's hardware variant (CON/CPU)
- * @multichannel: Container for the board's multichannel variant (MC4/MC2/SC)
- * @hwversion: Container for the board's hardware version
- */
-struct board_gazerbeam_priv {
- struct gpio_desc reset_gpios[2];
- struct gpio_desc var_gpios[2];
- struct gpio_desc ver_gpios[4];
- int variant;
- int multichannel;
- int hwversion;
-};
-
-/**
- * _read_board_variant_data() - Read variant information from the hardware.
- * @dev: The board device for which to determine the multichannel and device
- * type information.
- *
- * The data read from the board's hardware (mostly hard-wired GPIOs) is stored
- * in the private data structure of the driver to be used by other driver
- * methods.
- *
- * Return: 0 if OK, -ve on error.
- */
-static int _read_board_variant_data(struct udevice *dev)
-{
- struct board_gazerbeam_priv *priv = dev_get_priv(dev);
- struct udevice *i2c_bus;
- struct udevice *dummy;
- char *listname;
- int mc4, mc2, sc, mc2_sc, con;
- int gpio_num;
- int res;
-
- res = uclass_get_device_by_seq(UCLASS_I2C, I2C_BUS_SEQ_NO, &i2c_bus);
- if (res) {
- debug("%s: Could not get I2C bus %d (err = %d)\n",
- dev->name, I2C_BUS_SEQ_NO, res);
- return res;
- }
-
- if (!i2c_bus) {
- debug("%s: Could not get I2C bus %d\n",
- dev->name, I2C_BUS_SEQ_NO);
- return -EIO;
- }
-
- mc2_sc = !dm_i2c_probe(i2c_bus, MC2_EXPANDER_ADDR, 0, &dummy);
- mc4 = !dm_i2c_probe(i2c_bus, MC4_EXPANDER_ADDR, 0, &dummy);
-
- if (mc2_sc && mc4) {
- debug("%s: Board hardware configuration inconsistent.\n",
- dev->name);
- return -EINVAL;
- }
-
- listname = mc2_sc ? "var-gpios-mc2" : "var-gpios-mc4";
-
- gpio_num = gpio_request_list_by_name(dev, listname, priv->var_gpios,
- ARRAY_SIZE(priv->var_gpios),
- GPIOD_IS_IN);
- if (gpio_num < 0) {
- debug("%s: Requesting gpio list %s failed (err = %d).\n",
- dev->name, listname, gpio_num);
- return gpio_num;
- }
-
- sc = dm_gpio_get_value(&priv->var_gpios[SC_GPIO_NO]);
- if (sc < 0) {
- debug("%s: Error while reading 'sc' GPIO (err = %d)",
- dev->name, sc);
- return sc;
- }
-
- mc2 = mc2_sc ? (sc ? 0 : 1) : 0;
-
- if ((sc && mc2) || (sc && mc4) || (!sc && !mc2 && !mc4)) {
- debug("%s: Board hardware configuration inconsistent.\n",
- dev->name);
- return -EINVAL;
- }
-
- con = dm_gpio_get_value(&priv->var_gpios[CON_GPIO_NO]);
- if (con < 0) {
- debug("%s: Error while reading 'con' GPIO (err = %d)",
- dev->name, con);
- return con;
- }
-
- priv->variant = con ? VAR_CON : VAR_CPU;
-
- priv->multichannel = mc4 ? 4 : (mc2 ? 2 : (sc ? 1 : 0));
-
- return 0;
-}
-
-/**
- * _read_hwversion() - Read the hardware version from the board.
- * @dev: The board device for which to read the hardware version.
- *
- * The hardware version read from the board (from hard-wired GPIOs) is stored
- * in the private data structure of the driver to be used by other driver
- * methods.
- *
- * Return: 0 if OK, -ve on error.
- */
-static int _read_hwversion(struct udevice *dev)
-{
- struct board_gazerbeam_priv *priv = dev_get_priv(dev);
- int res;
-
- res = gpio_request_list_by_name(dev, "ver-gpios", priv->ver_gpios,
- ARRAY_SIZE(priv->ver_gpios),
- GPIOD_IS_IN);
- if (res < 0) {
- debug("%s: Error getting GPIO list 'ver-gpios' (err = %d)\n",
- dev->name, res);
- return -ENODEV;
- }
-
- res = dm_gpio_get_values_as_int(priv->ver_gpios,
- ARRAY_SIZE(priv->ver_gpios));
- if (res < 0) {
- debug("%s: Error reading HW version from expander (err = %d)\n",
- dev->name, res);
- return res;
- }
-
- priv->hwversion = res;
-
- res = gpio_free_list(dev, priv->ver_gpios, ARRAY_SIZE(priv->ver_gpios));
- if (res < 0) {
- debug("%s: Error freeing HW version GPIO list (err = %d)\n",
- dev->name, res);
- return res;
- }
-
- return 0;
-}
-
-static int board_gazerbeam_detect(struct udevice *dev)
-{
- int res;
-
- res = _read_board_variant_data(dev);
- if (res) {
- debug("%s: Error reading multichannel variant (err = %d)\n",
- dev->name, res);
- return res;
- }
-
- res = _read_hwversion(dev);
- if (res) {
- debug("%s: Error reading hardware version (err = %d)\n",
- dev->name, res);
- return res;
- }
-
- return 0;
-}
-
-static int board_gazerbeam_get_int(struct udevice *dev, int id, int *val)
-{
- struct board_gazerbeam_priv *priv = dev_get_priv(dev);
-
- switch (id) {
- case BOARD_MULTICHANNEL:
- *val = priv->multichannel;
- break;
- case BOARD_VARIANT:
- *val = priv->variant;
- break;
- case BOARD_HWVERSION:
- *val = priv->hwversion;
- break;
- default:
- debug("%s: Integer value %d unknown\n", dev->name, id);
- return -EINVAL;
- }
-
- return 0;
-}
-
-static const struct udevice_id board_gazerbeam_ids[] = {
- { .compatible = "gdsys,board_gazerbeam" },
- { /* sentinel */ }
-};
-
-static const struct board_ops board_gazerbeam_ops = {
- .detect = board_gazerbeam_detect,
- .get_int = board_gazerbeam_get_int,
-};
-
-static int board_gazerbeam_probe(struct udevice *dev)
-{
- struct board_gazerbeam_priv *priv = dev_get_priv(dev);
- int gpio_num, i;
-
- gpio_num = gpio_request_list_by_name(dev, "reset-gpios",
- priv->reset_gpios,
- ARRAY_SIZE(priv->reset_gpios),
- GPIOD_IS_OUT);
-
- if (gpio_num < 0) {
- debug("%s: Error getting GPIO list 'reset-gpios' (err = %d)\n",
- dev->name, gpio_num);
- return gpio_num;
- }
-
- /* Set startup-finished GPIOs */
- for (i = 0; i < ARRAY_SIZE(priv->reset_gpios); i++) {
- int res = dm_gpio_set_value(&priv->reset_gpios[i], 0);
-
- if (res) {
- debug("%s: Error while setting GPIO %d (err = %d)\n",
- dev->name, i, res);
- return res;
- }
- }
-
- return 0;
-}
-
-U_BOOT_DRIVER(board_gazerbeam) = {
- .name = "board_gazerbeam",
- .id = UCLASS_BOARD,
- .of_match = board_gazerbeam_ids,
- .ops = &board_gazerbeam_ops,
- .priv_auto_alloc_size = sizeof(struct board_gazerbeam_priv),
- .probe = board_gazerbeam_probe,
-};
diff --git a/drivers/board/gazerbeam.h b/drivers/board/gazerbeam.h
deleted file mode 100644
index 171729d..0000000
--- a/drivers/board/gazerbeam.h
+++ /dev/null
@@ -1,17 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0+ */
-/*
- * (C) Copyright 2017
- * Mario Six, Guntermann & Drunck GmbH, mario.six@gdsys.cc
- *
- */
-
-enum {
- BOARD_MULTICHANNEL,
- BOARD_VARIANT,
- BOARD_HWVERSION,
-};
-
-enum {
- VAR_CON,
- VAR_CPU,
-};
diff --git a/drivers/board/sandbox.c b/drivers/board/sandbox.c
deleted file mode 100644
index 50621e4..0000000
--- a/drivers/board/sandbox.c
+++ /dev/null
@@ -1,107 +0,0 @@
-// 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,
-};
diff --git a/drivers/board/sandbox.h b/drivers/board/sandbox.h
deleted file mode 100644
index 2cff494..0000000
--- a/drivers/board/sandbox.h
+++ /dev/null
@@ -1,12 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0+ */
-/*
- * (C) Copyright 2018
- * Mario Six, Guntermann & Drunck GmbH, mario.six@gdsys.cc
- */
-
-enum {
- BOOL_CALLED_DETECT,
- INT_TEST1,
- INT_TEST2,
- STR_VACATIONSPOT,
-};