summaryrefslogtreecommitdiff
path: root/drivers
diff options
context:
space:
mode:
authorTom Rini <[email protected]>2021-07-22 11:15:52 -0400
committerTom Rini <[email protected]>2021-07-22 11:15:52 -0400
commita15fa1ba67d7b3c8061b515e7713f733fa328018 (patch)
treef7746e2e7a3410043e9ea3f3f7c0a97e2c5e6dbb /drivers
parent806734f41b25931798fdf667b5a2ae830229c13f (diff)
parent1b098b3e655451572054ce933a87231ee16f7133 (diff)
Merge tag 'dm-pull-21jul21' of https://gitlab.denx.de/u-boot/custodians/u-boot-dm
dtoc improvements to show better warnings minor test build fixes sandbox fixes for SDL2 and running TPL bloblist resize feature binman multithreading
Diffstat (limited to 'drivers')
-rw-r--r--drivers/block/blk-uclass.c49
-rw-r--r--drivers/core/device.c4
-rw-r--r--drivers/core/of_extra.c2
-rw-r--r--drivers/core/ofnode.c6
-rw-r--r--drivers/misc/cros_ec.c28
-rw-r--r--drivers/misc/cros_ec_sandbox.c29
-rw-r--r--drivers/mmc/sandbox_mmc.c24
7 files changed, 109 insertions, 33 deletions
diff --git a/drivers/block/blk-uclass.c b/drivers/block/blk-uclass.c
index dfc0d469702..83682dcc181 100644
--- a/drivers/block/blk-uclass.c
+++ b/drivers/block/blk-uclass.c
@@ -540,6 +540,55 @@ int blk_next_free_devnum(enum if_type if_type)
return ret + 1;
}
+static int blk_flags_check(struct udevice *dev, enum blk_flag_t req_flags)
+{
+ const struct blk_desc *desc = dev_get_uclass_plat(dev);
+ enum blk_flag_t flags;
+
+ flags = desc->removable ? BLKF_REMOVABLE : BLKF_FIXED;
+
+ return flags & req_flags ? 0 : 1;
+}
+
+int blk_first_device_err(enum blk_flag_t flags, struct udevice **devp)
+{
+ int ret;
+
+ for (ret = uclass_first_device_err(UCLASS_BLK, devp);
+ !ret;
+ ret = uclass_next_device_err(devp)) {
+ if (!blk_flags_check(*devp, flags))
+ return 0;
+ }
+
+ return -ENODEV;
+}
+
+int blk_next_device_err(enum blk_flag_t flags, struct udevice **devp)
+{
+ int ret;
+
+ for (ret = uclass_next_device_err(devp);
+ !ret;
+ ret = uclass_next_device_err(devp)) {
+ if (!blk_flags_check(*devp, flags))
+ return 0;
+ }
+
+ return -ENODEV;
+}
+
+int blk_count_devices(enum blk_flag_t flag)
+{
+ struct udevice *dev;
+ int count = 0;
+
+ blk_foreach_probe(flag, dev)
+ count++;
+
+ return count;
+}
+
static int blk_claim_devnum(enum if_type if_type, int devnum)
{
struct udevice *dev;
diff --git a/drivers/core/device.c b/drivers/core/device.c
index 9f1400768de..29668f6fb30 100644
--- a/drivers/core/device.c
+++ b/drivers/core/device.c
@@ -87,8 +87,10 @@ static int device_bind_common(struct udevice *parent, const struct driver *drv,
if (CONFIG_IS_ENABLED(OF_CONTROL) &&
!CONFIG_IS_ENABLED(OF_PLATDATA)) {
if (uc->uc_drv->name && ofnode_valid(node)) {
- if (!dev_read_alias_seq(dev, &dev->seq_))
+ if (!dev_read_alias_seq(dev, &dev->seq_)) {
auto_seq = false;
+ log_debug(" - seq=%d\n", dev->seq_);
+ }
}
}
}
diff --git a/drivers/core/of_extra.c b/drivers/core/of_extra.c
index 7702beff97b..632a1c2210e 100644
--- a/drivers/core/of_extra.c
+++ b/drivers/core/of_extra.c
@@ -31,6 +31,8 @@ int ofnode_read_fmap_entry(ofnode node, struct fmap_entry *entry)
if (prop) {
if (!strcmp(prop, "lz4"))
entry->compress_algo = FMAP_COMPRESS_LZ4;
+ else if (!strcmp(prop, "lzma"))
+ entry->compress_algo = FMAP_COMPRESS_LZMA;
else
return log_msg_ret("compression algo", -EINVAL);
} else {
diff --git a/drivers/core/ofnode.c b/drivers/core/ofnode.c
index eeeccfb4467..dda6c76e834 100644
--- a/drivers/core/ofnode.c
+++ b/drivers/core/ofnode.c
@@ -329,7 +329,8 @@ static fdt_addr_t __ofnode_get_addr_size_index(ofnode node, int index,
{
int na, ns;
- *size = FDT_SIZE_T_NONE;
+ if (size)
+ *size = FDT_SIZE_T_NONE;
if (ofnode_is_np(node)) {
const __be32 *prop_val;
@@ -340,6 +341,7 @@ static fdt_addr_t __ofnode_get_addr_size_index(ofnode node, int index,
&flags);
if (!prop_val)
return FDT_ADDR_T_NONE;
+
if (size)
*size = size64;
@@ -359,8 +361,6 @@ static fdt_addr_t __ofnode_get_addr_size_index(ofnode node, int index,
index, na, ns, size,
translate);
}
-
- return FDT_ADDR_T_NONE;
}
fdt_addr_t ofnode_get_addr_size_index(ofnode node, int index, fdt_size_t *size)
diff --git a/drivers/misc/cros_ec.c b/drivers/misc/cros_ec.c
index 7904d5cc72d..2a15094d20a 100644
--- a/drivers/misc/cros_ec.c
+++ b/drivers/misc/cros_ec.c
@@ -754,17 +754,6 @@ int cros_ec_flash_protect(struct udevice *dev, uint32_t set_mask,
return 0;
}
-int cros_ec_entering_mode(struct udevice *dev, int mode)
-{
- int rc;
-
- rc = ec_command(dev, EC_CMD_ENTERING_MODE, 0, &mode, sizeof(mode),
- NULL, 0);
- if (rc)
- return -1;
- return 0;
-}
-
static int cros_ec_check_version(struct udevice *dev)
{
struct cros_ec_dev *cdev = dev_get_uclass_priv(dev);
@@ -1661,6 +1650,23 @@ int cros_ec_get_switches(struct udevice *dev)
return ret;
}
+int cros_ec_read_batt_charge(struct udevice *dev, uint *chargep)
+{
+ struct ec_params_charge_state req;
+ struct ec_response_charge_state resp;
+ int ret;
+
+ req.cmd = CHARGE_STATE_CMD_GET_STATE;
+ ret = ec_command(dev, EC_CMD_CHARGE_STATE, 0, &req, sizeof(req),
+ &resp, sizeof(resp));
+ if (ret)
+ return log_msg_ret("read", ret);
+
+ *chargep = resp.get_state.batt_state_of_charge;
+
+ return 0;
+}
+
UCLASS_DRIVER(cros_ec) = {
.id = UCLASS_CROS_EC,
.name = "cros-ec",
diff --git a/drivers/misc/cros_ec_sandbox.c b/drivers/misc/cros_ec_sandbox.c
index beea47caa33..2173517cff3 100644
--- a/drivers/misc/cros_ec_sandbox.c
+++ b/drivers/misc/cros_ec_sandbox.c
@@ -343,15 +343,13 @@ static int process_cmd(struct ec_state *ec,
switch (req->op) {
case EC_VBNV_CONTEXT_OP_READ:
- /* TODO([email protected]): Support full-size context */
memcpy(resp->block, ec->vbnv_context,
- EC_VBNV_BLOCK_SIZE);
- len = 16;
+ EC_VBNV_BLOCK_SIZE_V2);
+ len = EC_VBNV_BLOCK_SIZE_V2;
break;
case EC_VBNV_CONTEXT_OP_WRITE:
- /* TODO([email protected]): Support full-size context */
memcpy(ec->vbnv_context, req->block,
- EC_VBNV_BLOCK_SIZE);
+ EC_VBNV_BLOCK_SIZE_V2);
len = 0;
break;
default:
@@ -496,9 +494,6 @@ static int process_cmd(struct ec_state *ec,
case EC_CMD_MKBP_STATE:
len = cros_ec_keyscan(ec, resp_data);
break;
- case EC_CMD_ENTERING_MODE:
- len = 0;
- break;
case EC_CMD_GET_NEXT_EVENT: {
struct ec_response_get_next_event *resp = resp_data;
@@ -629,15 +624,19 @@ void cros_ec_check_keyboard(struct udevice *dev)
struct ec_state *ec = dev_get_priv(dev);
ulong start;
- printf("Press keys for EC to detect on reset (ESC=recovery)...");
+ printf("\nPress keys for EC to detect on reset (ESC=recovery)...");
start = get_timer(0);
- while (get_timer(start) < 1000)
- ;
- putc('\n');
- if (!sandbox_sdl_key_pressed(KEY_ESC)) {
- ec->recovery_req = true;
- printf(" - EC requests recovery\n");
+ while (get_timer(start) < 2000) {
+ if (tstc()) {
+ int ch = getchar();
+
+ if (ch == 0x1b) {
+ ec->recovery_req = true;
+ printf("EC requests recovery");
+ }
+ }
}
+ putc('\n');
}
/* Return the byte of EC switch states */
diff --git a/drivers/mmc/sandbox_mmc.c b/drivers/mmc/sandbox_mmc.c
index 18ba020aacc..895fbffecfc 100644
--- a/drivers/mmc/sandbox_mmc.c
+++ b/drivers/mmc/sandbox_mmc.c
@@ -136,14 +136,31 @@ static const struct dm_mmc_ops sandbox_mmc_ops = {
.get_cd = sandbox_mmc_get_cd,
};
-int sandbox_mmc_probe(struct udevice *dev)
+static int sandbox_mmc_of_to_plat(struct udevice *dev)
+{
+ struct sandbox_mmc_plat *plat = dev_get_plat(dev);
+ struct mmc_config *cfg = &plat->cfg;
+ struct blk_desc *blk;
+ int ret;
+
+ ret = mmc_of_parse(dev, cfg);
+ if (ret)
+ return ret;
+ blk = mmc_get_blk_desc(&plat->mmc);
+ if (blk)
+ blk->removable = !(cfg->host_caps & MMC_CAP_NONREMOVABLE);
+
+ return 0;
+}
+
+static int sandbox_mmc_probe(struct udevice *dev)
{
struct sandbox_mmc_plat *plat = dev_get_plat(dev);
return mmc_init(&plat->mmc);
}
-int sandbox_mmc_bind(struct udevice *dev)
+static int sandbox_mmc_bind(struct udevice *dev)
{
struct sandbox_mmc_plat *plat = dev_get_plat(dev);
struct mmc_config *cfg = &plat->cfg;
@@ -158,7 +175,7 @@ int sandbox_mmc_bind(struct udevice *dev)
return mmc_bind(dev, &plat->mmc, cfg);
}
-int sandbox_mmc_unbind(struct udevice *dev)
+static int sandbox_mmc_unbind(struct udevice *dev)
{
mmc_unbind(dev);
@@ -177,6 +194,7 @@ U_BOOT_DRIVER(mmc_sandbox) = {
.ops = &sandbox_mmc_ops,
.bind = sandbox_mmc_bind,
.unbind = sandbox_mmc_unbind,
+ .of_to_plat = sandbox_mmc_of_to_plat,
.probe = sandbox_mmc_probe,
.priv_auto = sizeof(struct sandbox_mmc_priv),
.plat_auto = sizeof(struct sandbox_mmc_plat),