Merge branch '2022-10-12-additional-fixes'
authorTom Rini <trini@konsulko.com>
Wed, 12 Oct 2022 19:12:42 +0000 (15:12 -0400)
committerTom Rini <trini@konsulko.com>
Wed, 12 Oct 2022 19:12:42 +0000 (15:12 -0400)
- Add "ubi list", Nokia RX51 fixes, other assorted fixes

14 files changed:
board/nokia/rx51/rx51.c
cmd/ubi.c
drivers/firmware/scmi/mailbox_agent.c
drivers/firmware/scmi/optee_agent.c
drivers/firmware/scmi/scmi_agent-uclass.c
drivers/firmware/scmi/smccc_agent.c
drivers/smem/msm_smem.c
drivers/usb/gadget/Kconfig
drivers/usb/gadget/ether.c
include/configs/nokia_rx51.h
include/configs/warp7.h
test/cmd/Makefile
test/cmd_ut.c
tools/k3_gen_x509_cert.sh

index 9548c3c..c1b4b91 100644 (file)
@@ -561,7 +561,7 @@ static const char keymap[] = {
        'q',  'o',  'p',  ',', '\b',    0,  'a',  's',
        'w',  'd',  'f',  'g',  'h',  'j',  'k',  'l',
        'e',  '.',    0,  '\r',   0,  'z',  'x',  'c',
-       'r',  'v',  'b',  'n',  'm',  ' ',  ' ',    0,
+       'r',  'v',  'b',  'n',  'm',  ' ',    0,    0,
        't',    0,    0,    0,    0,    0,    0,    0,
        'y',    0,    0,    0,    0,    0,    0,    0,
        'u',    0,    0,    0,    0,    0,    0,    0,
@@ -691,6 +691,10 @@ static int rx51_kp_tstc(struct udevice *dev)
                mods = keys[4] >> 4;
                keys[4] &= 0x0f;
 
+               /* space key is indicated by two different bits */
+               keys[3] |= (keys[3] & (1 << 6)) >> 1;
+               keys[3] &= ~(1 << 6);
+
                for (c = 0; c < 8; c++) {
 
                        /* get newly pressed keys only */
index fccbfdf..b61ae1e 100644 (file)
--- a/cmd/ubi.c
+++ b/cmd/ubi.c
@@ -27,6 +27,7 @@
 #include <ubi_uboot.h>
 #include <linux/errno.h>
 #include <jffs2/load_kernel.h>
+#include <linux/log2.h>
 
 #undef ubi_msg
 #define ubi_msg(fmt, ...) printf("UBI: " fmt "\n", ##__VA_ARGS__)
@@ -84,6 +85,70 @@ static int ubi_info(int layout)
        return 0;
 }
 
+static int ubi_list(const char *var, int numeric)
+{
+       size_t namelen, len, size;
+       char *str, *str2;
+       int i;
+
+       if (!var) {
+               for (i = 0; i < (ubi->vtbl_slots + 1); i++) {
+                       if (!ubi->volumes[i])
+                               continue;
+                       if (ubi->volumes[i]->vol_id >= UBI_INTERNAL_VOL_START)
+                               continue;
+                       printf("%d: %s\n",
+                              ubi->volumes[i]->vol_id,
+                              ubi->volumes[i]->name);
+               }
+               return 0;
+       }
+
+       len = 0;
+       size = 16;
+       str = malloc(size);
+       if (!str)
+               return 1;
+
+       for (i = 0; i < (ubi->vtbl_slots + 1); i++) {
+               if (!ubi->volumes[i])
+                       continue;
+               if (ubi->volumes[i]->vol_id >= UBI_INTERNAL_VOL_START)
+                       continue;
+
+               if (numeric)
+                       namelen = 10; /* strlen(stringify(INT_MAX)) */
+               else
+                       namelen = strlen(ubi->volumes[i]->name);
+
+               if (len + namelen + 1 > size) {
+                       size = roundup_pow_of_two(len + namelen + 1) * 2;
+                       str2 = realloc(str, size);
+                       if (!str2) {
+                               free(str);
+                               return 1;
+                       }
+                       str = str2;
+               }
+
+               if (len)
+                       str[len++] = ' ';
+
+               if (numeric) {
+                       len += sprintf(str + len, "%d", ubi->volumes[i]->vol_id) + 1;
+               } else {
+                       memcpy(str + len, ubi->volumes[i]->name, namelen);
+                       len += namelen;
+                       str[len] = 0;
+               }
+       }
+
+       env_set(var, str);
+       free(str);
+
+       return 0;
+}
+
 static int ubi_check_volumename(const struct ubi_volume *vol, char *name)
 {
        return strcmp(vol->name, name);
@@ -586,6 +651,21 @@ static int do_ubi(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[])
                return ubi_info(layout);
        }
 
+       if (strcmp(argv[1], "list") == 0) {
+               int numeric = 0;
+               if (argc >= 2 && argv[2][0] == '-') {
+                       if (strcmp(argv[2], "-numeric") == 0)
+                               numeric = 1;
+                       else
+                               return CMD_RET_USAGE;
+               }
+               if (!numeric && argc != 2 && argc != 3)
+                       return CMD_RET_USAGE;
+               if (numeric && argc != 3 && argc != 4)
+                       return CMD_RET_USAGE;
+               return ubi_list(argv[numeric ? 3 : 2], numeric);
+       }
+
        if (strcmp(argv[1], "check") == 0) {
                if (argc > 2)
                        return ubi_check(argv[2]);
@@ -725,6 +805,11 @@ U_BOOT_CMD(
                " header offset)\n"
        "ubi info [l[ayout]]"
                " - Display volume and ubi layout information\n"
+       "ubi list [flags]"
+               " - print the list of volumes\n"
+       "ubi list [flags] <varname>"
+               " - set environment variable to the list of volumes"
+               " (flags can be -numeric)\n"
        "ubi check volumename"
                " - check if volumename exists\n"
        "ubi create[vol] volume [size] [type] [id] [--skipcheck]\n"
index 3efdab9..8277c18 100644 (file)
@@ -96,7 +96,7 @@ static int setup_channel(struct udevice *dev, struct scmi_mbox_channel *chan)
 static int scmi_mbox_get_channel(struct udevice *dev,
                                 struct scmi_channel **channel)
 {
-       struct scmi_mbox_channel *base_chan = dev_get_plat(dev->parent);
+       struct scmi_mbox_channel *base_chan = dev_get_plat(dev);
        struct scmi_mbox_channel *chan;
        int ret;
 
index 2b2b8c1..db927fb 100644 (file)
@@ -326,7 +326,7 @@ static int setup_channel(struct udevice *dev, struct scmi_optee_channel *chan)
 static int scmi_optee_get_channel(struct udevice *dev,
                                  struct scmi_channel **channel)
 {
-       struct scmi_optee_channel *base_chan = dev_get_plat(dev->parent);
+       struct scmi_optee_channel *base_chan = dev_get_plat(dev);
        struct scmi_optee_channel *chan;
        u32 channel_id;
        int ret;
index c3f3d1f..8f48de3 100644 (file)
@@ -137,7 +137,7 @@ int devm_scmi_of_get_channel(struct udevice *dev, struct scmi_channel **channel)
                return -ENODEV;
 
        if (transport_dev_ops(parent)->of_get_channel)
-               return transport_dev_ops(parent)->of_get_channel(dev, channel);
+               return transport_dev_ops(parent)->of_get_channel(parent, channel);
 
        /* Drivers without a get_channel operator don't need a channel ref */
        *channel = NULL;
index bc2eb67..6a52cd7 100644 (file)
@@ -83,7 +83,7 @@ static int setup_channel(struct udevice *dev, struct scmi_smccc_channel *chan)
 static int scmi_smccc_get_channel(struct udevice *dev,
                                  struct scmi_channel **channel)
 {
-       struct scmi_smccc_channel *base_chan = dev_get_plat(dev->parent);
+       struct scmi_smccc_channel *base_chan = dev_get_plat(dev);
        struct scmi_smccc_channel *chan;
        u32 func_id;
        int ret;
index 6395b61..17ee6c8 100644 (file)
@@ -18,6 +18,7 @@
 #include <linux/err.h>
 #include <linux/ioport.h>
 #include <linux/io.h>
+#include <linux/sizes.h>
 #include <smem.h>
 
 DECLARE_GLOBAL_DATA_PTR;
index da9c9e3..e8da73c 100644 (file)
@@ -241,7 +241,7 @@ config USB_ETH_RNDIS
 
 endchoice
 
-config USBNET_DEVADDR
+config USBNET_DEV_ADDR
        string "USB Gadget Ethernet device mac address"
        default "de:ad:be:ef:00:01"
        help
index abb5332..6ce389d 100644 (file)
@@ -2620,7 +2620,7 @@ static int usb_eth_probe(struct udevice *dev)
        priv->netdev = dev;
        l_priv = priv;
 
-       get_ether_addr(CONFIG_USBNET_DEVADDR, pdata->enetaddr);
+       get_ether_addr(CONFIG_USBNET_DEV_ADDR, pdata->enetaddr);
        eth_env_set_enetaddr("usbnet_devaddr", pdata->enetaddr);
 
        return 0;
index 97aafc5..a88cfe7 100644 (file)
@@ -31,8 +31,6 @@
 #define V_OSCK                 26000000        /* Clock output from T2 */
 #define V_SCLK                 (V_OSCK >> 1)
 
-#define CONFIG_UBI_SIZE                        (512 << 10)
-
 /*
  * Hardware drivers
  */
index 7e9b25b..a9cc859 100644 (file)
 /* USB Device Firmware Update support */
 #define DFU_DEFAULT_POLL_TIMEOUT       300
 
-#define CONFIG_USBNET_DEV_ADDR         "de:ad:be:af:00:01"
-
 /* Environment variable name to represent HAB enable state */
 #define HAB_ENABLED_ENVNAME            "hab_enabled"
 
index b7b9bd4..f2a5f4e 100644 (file)
@@ -15,5 +15,7 @@ obj-$(CONFIG_CMD_LOADM) += loadm.o
 obj-$(CONFIG_CMD_MEM_SEARCH) += mem_search.o
 obj-$(CONFIG_CMD_PINMUX) += pinmux.o
 obj-$(CONFIG_CMD_PWM) += pwm.o
+ifdef CONFIG_SANDBOX
 obj-$(CONFIG_CMD_SETEXPR) += setexpr.o
+endif
 obj-$(CONFIG_CMD_TEMPERATURE) += temperature.o
index 11c219b..99e53dd 100644 (file)
@@ -62,7 +62,7 @@ static struct cmd_tbl cmd_ut_sub[] = {
        U_BOOT_CMD_MKENT(log, CONFIG_SYS_MAXARGS, 1, do_ut_log, "", ""),
 #endif
        U_BOOT_CMD_MKENT(mem, CONFIG_SYS_MAXARGS, 1, do_ut_mem, "", ""),
-#ifdef CONFIG_CMD_SETEXPR
+#if defined(CONFIG_SANDBOX) && defined(CONFIG_CMD_SETEXPR)
        U_BOOT_CMD_MKENT(setexpr, CONFIG_SYS_MAXARGS, 1, do_ut_setexpr, "",
                         ""),
 #endif
index 029247c..d9cde07 100755 (executable)
@@ -238,7 +238,7 @@ gen_cert() {
        #echo " IMAGE_SIZE = $BIN_SIZE"
        #echo " CERT_TYPE = $CERTTYPE"
        #echo " DEBUG_TYPE = $DEBUG_TYPE"
-       echo " SWRV = $SWRV"
+       #echo " SWRV = $SWRV"
        sed -e "s/TEST_IMAGE_LENGTH/$BIN_SIZE/" \
                -e "s/TEST_IMAGE_SHA_VAL/$SHA_VAL/" \
                -e "s/TEST_CERT_TYPE/$CERTTYPE/" \