summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTom Rini <trini@konsulko.com>2021-07-07 13:34:42 -0400
committerTom Rini <trini@konsulko.com>2021-07-07 13:34:42 -0400
commit7e58a3a148fb94e9ce09fb48d0ddd75c20ee7df9 (patch)
tree6a4edadac675129fe33da72bb6aa863b7e57f2e1
parent5b8a83551d339736af92c43524ed0e1ba01122af (diff)
parent880e4768c20b99b1f9a50f35c180f8522dd82c9a (diff)
downloadu-boot-7e58a3a148fb94e9ce09fb48d0ddd75c20ee7df9.tar.gz
u-boot-7e58a3a148fb94e9ce09fb48d0ddd75c20ee7df9.tar.bz2
u-boot-7e58a3a148fb94e9ce09fb48d0ddd75c20ee7df9.zip
Merge tag 'dm-pull-6jul21' of https://source.denx.de/u-boot/custodians/u-boot-dm
various minor sandbox improvements
-rw-r--r--arch/sandbox/cpu/start.c33
-rw-r--r--arch/sandbox/dts/test.dts6
-rw-r--r--arch/sandbox/include/asm/state.h1
-rw-r--r--arch/sandbox/include/asm/test.h10
-rw-r--r--common/board_f.c4
-rw-r--r--configs/sandbox64_defconfig1
-rw-r--r--configs/sandbox_defconfig1
-rw-r--r--configs/sandbox_flattree_defconfig1
-rw-r--r--configs/sandbox_noinst_defconfig1
-rw-r--r--configs/sandbox_spl_defconfig1
-rw-r--r--drivers/adc/adc-uclass.c2
-rw-r--r--drivers/ata/ahci-uclass.c2
-rw-r--r--drivers/axi/axi-emul-uclass.c2
-rw-r--r--drivers/axi/axi-uclass.c2
-rw-r--r--drivers/block/blk-uclass.c2
-rw-r--r--drivers/block/ide.c2
-rw-r--r--drivers/bootcount/bootcount-uclass.c2
-rw-r--r--drivers/button/button-uclass.c2
-rw-r--r--drivers/cache/cache-uclass.c2
-rw-r--r--drivers/clk/clk-uclass.c2
-rw-r--r--drivers/core/root.c5
-rw-r--r--drivers/core/simple-bus.c2
-rw-r--r--drivers/cpu/cpu-uclass.c2
-rw-r--r--drivers/crypto/rsa_mod_exp/mod_exp_uclass.c2
-rw-r--r--drivers/dma/dma-uclass.c2
-rw-r--r--drivers/firmware/firmware-uclass.c2
-rw-r--r--drivers/hwspinlock/hwspinlock-uclass.c2
-rw-r--r--drivers/i2c/i2c-emul-uclass.c2
-rw-r--r--drivers/i2c/i2c-uclass.c2
-rw-r--r--drivers/i2c/muxes/i2c-mux-uclass.c2
-rw-r--r--drivers/input/keyboard-uclass.c2
-rw-r--r--drivers/led/led-uclass.c2
-rw-r--r--drivers/mailbox/mailbox-uclass.c2
-rw-r--r--drivers/misc/cros_ec_sandbox.c47
-rw-r--r--drivers/misc/fs_loader.c3
-rw-r--r--drivers/misc/i2c_eeprom.c2
-rw-r--r--drivers/misc/misc-uclass.c2
-rw-r--r--drivers/misc/p2sb-uclass.c2
-rw-r--r--drivers/misc/pwrseq-uclass.c2
-rw-r--r--drivers/mmc/mmc-uclass.c2
-rw-r--r--drivers/mtd/mtd-uclass.c2
-rw-r--r--drivers/mtd/spi/sf-uclass.c2
-rw-r--r--drivers/mux/mux-uclass.c2
-rw-r--r--drivers/nvme/nvme-uclass.c2
-rw-r--r--drivers/pch/pch-uclass.c2
-rw-r--r--drivers/pci/pci-uclass.c2
-rw-r--r--drivers/pci_endpoint/pci_ep-uclass.c2
-rw-r--r--drivers/phy/phy-uclass.c2
-rw-r--r--drivers/pinctrl/pinctrl-uclass.c2
-rw-r--r--drivers/power/domain/power-domain-uclass.c2
-rw-r--r--drivers/power/pmic/pmic-uclass.c2
-rw-r--r--drivers/power/regulator/regulator-uclass.c2
-rw-r--r--drivers/pwm/pwm-uclass.c2
-rw-r--r--drivers/ram/ram-uclass.c2
-rw-r--r--drivers/remoteproc/rproc-uclass.c3
-rw-r--r--drivers/reset/reset-uclass.c2
-rw-r--r--drivers/rng/rng-uclass.c2
-rw-r--r--drivers/rtc/rtc-uclass.c2
-rw-r--r--drivers/scsi/scsi-uclass.c2
-rw-r--r--drivers/serial/serial-uclass.c2
-rw-r--r--drivers/smem/smem-uclass.c2
-rw-r--r--drivers/soc/soc-uclass.c2
-rw-r--r--drivers/sound/codec-uclass.c2
-rw-r--r--drivers/sound/i2s-uclass.c2
-rw-r--r--drivers/sound/sound-uclass.c2
-rw-r--r--drivers/spi/spi-emul-uclass.c2
-rw-r--r--drivers/spmi/spmi-uclass.c2
-rw-r--r--drivers/sysinfo/sysinfo-uclass.c2
-rw-r--r--drivers/tee/tee-uclass.c2
-rw-r--r--drivers/thermal/thermal-uclass.c2
-rw-r--r--drivers/timer/timer-uclass.c2
-rw-r--r--drivers/ufs/ufs-uclass.c2
-rw-r--r--drivers/usb/emul/usb-emul-uclass.c2
-rw-r--r--drivers/usb/gadget/udc/udc-uclass.c2
-rw-r--r--drivers/usb/host/usb-uclass.c2
-rw-r--r--drivers/video/backlight-uclass.c2
-rw-r--r--drivers/video/bridge/video-bridge-uclass.c2
-rw-r--r--drivers/video/display-uclass.c2
-rw-r--r--drivers/video/dsi-host-uclass.c2
-rw-r--r--drivers/video/panel-uclass.c2
-rw-r--r--drivers/video/vidconsole-uclass.c2
-rw-r--r--drivers/video/video-uclass.c2
-rw-r--r--drivers/video/video_osd-uclass.c2
-rw-r--r--drivers/virtio/virtio-uclass.c2
-rw-r--r--drivers/w1-eeprom/w1-eeprom-uclass.c2
-rw-r--r--drivers/w1/w1-uclass.c2
-rw-r--r--drivers/watchdog/wdt-uclass.c2
-rw-r--r--drivers/xen/pvblock.c3
-rw-r--r--include/dm/uclass.h3
-rw-r--r--test/cmd/pwm.c32
-rw-r--r--test/dm/Makefile1
-rw-r--r--test/dm/cros_ec_pwm.c60
-rw-r--r--test/dm/panel.c2
-rw-r--r--test/dm/pwm.c6
-rw-r--r--tools/patman/tools.py2
95 files changed, 348 insertions, 24 deletions
diff --git a/arch/sandbox/cpu/start.c b/arch/sandbox/cpu/start.c
index 6bb94473f1..777db4e952 100644
--- a/arch/sandbox/cpu/start.c
+++ b/arch/sandbox/cpu/start.c
@@ -390,6 +390,16 @@ static int sandbox_cmdline_cb_select_unittests(struct sandbox_state *state,
}
SANDBOX_CMDLINE_OPT_SHORT(select_unittests, 'k', 1, "Select unit tests to run");
+static int sandbox_cmdline_cb_signals(struct sandbox_state *state,
+ const char *arg)
+{
+ state->handle_signals = true;
+
+ return 0;
+}
+SANDBOX_CMDLINE_OPT_SHORT(signals, 'S', 0,
+ "Handle signals (such as SIGSEGV) in sandbox");
+
static void setup_ram_buf(struct sandbox_state *state)
{
/* Zero the RAM buffer if we didn't read it, to keep valgrind happy */
@@ -426,9 +436,6 @@ void sandbox_reset(void)
if (state_uninit())
os_exit(2);
- if (dm_uninit())
- os_exit(2);
-
/* Restart U-Boot */
os_relaunch(os_argv);
}
@@ -444,6 +451,14 @@ int main(int argc, char *argv[])
text_base = os_find_text_base();
/*
+ * This must be the first invocation of os_malloc() to have
+ * state->ram_buf in the low 4 GiB.
+ */
+ ret = state_init();
+ if (ret)
+ goto err;
+
+ /*
* Copy argv[] so that we can pass the arguments in the original
* sequence when resetting the sandbox.
*/
@@ -457,10 +472,6 @@ int main(int argc, char *argv[])
gd = &data;
gd->arch.text_base = text_base;
- ret = state_init();
- if (ret)
- goto err;
-
state = state_get_current();
if (os_parse_args(state, argc, argv))
return 1;
@@ -476,9 +487,11 @@ int main(int argc, char *argv[])
if (ret)
goto err;
- ret = os_setup_signal_handlers();
- if (ret)
- goto err;
+ if (state->handle_signals) {
+ ret = os_setup_signal_handlers();
+ if (ret)
+ goto err;
+ }
#if CONFIG_VAL(SYS_MALLOC_F_LEN)
gd->malloc_base = CONFIG_MALLOC_F_ADDR;
diff --git a/arch/sandbox/dts/test.dts b/arch/sandbox/dts/test.dts
index 8e7eaf2d15..d85bb46ceb 100644
--- a/arch/sandbox/dts/test.dts
+++ b/arch/sandbox/dts/test.dts
@@ -139,6 +139,12 @@
size = <0x10000>;
};
};
+
+ cros_ec_pwm: cros-ec-pwm {
+ compatible = "google,cros-ec-pwm";
+ #pwm-cells = <1>;
+ };
+
};
dsi_host: dsi_host {
diff --git a/arch/sandbox/include/asm/state.h b/arch/sandbox/include/asm/state.h
index bca1306982..1c4c571e28 100644
--- a/arch/sandbox/include/asm/state.h
+++ b/arch/sandbox/include/asm/state.h
@@ -93,6 +93,7 @@ struct sandbox_state {
bool ram_buf_read; /* true if we read the RAM buffer */
bool run_unittests; /* Run unit tests */
const char *select_unittests; /* Unit test to run */
+ bool handle_signals; /* Handle signals within sandbox */
/* Pointer to information for each SPI bus/cs */
struct sandbox_spi_info spi[CONFIG_SANDBOX_SPI_MAX_BUS]
diff --git a/arch/sandbox/include/asm/test.h b/arch/sandbox/include/asm/test.h
index 1cb960ac24..dab1a4ea01 100644
--- a/arch/sandbox/include/asm/test.h
+++ b/arch/sandbox/include/asm/test.h
@@ -275,4 +275,14 @@ void sandbox_set_enable_memio(bool enable);
*/
void sandbox_cros_ec_set_test_flags(struct udevice *dev, uint flags);
+/**
+ * sandbox_cros_ec_get_pwm_duty() - Get EC PWM config for testing purposes
+ *
+ * @dev: Device to check
+ * @index: PWM channel index
+ * @duty: Current duty cycle in 0..EC_PWM_MAX_DUTY range.
+ * @return 0 if OK, -ENOSPC if the PWM number is invalid
+ */
+int sandbox_cros_ec_get_pwm_duty(struct udevice *dev, uint index, uint *duty);
+
#endif
diff --git a/common/board_f.c b/common/board_f.c
index 203e965799..c1b8e63e56 100644
--- a/common/board_f.c
+++ b/common/board_f.c
@@ -265,7 +265,9 @@ static int setup_mon_len(void)
{
#if defined(__ARM__) || defined(__MICROBLAZE__)
gd->mon_len = (ulong)&__bss_end - (ulong)_start;
-#elif defined(CONFIG_SANDBOX) || defined(CONFIG_EFI_APP)
+#elif defined(CONFIG_SANDBOX)
+ gd->mon_len = 0;
+#elif defined(CONFIG_EFI_APP)
gd->mon_len = (ulong)&_end - (ulong)_init;
#elif defined(CONFIG_NIOS2) || defined(CONFIG_XTENSA)
gd->mon_len = CONFIG_SYS_MONITOR_LEN;
diff --git a/configs/sandbox64_defconfig b/configs/sandbox64_defconfig
index a8bb560724..674b660391 100644
--- a/configs/sandbox64_defconfig
+++ b/configs/sandbox64_defconfig
@@ -188,6 +188,7 @@ CONFIG_REGULATOR_S5M8767=y
CONFIG_DM_REGULATOR_SANDBOX=y
CONFIG_REGULATOR_TPS65090=y
CONFIG_DM_PWM=y
+CONFIG_PWM_CROS_EC=y
CONFIG_PWM_SANDBOX=y
CONFIG_RAM=y
CONFIG_REMOTEPROC_SANDBOX=y
diff --git a/configs/sandbox_defconfig b/configs/sandbox_defconfig
index f16e2d5d23..df14506b09 100644
--- a/configs/sandbox_defconfig
+++ b/configs/sandbox_defconfig
@@ -226,6 +226,7 @@ CONFIG_DM_REGULATOR_SANDBOX=y
CONFIG_REGULATOR_TPS65090=y
CONFIG_DM_REGULATOR_SCMI=y
CONFIG_DM_PWM=y
+CONFIG_PWM_CROS_EC=y
CONFIG_PWM_SANDBOX=y
CONFIG_RAM=y
CONFIG_REMOTEPROC_SANDBOX=y
diff --git a/configs/sandbox_flattree_defconfig b/configs/sandbox_flattree_defconfig
index 1c39a545c8..aaa6720cf9 100644
--- a/configs/sandbox_flattree_defconfig
+++ b/configs/sandbox_flattree_defconfig
@@ -165,6 +165,7 @@ CONFIG_REGULATOR_S5M8767=y
CONFIG_DM_REGULATOR_SANDBOX=y
CONFIG_REGULATOR_TPS65090=y
CONFIG_DM_PWM=y
+CONFIG_PWM_CROS_EC=y
CONFIG_PWM_SANDBOX=y
CONFIG_RAM=y
CONFIG_REMOTEPROC_SANDBOX=y
diff --git a/configs/sandbox_noinst_defconfig b/configs/sandbox_noinst_defconfig
index 9f415cd875..3dc3a36154 100644
--- a/configs/sandbox_noinst_defconfig
+++ b/configs/sandbox_noinst_defconfig
@@ -181,6 +181,7 @@ CONFIG_REGULATOR_S5M8767=y
CONFIG_DM_REGULATOR_SANDBOX=y
CONFIG_REGULATOR_TPS65090=y
CONFIG_DM_PWM=y
+CONFIG_PWM_CROS_EC=y
CONFIG_PWM_SANDBOX=y
CONFIG_RAM=y
CONFIG_REMOTEPROC_SANDBOX=y
diff --git a/configs/sandbox_spl_defconfig b/configs/sandbox_spl_defconfig
index 8bc1373ec3..c7d15de939 100644
--- a/configs/sandbox_spl_defconfig
+++ b/configs/sandbox_spl_defconfig
@@ -183,6 +183,7 @@ CONFIG_REGULATOR_S5M8767=y
CONFIG_DM_REGULATOR_SANDBOX=y
CONFIG_REGULATOR_TPS65090=y
CONFIG_DM_PWM=y
+CONFIG_PWM_CROS_EC=y
CONFIG_PWM_SANDBOX=y
CONFIG_RAM=y
CONFIG_REMOTEPROC_SANDBOX=y
diff --git a/drivers/adc/adc-uclass.c b/drivers/adc/adc-uclass.c
index 8781f32855..67137ffb34 100644
--- a/drivers/adc/adc-uclass.c
+++ b/drivers/adc/adc-uclass.c
@@ -4,6 +4,8 @@
* Przemyslaw Marczak <p.marczak@samsung.com>
*/
+#define LOG_CATEGORY UCLASS_ADC
+
#include <common.h>
#include <errno.h>
#include <div64.h>
diff --git a/drivers/ata/ahci-uclass.c b/drivers/ata/ahci-uclass.c
index c4c7a03fe7..d398b50b9a 100644
--- a/drivers/ata/ahci-uclass.c
+++ b/drivers/ata/ahci-uclass.c
@@ -4,6 +4,8 @@
* Written by Simon Glass <sjg@chromium.org>
*/
+#define LOG_CATEGORY UCLASS_AHCI
+
#include <common.h>
#include <ahci.h>
#include <dm.h>
diff --git a/drivers/axi/axi-emul-uclass.c b/drivers/axi/axi-emul-uclass.c
index b28351f1ad..793336d8c4 100644
--- a/drivers/axi/axi-emul-uclass.c
+++ b/drivers/axi/axi-emul-uclass.c
@@ -4,6 +4,8 @@
* Mario Six, Guntermann & Drunck GmbH, mario.six@gdsys.cc
*/
+#define LOG_CATEGORY UCLASS_AXI_EMUL
+
#include <common.h>
#include <axi.h>
#include <dm.h>
diff --git a/drivers/axi/axi-uclass.c b/drivers/axi/axi-uclass.c
index af8acd9f88..afb4844ecb 100644
--- a/drivers/axi/axi-uclass.c
+++ b/drivers/axi/axi-uclass.c
@@ -4,6 +4,8 @@
* Mario Six, Guntermann & Drunck GmbH, mario.six@gdsys.cc
*/
+#define LOG_CATEGORY UCLASS_AXI
+
#include <common.h>
#include <dm.h>
#include <axi.h>
diff --git a/drivers/block/blk-uclass.c b/drivers/block/blk-uclass.c
index d0d91db540..dfc0d46970 100644
--- a/drivers/block/blk-uclass.c
+++ b/drivers/block/blk-uclass.c
@@ -4,6 +4,8 @@
* Written by Simon Glass <sjg@chromium.org>
*/
+#define LOG_CATEGORY UCLASS_BLK
+
#include <common.h>
#include <blk.h>
#include <dm.h>
diff --git a/drivers/block/ide.c b/drivers/block/ide.c
index 862a85bc87..c99076c6f4 100644
--- a/drivers/block/ide.c
+++ b/drivers/block/ide.c
@@ -4,6 +4,8 @@
* Wolfgang Denk, DENX Software Engineering, wd@denx.de.
*/
+#define LOG_CATEGORY UCLASS_IDE
+
#include <common.h>
#include <ata.h>
#include <blk.h>
diff --git a/drivers/bootcount/bootcount-uclass.c b/drivers/bootcount/bootcount-uclass.c
index 34ac08d59a..c747c9ab27 100644
--- a/drivers/bootcount/bootcount-uclass.c
+++ b/drivers/bootcount/bootcount-uclass.c
@@ -3,6 +3,8 @@
* (C) Copyright 2018 Theobroma Systems Design und Consulting GmbH
*/
+#define LOG_CATEGORY UCLASS_BOOTCOUNT
+
#include <common.h>
#include <dm.h>
#include <errno.h>
diff --git a/drivers/button/button-uclass.c b/drivers/button/button-uclass.c
index e06d3eb7da..e33ed7d01d 100644
--- a/drivers/button/button-uclass.c
+++ b/drivers/button/button-uclass.c
@@ -5,6 +5,8 @@
* Based on led-uclass.c
*/
+#define LOG_CATEGORY UCLASS_BUTTON
+
#include <common.h>
#include <button.h>
#include <dm.h>
diff --git a/drivers/cache/cache-uclass.c b/drivers/cache/cache-uclass.c
index 3b20a10f08..0c13dbdb75 100644
--- a/drivers/cache/cache-uclass.c
+++ b/drivers/cache/cache-uclass.c
@@ -3,6 +3,8 @@
* Copyright (C) 2019 Intel Corporation <www.intel.com>
*/
+#define LOG_CATEGORY UCLASS_CACHE
+
#include <common.h>
#include <cache.h>
#include <dm.h>
diff --git a/drivers/clk/clk-uclass.c b/drivers/clk/clk-uclass.c
index 14254212ca..f049e36380 100644
--- a/drivers/clk/clk-uclass.c
+++ b/drivers/clk/clk-uclass.c
@@ -6,6 +6,8 @@
* Copyright (c) 2018, Theobroma Systems Design und Consulting GmbH
*/
+#define LOG_CATEGORY UCLASS_CLK
+
#include <common.h>
#include <clk.h>
#include <clk-uclass.h>
diff --git a/drivers/core/root.c b/drivers/core/root.c
index fe0562cd6f..78eee082c9 100644
--- a/drivers/core/root.c
+++ b/drivers/core/root.c
@@ -6,6 +6,8 @@
* Pavel Herrmann <morpheus.ibis@gmail.com>
*/
+#define LOG_CATEGORY UCLASS_ROOT
+
#include <common.h>
#include <errno.h>
#include <fdtdec.h>
@@ -111,9 +113,6 @@ void fix_uclass(void)
entry->init += gd->reloc_off;
if (entry->destroy)
entry->destroy += gd->reloc_off;
- /* FIXME maybe also need to fix these ops */
- if (entry->ops)
- entry->ops += gd->reloc_off;
}
}
diff --git a/drivers/core/simple-bus.c b/drivers/core/simple-bus.c
index 18f52d26df..abc55c2171 100644
--- a/drivers/core/simple-bus.c
+++ b/drivers/core/simple-bus.c
@@ -3,6 +3,8 @@
* Copyright (c) 2014 Google, Inc
*/
+#define LOG_CATEGORY UCLASS_SIMPLE_BUS
+
#include <common.h>
#include <asm/global_data.h>
#include <dm.h>
diff --git a/drivers/cpu/cpu-uclass.c b/drivers/cpu/cpu-uclass.c
index 1c338bad9a..a5cda6a62c 100644
--- a/drivers/cpu/cpu-uclass.c
+++ b/drivers/cpu/cpu-uclass.c
@@ -4,6 +4,8 @@
* Written by Simon Glass <sjg@chromium.org>
*/
+#define LOG_CATEGORY UCLASS_CPU
+
#include <common.h>
#include <cpu.h>
#include <dm.h>
diff --git a/drivers/crypto/rsa_mod_exp/mod_exp_uclass.c b/drivers/crypto/rsa_mod_exp/mod_exp_uclass.c
index f5ae35e132..6a4d235d57 100644
--- a/drivers/crypto/rsa_mod_exp/mod_exp_uclass.c
+++ b/drivers/crypto/rsa_mod_exp/mod_exp_uclass.c
@@ -4,6 +4,8 @@
* Author: Ruchika Gupta <ruchika.gupta@freescale.com>
*/
+#define LOG_CATEGORY UCLASS_MOD_EXP
+
#include <common.h>
#include <dm.h>
#include <asm/global_data.h>
diff --git a/drivers/dma/dma-uclass.c b/drivers/dma/dma-uclass.c
index a93b0b7ba0..652ddbb62b 100644
--- a/drivers/dma/dma-uclass.c
+++ b/drivers/dma/dma-uclass.c
@@ -9,6 +9,8 @@
* Author: Mugunthan V N <mugunthanvnm@ti.com>
*/
+#define LOG_CATEGORY UCLASS_DMA
+
#include <common.h>
#include <cpu_func.h>
#include <dm.h>
diff --git a/drivers/firmware/firmware-uclass.c b/drivers/firmware/firmware-uclass.c
index 7fcd7fb904..bfaf283eed 100644
--- a/drivers/firmware/firmware-uclass.c
+++ b/drivers/firmware/firmware-uclass.c
@@ -1,5 +1,7 @@
// SPDX-License-Identifier: GPL-2.0+
+#define LOG_CATEGORY UCLASS_FIRMWARE
+
#include <common.h>
#include <dm.h>
diff --git a/drivers/hwspinlock/hwspinlock-uclass.c b/drivers/hwspinlock/hwspinlock-uclass.c
index 8997243421..cbe7236011 100644
--- a/drivers/hwspinlock/hwspinlock-uclass.c
+++ b/drivers/hwspinlock/hwspinlock-uclass.c
@@ -3,6 +3,8 @@
* Copyright (C) 2018, STMicroelectronics - All Rights Reserved
*/
+#define LOG_CATEGORY UCLASS_HWSPINLOCK
+
#include <common.h>
#include <dm.h>
#include <errno.h>
diff --git a/drivers/i2c/i2c-emul-uclass.c b/drivers/i2c/i2c-emul-uclass.c
index 7917b63c55..aeec6aa9fa 100644
--- a/drivers/i2c/i2c-emul-uclass.c
+++ b/drivers/i2c/i2c-emul-uclass.c
@@ -3,6 +3,8 @@
* Copyright (c) 2014 Google, Inc
*/
+#define LOG_CATEGORY UCLASS_I2C_EMUL
+
#include <common.h>
#include <dm.h>
#include <i2c.h>
diff --git a/drivers/i2c/i2c-uclass.c b/drivers/i2c/i2c-uclass.c
index be56785217..04c88503a2 100644
--- a/drivers/i2c/i2c-uclass.c
+++ b/drivers/i2c/i2c-uclass.c
@@ -3,6 +3,8 @@
* Copyright (c) 2014 Google, Inc
*/
+#define LOG_CATEGORY UCLASS_I2C
+
#include <common.h>
#include <dm.h>
#include <errno.h>
diff --git a/drivers/i2c/muxes/i2c-mux-uclass.c b/drivers/i2c/muxes/i2c-mux-uclass.c
index dbca409ee3..a5d1bb0576 100644
--- a/drivers/i2c/muxes/i2c-mux-uclass.c
+++ b/drivers/i2c/muxes/i2c-mux-uclass.c
@@ -4,6 +4,8 @@
* Written by Simon Glass <sjg@chromium.org>
*/
+#define LOG_CATEGORY UCLASS_I2C_MUX
+
#include <common.h>
#include <dm.h>
#include <errno.h>
diff --git a/drivers/input/keyboard-uclass.c b/drivers/input/keyboard-uclass.c
index 2c6680337d..aefc8e825e 100644
--- a/drivers/input/keyboard-uclass.c
+++ b/drivers/input/keyboard-uclass.c
@@ -3,6 +3,8 @@
* Copyright (c) 2015 Google, Inc
*/
+#define LOG_CATEGORY UCLASS_KEYBOARD
+
#include <common.h>
#include <dm.h>
#include <keyboard.h>
diff --git a/drivers/led/led-uclass.c b/drivers/led/led-uclass.c
index e15a2967ff..7e298dbb06 100644
--- a/drivers/led/led-uclass.c
+++ b/drivers/led/led-uclass.c
@@ -4,6 +4,8 @@
* Written by Simon Glass <sjg@chromium.org>
*/
+#define LOG_CATEGORY UCLASS_LED
+
#include <common.h>
#include <dm.h>
#include <errno.h>
diff --git a/drivers/mailbox/mailbox-uclass.c b/drivers/mailbox/mailbox-uclass.c
index c972d84608..01c9e75fa5 100644
--- a/drivers/mailbox/mailbox-uclass.c
+++ b/drivers/mailbox/mailbox-uclass.c
@@ -3,6 +3,8 @@
* Copyright (c) 2016, NVIDIA CORPORATION.
*/
+#define LOG_CATEGORY UCLASS_MAILBOX
+
#include <common.h>
#include <dm.h>
#include <log.h>
diff --git a/drivers/misc/cros_ec_sandbox.c b/drivers/misc/cros_ec_sandbox.c
index bc01df0904..db5e3b0f51 100644
--- a/drivers/misc/cros_ec_sandbox.c
+++ b/drivers/misc/cros_ec_sandbox.c
@@ -64,6 +64,7 @@ struct ec_keymatrix_entry {
enum {
VSTORE_SLOT_COUNT = 4,
+ PWM_CHANNEL_COUNT = 4,
};
struct vstore_slot {
@@ -71,6 +72,10 @@ struct vstore_slot {
u8 data[EC_VSTORE_SLOT_SIZE];
};
+struct ec_pwm_channel {
+ uint duty; /* not ns, EC_PWM_MAX_DUTY = 100% */
+};
+
/**
* struct ec_state - Information about the EC state
*
@@ -85,6 +90,7 @@ struct vstore_slot {
* @recovery_req: Keyboard recovery requested
* @test_flags: Flags that control behaviour for tests
* @slot_locked: Locked vstore slots (mask)
+ * @pwm: Information per PWM channel
*/
struct ec_state {
u8 vbnv_context[EC_VBNV_BLOCK_SIZE_V2];
@@ -98,6 +104,7 @@ struct ec_state {
bool recovery_req;
uint test_flags;
struct vstore_slot slot[VSTORE_SLOT_COUNT];
+ struct ec_pwm_channel pwm[PWM_CHANNEL_COUNT];
} s_state, *g_state;
/**
@@ -554,6 +561,33 @@ static int process_cmd(struct ec_state *ec,
len = sizeof(*resp);
break;
}
+ case EC_CMD_PWM_GET_DUTY: {
+ const struct ec_params_pwm_get_duty *req = req_data;
+ struct ec_response_pwm_get_duty *resp = resp_data;
+ struct ec_pwm_channel *pwm;
+
+ if (req->pwm_type != EC_PWM_TYPE_GENERIC)
+ return -EINVAL;
+ if (req->index >= PWM_CHANNEL_COUNT)
+ return -EINVAL;
+ pwm = &ec->pwm[req->index];
+ resp->duty = pwm->duty;
+ len = sizeof(*resp);
+ break;
+ }
+ case EC_CMD_PWM_SET_DUTY: {
+ const struct ec_params_pwm_set_duty *req = req_data;
+ struct ec_pwm_channel *pwm;
+
+ if (req->pwm_type != EC_PWM_TYPE_GENERIC)
+ return -EINVAL;
+ if (req->index >= PWM_CHANNEL_COUNT)
+ return -EINVAL;
+ pwm = &ec->pwm[req->index];
+ pwm->duty = req->duty;
+ len = 0;
+ break;
+ }
default:
printf(" ** Unknown EC command %#02x\n", req_hdr->command);
return -1;
@@ -619,6 +653,19 @@ void sandbox_cros_ec_set_test_flags(struct udevice *dev, uint flags)
ec->test_flags = flags;
}
+int sandbox_cros_ec_get_pwm_duty(struct udevice *dev, uint index, uint *duty)
+{
+ struct ec_state *ec = dev_get_priv(dev);
+ struct ec_pwm_channel *pwm;
+
+ if (index >= PWM_CHANNEL_COUNT)
+ return -ENOSPC;
+ pwm = &ec->pwm[index];
+ *duty = pwm->duty;
+
+ return 0;
+}
+
int cros_ec_probe(struct udevice *dev)
{
struct ec_state *ec = dev_get_priv(dev);
diff --git a/drivers/misc/fs_loader.c b/drivers/misc/fs_loader.c
index e77b3af770..0139bd66ba 100644
--- a/drivers/misc/fs_loader.c
+++ b/drivers/misc/fs_loader.c
@@ -3,6 +3,9 @@
* Copyright (C) 2018-2019 Intel Corporation <www.intel.com>
*
*/
+
+#define LOG_CATEGORY UCLASS_FS_FIRMWARE_LOADER
+
#include <common.h>
#include <dm.h>
#include <env.h>
diff --git a/drivers/misc/i2c_eeprom.c b/drivers/misc/i2c_eeprom.c
index 5926c91a2e..3b249842f8 100644
--- a/drivers/misc/i2c_eeprom.c
+++ b/drivers/misc/i2c_eeprom.c
@@ -3,6 +3,8 @@
* Copyright (c) 2014 Google, Inc
*/
+#define LOG_CATEGORY UCLASS_I2C_EEPROM
+
#include <common.h>
#include <eeprom.h>
#include <linux/delay.h>
diff --git a/drivers/misc/misc-uclass.c b/drivers/misc/misc-uclass.c
index 55381edc98..72720b0e59 100644
--- a/drivers/misc/misc-uclass.c
+++ b/drivers/misc/misc-uclass.c
@@ -3,6 +3,8 @@
* Copyright (C) 2010 Thomas Chou <thomas@wytron.com.tw>
*/
+#define LOG_CATEGORY UCLASS_MISC
+
#include <common.h>
#include <dm.h>
#include <errno.h>
diff --git a/drivers/misc/p2sb-uclass.c b/drivers/misc/p2sb-uclass.c
index ac2852559f..94d273de9b 100644
--- a/drivers/misc/p2sb-uclass.c
+++ b/drivers/misc/p2sb-uclass.c
@@ -6,6 +6,8 @@
* Written by Simon Glass <sjg@chromium.org>
*/
+#define LOG_CATEGORY UCLASS_P2SB
+
#include <common.h>
#include <dm.h>
#include <log.h>
diff --git a/drivers/misc/pwrseq-uclass.c b/drivers/misc/pwrseq-uclass.c
index c8f6c46069..a0f24e1bf3 100644
--- a/drivers/misc/pwrseq-uclass.c
+++ b/drivers/misc/pwrseq-uclass.c
@@ -3,6 +3,8 @@
* Copyright (c) 2015 Google, Inc
*/
+#define LOG_CATEGORY UCLASS_PWRSEQ
+
#include <common.h>
#include <dm.h>
#include <pwrseq.h>
diff --git a/drivers/mmc/mmc-uclass.c b/drivers/mmc/mmc-uclass.c
index 579d7a1406..0e13238c7e 100644
--- a/drivers/mmc/mmc-uclass.c
+++ b/drivers/mmc/mmc-uclass.c
@@ -5,6 +5,8 @@
* Written by Simon Glass <sjg@chromium.org>
*/
+#define LOG_CATEGORY UCLASS_MMC
+
#include <common.h>
#include <log.h>
#include <mmc.h>
diff --git a/drivers/mtd/mtd-uclass.c b/drivers/mtd/mtd-uclass.c
index 4ab84de553..0743fe7af9 100644
--- a/drivers/mtd/mtd-uclass.c
+++ b/drivers/mtd/mtd-uclass.c
@@ -3,6 +3,8 @@
* Copyright (C) 2015 Thomas Chou <thomas@wytron.com.tw>
*/
+#define LOG_CATEGORY UCLASS_MTD
+
#include <common.h>
#include <dm.h>
#include <dm/device-internal.h>
diff --git a/drivers/mtd/spi/sf-uclass.c b/drivers/mtd/spi/sf-uclass.c
index cfce00ef54..63d16291ff 100644
--- a/drivers/mtd/spi/sf-uclass.c
+++ b/drivers/mtd/spi/sf-uclass.c
@@ -3,6 +3,8 @@
* Copyright (c) 2014 Google, Inc
*/
+#define LOG_CATEGORY UCLASS_SPI_FLASH
+
#include <common.h>
#include <dm.h>
#include <log.h>
diff --git a/drivers/mux/mux-uclass.c b/drivers/mux/mux-uclass.c
index 6d28dbe4d1..91842c5539 100644
--- a/drivers/mux/mux-uclass.c
+++ b/drivers/mux/mux-uclass.c
@@ -11,6 +11,8 @@
* Jean-Jacques Hiblot <jjhiblot@ti.com>
*/
+#define LOG_CATEGORY UCLASS_MUX
+
#include <common.h>
#include <dm.h>
#include <mux-internal.h>
diff --git a/drivers/nvme/nvme-uclass.c b/drivers/nvme/nvme-uclass.c
index 610166d76e..239a92abba 100644
--- a/drivers/nvme/nvme-uclass.c
+++ b/drivers/nvme/nvme-uclass.c
@@ -4,6 +4,8 @@
* Copyright (C) 2017 Bin Meng <bmeng.cn@gmail.com>
*/
+#define LOG_CATEGORY UCLASS_NVME
+
#include <common.h>
#include <dm.h>
diff --git a/drivers/pch/pch-uclass.c b/drivers/pch/pch-uclass.c
index ad4906aa58..7bc2372e96 100644
--- a/drivers/pch/pch-uclass.c
+++ b/drivers/pch/pch-uclass.c
@@ -4,6 +4,8 @@
* Written by Simon Glass <sjg@chromium.org>
*/
+#define LOG_CATEGORY UCLASS_PCH
+
#include <common.h>
#include <dm.h>
#include <pch.h>
diff --git a/drivers/pci/pci-uclass.c b/drivers/pci/pci-uclass.c
index afe4f1974a..cb9aa81835 100644
--- a/drivers/pci/pci-uclass.c
+++ b/drivers/pci/pci-uclass.c
@@ -4,6 +4,8 @@
* Written by Simon Glass <sjg@chromium.org>
*/
+#define LOG_CATEGORY UCLASS_PCI
+
#include <common.h>
#include <dm.h>
#include <errno.h>
diff --git a/drivers/pci_endpoint/pci_ep-uclass.c b/drivers/pci_endpoint/pci_ep-uclass.c
index 5555cf5a8c..6ee4cfbdb4 100644
--- a/drivers/pci_endpoint/pci_ep-uclass.c
+++ b/drivers/pci_endpoint/pci_ep-uclass.c
@@ -9,6 +9,8 @@
* Written by Ramon Fried <ramon.fried@gmail.com>
*/
+#define LOG_CATEGORY UCLASS_PCI_EP
+
#include <common.h>
#include <dm.h>
#include <errno.h>
diff --git a/drivers/phy/phy-uclass.c b/drivers/phy/phy-uclass.c
index 43ffbcee0f..59683a080c 100644
--- a/drivers/phy/phy-uclass.c
+++ b/drivers/phy/phy-uclass.c
@@ -4,6 +4,8 @@
* Written by Jean-Jacques Hiblot <jjhiblot@ti.com>
*/
+#define LOG_CATEGORY UCLASS_PHY
+
#include <common.h>
#include <dm.h>
#include <dm/device_compat.h>
diff --git a/drivers/pinctrl/pinctrl-uclass.c b/drivers/pinctrl/pinctrl-uclass.c
index 6e68e52c32..ea7275ca00 100644
--- a/drivers/pinctrl/pinctrl-uclass.c
+++ b/drivers/pinctrl/pinctrl-uclass.c
@@ -3,6 +3,8 @@
* Copyright (C) 2015 Masahiro Yamada <yamada.masahiro@socionext.com>
*/
+#define LOG_CATEGORY UCLASS_PINCTRL
+
#include <common.h>
#include <malloc.h>
#include <asm/global_data.h>
diff --git a/drivers/power/domain/power-domain-uclass.c b/drivers/power/domain/power-domain-uclass.c
index af829db9da..00d1489ea2 100644
--- a/drivers/power/domain/power-domain-uclass.c
+++ b/drivers/power/domain/power-domain-uclass.c
@@ -3,6 +3,8 @@
* Copyright (c) 2016, NVIDIA CORPORATION.
*/
+#define LOG_CATEGORY UCLASS_POWER_DOMAIN
+
#include <common.h>
#include <dm.h>
#include <log.h>
diff --git a/drivers/power/pmic/pmic-uclass.c b/drivers/power/pmic/pmic-uclass.c
index 79166b8bbc..5dcf6d8079 100644
--- a/drivers/power/pmic/pmic-uclass.c
+++ b/drivers/power/pmic/pmic-uclass.c
@@ -4,6 +4,8 @@
* Przemyslaw Marczak <p.marczak@samsung.com>
*/
+#define LOG_CATEGORY UCLASS_PMIC
+
#include <common.h>
#include <fdtdec.h>
#include <errno.h>
diff --git a/drivers/power/regulator/regulator-uclass.c b/drivers/power/regulator/regulator-uclass.c
index fac9606823..aca00e56bb 100644
--- a/drivers/power/regulator/regulator-uclass.c
+++ b/drivers/power/regulator/regulator-uclass.c
@@ -4,6 +4,8 @@
* Przemyslaw Marczak <p.marczak@samsung.com>
*/
+#define LOG_CATEGORY UCLASS_REGULATOR
+
#include <common.h>
#include <errno.h>
#include <dm.h>
diff --git a/drivers/pwm/pwm-uclass.c b/drivers/pwm/pwm-uclass.c
index 027181c646..648d0757ba 100644
--- a/drivers/pwm/pwm-uclass.c
+++ b/drivers/pwm/pwm-uclass.c
@@ -4,6 +4,8 @@
* Written by Simon Glass <sjg@chromium.org>
*/
+#define LOG_CATEGORY UCLASS_PWM
+
#include <common.h>
#include <dm.h>
#include <pwm.h>
diff --git a/drivers/ram/ram-uclass.c b/drivers/ram/ram-uclass.c
index f4d387fed1..4e21240fd4 100644
--- a/drivers/ram/ram-uclass.c
+++ b/drivers/ram/ram-uclass.c
@@ -4,6 +4,8 @@
* Written by Simon Glass <sjg@chromium.org>
*/
+#define LOG_CATEGORY UCLASS_RAM
+
#include <common.h>
#include <ram.h>
#include <dm.h>
diff --git a/drivers/remoteproc/rproc-uclass.c b/drivers/remoteproc/rproc-uclass.c
index 5919c8bb97..64c47c1e72 100644
--- a/drivers/remoteproc/rproc-uclass.c
+++ b/drivers/remoteproc/rproc-uclass.c
@@ -3,6 +3,9 @@
* (C) Copyright 2015
* Texas Instruments Incorporated - http://www.ti.com/
*/
+
+#define LOG_CATEGORY UCLASS_REMOTEPROC
+
#define pr_fmt(fmt) "%s: " fmt, __func__
#include <common.h>
#include <errno.h>
diff --git a/drivers/reset/reset-uclass.c b/drivers/reset/reset-uclass.c
index ac89eaf098..8caa616ed9 100644
--- a/drivers/reset/reset-uclass.c
+++ b/drivers/reset/reset-uclass.c
@@ -3,6 +3,8 @@
* Copyright (c) 2016, NVIDIA CORPORATION.
*/
+#define LOG_CATEGORY UCLASS_RESET
+
#include <common.h>
#include <dm.h>
#include <fdtdec.h>
diff --git a/drivers/rng/rng-uclass.c b/drivers/rng/rng-uclass.c
index b6af3b8606..53108e1b31 100644
--- a/drivers/rng/rng-uclass.c
+++ b/drivers/rng/rng-uclass.c
@@ -3,6 +3,8 @@
* Copyright (c) 2019, Linaro Limited
*/
+#define LOG_CATEGORY UCLASS_RNG
+
#include <common.h>
#include <dm.h>
#include <rng.h>
diff --git a/drivers/rtc/rtc-uclass.c b/drivers/rtc/rtc-uclass.c
index b406bab32d..be6a2ddb66 100644
--- a/drivers/rtc/rtc-uclass.c
+++ b/drivers/rtc/rtc-uclass.c
@@ -4,6 +4,8 @@
* Written by Simon Glass <sjg@chromium.org>
*/
+#define LOG_CATEGORY UCLASS_RTC
+
#include <common.h>
#include <dm.h>
#include <errno.h>
diff --git a/drivers/scsi/scsi-uclass.c b/drivers/scsi/scsi-uclass.c
index 90a0adda47..a7c1eaf0cf 100644
--- a/drivers/scsi/scsi-uclass.c
+++ b/drivers/scsi/scsi-uclass.c
@@ -8,6 +8,8 @@
* Based on ahci-uclass.c
*/
+#define LOG_CATEGORY UCLASS_SCSI
+
#include <common.h>
#include <dm.h>
#include <scsi.h>
diff --git a/drivers/serial/serial-uclass.c b/drivers/serial/serial-uclass.c
index 8a87eed683..2b4feace53 100644
--- a/drivers/serial/serial-uclass.c
+++ b/drivers/serial/serial-uclass.c
@@ -3,6 +3,8 @@
* Copyright (c) 2014 The Chromium OS Authors.
*/
+#define LOG_CATEGORY UCLASS_SERIAL
+
#include <common.h>
#include <dm.h>
#include <env_internal.h>
diff --git a/drivers/smem/smem-uclass.c b/drivers/smem/smem-uclass.c
index ce7bf40656..8469076915 100644
--- a/drivers/smem/smem-uclass.c
+++ b/drivers/smem/smem-uclass.c
@@ -3,6 +3,8 @@
* Copyright (c) 2018 Ramon Fried <ramon.fried@gmail.com>
*/
+#define LOG_CATEGORY UCLASS_SMEM
+
#include <common.h>
#include <dm.h>
#include <smem.h>
diff --git a/drivers/soc/soc-uclass.c b/drivers/soc/soc-uclass.c
index c32d647864..dfad32d80d 100644
--- a/drivers/soc/soc-uclass.c
+++ b/drivers/soc/soc-uclass.c
@@ -4,6 +4,8 @@
* Dave Gerlach <d-gerlach@ti.com>
*/
+#define LOG_CATEGORY UCLASS_SOC
+
#include <common.h>
#include <soc.h>
#include <dm.h>
diff --git a/drivers/sound/codec-uclass.c b/drivers/sound/codec-uclass.c
index 1ec77acfc1..2cb233bd30 100644
--- a/drivers/sound/codec-uclass.c
+++ b/drivers/sound/codec-uclass.c
@@ -4,6 +4,8 @@
* Written by Simon Glass <sjg@chromium.org>
*/
+#define LOG_CATEGORY UCLASS_AUDIO_CODEC
+
#include <common.h>
#include <dm.h>
#include <audio_codec.h>
diff --git a/drivers/sound/i2s-uclass.c b/drivers/sound/i2s-uclass.c
index 2639c86ea2..fc4f686b51 100644
--- a/drivers/sound/i2s-uclass.c
+++ b/drivers/sound/i2s-uclass.c
@@ -4,6 +4,8 @@
* Written by Simon Glass <sjg@chromium.org>
*/
+#define LOG_CATEGORY UCLASS_I2S
+
#include <common.h>
#include <dm.h>
#include <i2s.h>
diff --git a/drivers/sound/sound-uclass.c b/drivers/sound/sound-uclass.c
index 0c71e01f33..2ffc4fc7c1 100644
--- a/drivers/sound/sound-uclass.c
+++ b/drivers/sound/sound-uclass.c
@@ -4,6 +4,8 @@
* Written by Simon Glass <sjg@chromium.org>
*/
+#define LOG_CATEGORY UCLASS_SOUND
+
#include <common.h>
#include <dm.h>
#include <i2s.h>
diff --git a/drivers/spi/spi-emul-uclass.c b/drivers/spi/spi-emul-uclass.c
index 52f3f9a011..64bc19c001 100644
--- a/drivers/spi/spi-emul-uclass.c
+++ b/drivers/spi/spi-emul-uclass.c
@@ -3,6 +3,8 @@
* Copyright (c) 2014 Google, Inc
*/
+#define LOG_CATEGORY UCLASS_SPI_EMUL
+
#include <common.h>
#include <dm.h>
#include <spi.h>
diff --git a/drivers/spmi/spmi-uclass.c b/drivers/spmi/spmi-uclass.c
index ff098731bb..9d9f46a37d 100644
--- a/drivers/spmi/spmi-uclass.c
+++ b/drivers/spmi/spmi-uclass.c
@@ -5,6 +5,8 @@
* (C) Copyright 2015 Mateusz Kulikowski <mateusz.kulikowski@gmail.com>
*/
+#define LOG_CATEGORY UCLASS_SPMI
+
#include <common.h>
#include <dm.h>
#include <errno.h>
diff --git a/drivers/sysinfo/sysinfo-uclass.c b/drivers/sysinfo/sysinfo-uclass.c
index 4a660dfd15..c5cc3cb959 100644
--- a/drivers/sysinfo/sysinfo-uclass.c
+++ b/drivers/sysinfo/sysinfo-uclass.c
@@ -4,6 +4,8 @@
* Mario Six, Guntermann & Drunck GmbH, mario.six@gdsys.cc
*/
+#define LOG_CATEGORY UCLASS_SYSINFO
+
#include <common.h>
#include <dm.h>
#include <sysinfo.h>
diff --git a/drivers/tee/tee-uclass.c b/drivers/tee/tee-uclass.c
index 2cc6b6c407..cb1b28e2f8 100644
--- a/drivers/tee/tee-uclass.c
+++ b/drivers/tee/tee-uclass.c
@@ -3,6 +3,8 @@
* Copyright (c) 2018 Linaro Limited
*/
+#define LOG_CATEGORY UCLASS_TEE
+
#include <common.h>
#include <dm.h>
#include <log.h>
diff --git a/drivers/thermal/thermal-uclass.c b/drivers/thermal/thermal-uclass.c
index a4ea1e2914..700df8af25 100644
--- a/drivers/thermal/thermal-uclass.c
+++ b/drivers/thermal/thermal-uclass.c
@@ -3,6 +3,8 @@
* (C) Copyright 2014 Freescale Semiconductor, Inc
*/
+#define LOG_CATEGORY UCLASS_THERMAL
+
#include <common.h>
#include <dm.h>
#include <thermal.h>
diff --git a/drivers/timer/timer-uclass.c b/drivers/timer/timer-uclass.c
index 73b4a5cd27..c8e8419b22 100644
--- a/drivers/timer/timer-uclass.c
+++ b/drivers/timer/timer-uclass.c
@@ -3,6 +3,8 @@
* Copyright (C) 2015 Thomas Chou <thomas@wytron.com.tw>
*/
+#define LOG_CATEGORY UCLASS_TIMER
+
#include <common.h>
#include <clk.h>
#include <cpu.h>
diff --git a/drivers/ufs/ufs-uclass.c b/drivers/ufs/ufs-uclass.c
index 034d14fd8d..ceea30c4a9 100644
--- a/drivers/ufs/ufs-uclass.c
+++ b/drivers/ufs/ufs-uclass.c
@@ -5,6 +5,8 @@
* Copyright (C) 2019 Texas Instruments Incorporated - http://www.ti.com
*/
+#define LOG_CATEGORY UCLASS_UFS
+
#include <common.h>
#include "ufs.h"
#include <dm.h>
diff --git a/drivers/usb/emul/usb-emul-uclass.c b/drivers/usb/emul/usb-emul-uclass.c
index f5d98b917d..05f6d3d9e2 100644
--- a/drivers/usb/emul/usb-emul-uclass.c
+++ b/drivers/usb/emul/usb-emul-uclass.c
@@ -4,6 +4,8 @@
* Written by Simon Glass <sjg@chromium.org>
*/
+#define LOG_CATEGORY UCLASS_USB_EMUL
+
#include <common.h>
#include <dm.h>
#include <log.h>
diff --git a/drivers/usb/gadget/udc/udc-uclass.c b/drivers/usb/gadget/udc/udc-uclass.c
index dbc354e84f..de8861829c 100644
--- a/drivers/usb/gadget/udc/udc-uclass.c
+++ b/drivers/usb/gadget/udc/udc-uclass.c
@@ -4,6 +4,8 @@
* Written by Jean-Jacques Hiblot <jjhiblot@ti.com>
*/
+#define LOG_CATEGORY UCLASS_USB_GADGET_GENERIC
+
#include <common.h>
#include <dm.h>
#include <dm/device-internal.h>
diff --git a/drivers/usb/host/usb-uclass.c b/drivers/usb/host/usb-uclass.c
index e3b616c326..fd39c3345c 100644
--- a/drivers/usb/host/usb-uclass.c
+++ b/drivers/usb/host/usb-uclass.c
@@ -6,6 +6,8 @@
* usb_match_device() modified from Linux kernel v4.0.
*/
+#define LOG_CATEGORY UCLASS_USB
+
#include <common.h>
#include <dm.h>
#include <errno.h>
diff --git a/drivers/video/backlight-uclass.c b/drivers/video/backlight-uclass.c
index 0aadf8a1f9..c14996d003 100644
--- a/drivers/video/backlight-uclass.c
+++ b/drivers/video/backlight-uclass.c
@@ -4,6 +4,8 @@
* Written by Simon Glass <sjg@chromium.org>
*/
+#define LOG_CATEGORY UCLASS_PANEL_BACKLIGHT
+
#include <common.h>
#include <dm.h>
#include <backlight.h>
diff --git a/drivers/video/bridge/video-bridge-uclass.c b/drivers/video/bridge/video-bridge-uclass.c
index 08d38b244b..f389bc6b14 100644
--- a/drivers/video/bridge/video-bridge-uclass.c
+++ b/drivers/video/bridge/video-bridge-uclass.c
@@ -4,6 +4,8 @@
* Written by Simon Glass <sjg@chromium.org>
*/
+#define LOG_CATEGORY UCLASS_VIDEO_BRIDGE
+
#include <common.h>
#include <dm.h>
#include <errno.h>
diff --git a/drivers/video/display-uclass.c b/drivers/video/display-uclass.c
index 068108e915..2da3d1d14e 100644
--- a/drivers/video/display-uclass.c
+++ b/drivers/video/display-uclass.c
@@ -3,6 +3,8 @@
* Copyright 2014 Google Inc.
*/
+#define LOG_CATEGORY UCLASS_DISPLAY
+
#include <common.h>
#include <dm.h>
#include <display.h>
diff --git a/drivers/video/dsi-host-uclass.c b/drivers/video/dsi-host-uclass.c
index 1db1f88a17..6e5256eb12 100644
--- a/drivers/video/dsi-host-uclass.c
+++ b/drivers/video/dsi-host-uclass.c
@@ -5,6 +5,8 @@
*
*/
+#define LOG_CATEGORY UCLASS_DSI_HOST
+
#include <common.h>
#include <dm.h>
#include <dsi_host.h>
diff --git a/drivers/video/panel-uclass.c b/drivers/video/panel-uclass.c
index 246d1b2836..bb2eaae2e9 100644
--- a/drivers/video/panel-uclass.c
+++ b/drivers/video/panel-uclass.c
@@ -4,6 +4,8 @@
* Written by Simon Glass <sjg@chromium.org>
*/
+#define LOG_CATEGORY UCLASS_PANEL
+
#include <common.h>
#include <dm.h>
#include <panel.h>
diff --git a/drivers/video/vidconsole-uclass.c b/drivers/video/vidconsole-uclass.c
index 81b65f5aae..8f7d987cdd 100644
--- a/drivers/video/vidconsole-uclass.c
+++ b/drivers/video/vidconsole-uclass.c
@@ -7,6 +7,8 @@
* Bernecker & Rainer Industrieelektronik GmbH - http://www.br-automation.com
*/
+#define LOG_CATEGORY UCLASS_VIDEO_CONSOLE
+
#include <common.h>
#include <command.h>
#include <console.h>
diff --git a/drivers/video/video-uclass.c b/drivers/video/video-uclass.c
index 96ec6f80af..9f8cf6ef2a 100644
--- a/drivers/video/video-uclass.c
+++ b/drivers/video/video-uclass.c
@@ -3,6 +3,8 @@
* Copyright (c) 2015 Google, Inc
*/
+#define LOG_CATEGORY UCLASS_VIDEO
+
#include <common.h>
#include <console.h>
#include <cpu_func.h>
diff --git a/drivers/video/video_osd-uclass.c b/drivers/video/video_osd-uclass.c
index 82136a292b..0d3aae4d82 100644
--- a/drivers/video/video_osd-uclass.c
+++ b/drivers/video/video_osd-uclass.c
@@ -4,6 +4,8 @@
* Mario Six, Guntermann & Drunck GmbH, mario.six@gdsys.cc
*/
+#define LOG_CATEGORY UCLASS_VIDEO_OSD
+
#include <common.h>
#include <dm.h>
#include <video_osd.h>
diff --git a/drivers/virtio/virtio-uclass.c b/drivers/virtio/virtio-uclass.c
index 0379536c54..9e2d0e06a1 100644
--- a/drivers/virtio/virtio-uclass.c
+++ b/drivers/virtio/virtio-uclass.c
@@ -15,6 +15,8 @@
* the VirtIO specification v1.0.
*/
+#define LOG_CATEGORY UCLASS_VIRTIO
+
#include <common.h>
#include <dm.h>
#include <log.h>
diff --git a/drivers/w1-eeprom/w1-eeprom-uclass.c b/drivers/w1-eeprom/w1-eeprom-uclass.c
index 7a02af3dd6..70ba537243 100644
--- a/drivers/w1-eeprom/w1-eeprom-uclass.c
+++ b/drivers/w1-eeprom/w1-eeprom-uclass.c
@@ -10,6 +10,8 @@
*
*/
+#define LOG_CATEGORY UCLASS_W1_EEPROM
+
#include <common.h>
#include <dm.h>
#include <log.h>
diff --git a/drivers/w1/w1-uclass.c b/drivers/w1/w1-uclass.c
index b98927389f..52b519c21d 100644
--- a/drivers/w1/w1-uclass.c
+++ b/drivers/w1/w1-uclass.c
@@ -12,6 +12,8 @@
*
*/
+#define LOG_CATEGORY UCLASS_W1
+
#include <common.h>
#include <dm.h>
#include <log.h>
diff --git a/drivers/watchdog/wdt-uclass.c b/drivers/watchdog/wdt-uclass.c
index 2687135296..a0c2429e5a 100644
--- a/drivers/watchdog/wdt-uclass.c
+++ b/drivers/watchdog/wdt-uclass.c
@@ -3,6 +3,8 @@
* Copyright 2017 Google, Inc
*/
+#define LOG_CATEGORY UCLASS_WDT
+
#include <common.h>
#include <dm.h>
#include <errno.h>
diff --git a/drivers/xen/pvblock.c b/drivers/xen/pvblock.c
index 1c5d039ef0..c25c3ea4ff 100644
--- a/drivers/xen/pvblock.c
+++ b/drivers/xen/pvblock.c
@@ -3,6 +3,9 @@
* (C) 2007-2008 Samuel Thibault.
* (C) Copyright 2020 EPAM Systems Inc.
*/
+
+#define LOG_CATEGORY UCLASS_PVBLOCK
+
#include <blk.h>
#include <common.h>
#include <dm.h>
diff --git a/include/dm/uclass.h b/include/dm/uclass.h
index 6752d8ee0b..2778818b52 100644
--- a/include/dm/uclass.h
+++ b/include/dm/uclass.h
@@ -84,8 +84,6 @@ struct udevice;
* its children. If non-zero this is the size of this data, to be allocated
* in the child device's parent_plat pointer. This value is only used as
* a fallback if this member is 0 in the driver.
- * @ops: Uclass operations, providing the consistent interface to devices
- * within the uclass.
* @flags: Flags for this uclass (DM_UC_...)
*/
struct uclass_driver {
@@ -106,7 +104,6 @@ struct uclass_driver {
int per_device_plat_auto;
int per_child_auto;
int per_child_plat_auto;
- const void *ops;
uint32_t flags;
};
diff --git a/test/cmd/pwm.c b/test/cmd/pwm.c
index 5343af83fa..2fc0b5e407 100644
--- a/test/cmd/pwm.c
+++ b/test/cmd/pwm.c
@@ -18,16 +18,20 @@ static int dm_test_pwm_cmd(struct unit_test_state *uts)
{
struct udevice *dev;
+ /* cros-ec-pwm */
ut_assertok(uclass_get_device(UCLASS_PWM, 0, &dev));
ut_assertnonnull(dev);
ut_assertok(console_record_reset_enable());
/* pwm <invert> <pwm_dev_num> <channel> <polarity> */
- ut_assertok(run_command("pwm invert 0 0 1", 0));
+ /* cros-ec-pwm doesn't support invert */
+ ut_asserteq(1, run_command("pwm invert 0 0 1", 0));
+ ut_assert_nextline("error(-38)")
ut_assert_console_end();
- ut_assertok(run_command("pwm invert 0 0 0", 0));
+ ut_asserteq(1, run_command("pwm invert 0 0 0", 0));
+ ut_assert_nextline("error(-38)")
ut_assert_console_end();
/* pwm <config> <pwm_dev_num> <channel> <period_ns> <duty_ns> */
@@ -41,6 +45,30 @@ static int dm_test_pwm_cmd(struct unit_test_state *uts)
ut_assertok(run_command("pwm disable 0 0", 0));
ut_assert_console_end();
+ /* sandbox-pwm */
+ ut_assertok(uclass_get_device(UCLASS_PWM, 1, &dev));
+ ut_assertnonnull(dev);
+
+ ut_assertok(console_record_reset_enable());
+
+ /* pwm <invert> <pwm_dev_num> <channel> <polarity> */
+ ut_assertok(run_command("pwm invert 1 0 1", 0));
+ ut_assert_console_end();
+
+ ut_assertok(run_command("pwm invert 1 0 0", 0));
+ ut_assert_console_end();
+
+ /* pwm <config> <pwm_dev_num> <channel> <period_ns> <duty_ns> */
+ ut_assertok(run_command("pwm config 1 0 10 50", 0));
+ ut_assert_console_end();
+
+ /* pwm <enable/disable> <pwm_dev_num> <channel> */
+ ut_assertok(run_command("pwm enable 1 0", 0));
+ ut_assert_console_end();
+
+ ut_assertok(run_command("pwm disable 1 0", 0));
+ ut_assert_console_end();
+
return 0;
}
diff --git a/test/dm/Makefile b/test/dm/Makefile
index c9644617a1..9ef9171a1c 100644
--- a/test/dm/Makefile
+++ b/test/dm/Makefile
@@ -30,6 +30,7 @@ obj-$(CONFIG_DM_BOOTCOUNT) += bootcount.o
obj-$(CONFIG_CLK) += clk.o clk_ccf.o
obj-$(CONFIG_CPU) += cpu.o
obj-$(CONFIG_CROS_EC) += cros_ec.o
+obj-$(CONFIG_PWM_CROS_EC) += cros_ec_pwm.o
obj-$(CONFIG_DEVRES) += devres.o
obj-$(CONFIG_DMA) += dma.o
obj-$(CONFIG_VIDEO_MIPI_DSI) += dsi_host.o
diff --git a/test/dm/cros_ec_pwm.c b/test/dm/cros_ec_pwm.c
new file mode 100644
index 0000000000..f8d6e1e6c4
--- /dev/null
+++ b/test/dm/cros_ec_pwm.c
@@ -0,0 +1,60 @@
+// SPDX-License-Identifier: GPL-2.0+
+
+#include <common.h>
+#include <cros_ec.h>
+#include <dm.h>
+#include <pwm.h>
+#include <asm/test.h>
+#include <dm/test.h>
+#include <test/test.h>
+#include <test/ut.h>
+
+static int dm_test_cros_ec_pwm(struct unit_test_state *uts)
+{
+ struct udevice *pwm;
+ struct udevice *ec;
+ uint duty;
+
+ ut_assertok(uclass_get_device_by_name(UCLASS_PWM, "cros-ec-pwm", &pwm));
+ ut_assertnonnull(pwm);
+ ec = dev_get_parent(pwm);
+ ut_assertnonnull(ec);
+
+ ut_assertok(pwm_set_config(pwm, 0, 100, 50));
+ ut_assertok(pwm_set_enable(pwm, 0, true));
+ ut_assertok(sandbox_cros_ec_get_pwm_duty(ec, 0, &duty));
+ ut_asserteq(50 * EC_PWM_MAX_DUTY / 100, duty);
+
+ ut_assertok(pwm_set_config(pwm, 0, 15721, 2719));
+ ut_assertok(pwm_set_enable(pwm, 0, true));
+ ut_assertok(sandbox_cros_ec_get_pwm_duty(ec, 0, &duty));
+ ut_asserteq(2719 * EC_PWM_MAX_DUTY / 15721, duty);
+
+ ut_assertok(pwm_set_enable(pwm, 0, false));
+ ut_assertok(sandbox_cros_ec_get_pwm_duty(ec, 0, &duty));
+ ut_asserteq(0, duty);
+
+ ut_assertok(pwm_set_enable(pwm, 0, true));
+ ut_assertok(sandbox_cros_ec_get_pwm_duty(ec, 0, &duty));
+ ut_asserteq(2719 * EC_PWM_MAX_DUTY / 15721, duty);
+
+ ut_assertok(pwm_set_config(pwm, 1, 1000, 0));
+ ut_assertok(pwm_set_enable(pwm, 1, true));
+ ut_assertok(sandbox_cros_ec_get_pwm_duty(ec, 1, &duty));
+ ut_asserteq(0, duty);
+
+ ut_assertok(pwm_set_config(pwm, 2, 1000, 1024));
+ ut_assertok(pwm_set_enable(pwm, 2, true));
+ ut_assertok(sandbox_cros_ec_get_pwm_duty(ec, 2, &duty));
+ ut_asserteq(EC_PWM_MAX_DUTY, duty);
+
+ ut_assertok(pwm_set_config(pwm, 3, EC_PWM_MAX_DUTY, 0xABCD));
+ ut_assertok(pwm_set_enable(pwm, 3, true));
+ ut_assertok(sandbox_cros_ec_get_pwm_duty(ec, 3, &duty));
+ ut_asserteq(0xABCD, duty);
+
+ ut_asserteq(-EINVAL, pwm_set_enable(pwm, 4, true));
+
+ return 0;
+}
+DM_TEST(dm_test_cros_ec_pwm, UT_TESTF_SCAN_PDATA | UT_TESTF_SCAN_FDT);
diff --git a/test/dm/panel.c b/test/dm/panel.c
index 49f5ac7169..4d435a0d25 100644
--- a/test/dm/panel.c
+++ b/test/dm/panel.c
@@ -28,7 +28,7 @@ static int dm_test_panel(struct unit_test_state *uts)
bool polarity;
ut_assertok(uclass_first_device_err(UCLASS_PANEL, &dev));
- ut_assertok(uclass_first_device_err(UCLASS_PWM, &pwm));
+ ut_assertok(uclass_get_device_by_name(UCLASS_PWM, "pwm", &pwm));
ut_assertok(uclass_get_device(UCLASS_GPIO, 1, &gpio));
ut_assertok(regulator_get_by_platname("VDD_EMMC_1.8V", &reg));
ut_assertok(sandbox_pwm_get_config(pwm, 0, &period_ns, &duty_ns,
diff --git a/test/dm/pwm.c b/test/dm/pwm.c
index b624cf3d65..dff626c771 100644
--- a/test/dm/pwm.c
+++ b/test/dm/pwm.c
@@ -20,7 +20,7 @@ static int dm_test_pwm_base(struct unit_test_state *uts)
bool enable;
bool polarity;
- ut_assertok(uclass_get_device(UCLASS_PWM, 0, &dev));
+ ut_assertok(uclass_get_device_by_name(UCLASS_PWM, "pwm", &dev));
ut_assertnonnull(dev);
ut_assertok(pwm_set_config(dev, 0, 100, 50));
ut_assertok(pwm_set_enable(dev, 0, true));
@@ -35,8 +35,10 @@ static int dm_test_pwm_base(struct unit_test_state *uts)
ut_asserteq(period_ns, 4096);
ut_asserteq(duty_ns, 50 * 4096 / 100);
+ ut_assertok(uclass_get_device(UCLASS_PWM, 0, &dev));
ut_assertok(uclass_get_device(UCLASS_PWM, 1, &dev));
- ut_asserteq(-ENODEV, uclass_get_device(UCLASS_PWM, 2, &dev));
+ ut_assertok(uclass_get_device(UCLASS_PWM, 2, &dev));
+ ut_asserteq(-ENODEV, uclass_get_device(UCLASS_PWM, 3, &dev));
return 0;
}
diff --git a/tools/patman/tools.py b/tools/patman/tools.py
index e5f391b7aa..ec95a543bd 100644
--- a/tools/patman/tools.py
+++ b/tools/patman/tools.py
@@ -292,8 +292,6 @@ def GetTargetCompileTool(name, cross_compile=None):
if cross_compile is None:
cross_compile = env.get('CROSS_COMPILE', '')
- if not cross_compile:
- return name, []
if name in ('as', 'ar', 'nm', 'ldr', 'strip', 'objcopy', 'objdump'):
target_name = cross_compile + name