kernel: backport bcma patches that improve printing functions
authorRafał Miłecki <rafal@milecki.pl>
Thu, 10 Jan 2019 15:46:21 +0000 (16:46 +0100)
committerRafał Miłecki <rafal@milecki.pl>
Thu, 10 Jan 2019 15:47:43 +0000 (16:47 +0100)
Updated printing functions use dev_* helpers to provide more meaningful
messages.

Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
target/linux/brcm47xx/patches-4.14/901-Revert-bcma-switch-GPIO-portions-to-use-GPIOLIB_IRQC.patch
target/linux/generic/backport-4.14/080-v5.1-0001-bcma-keep-a-direct-pointer-to-the-struct-device.patch [new file with mode: 0644]
target/linux/generic/backport-4.14/080-v5.1-0002-bcma-use-dev_-printing-functions.patch [new file with mode: 0644]
target/linux/generic/backport-4.19/080-v5.1-0001-bcma-keep-a-direct-pointer-to-the-struct-device.patch [new file with mode: 0644]
target/linux/generic/backport-4.19/080-v5.1-0002-bcma-use-dev_-printing-functions.patch [new file with mode: 0644]

index f1cfcd3..3ec8539 100644 (file)
@@ -188,7 +188,7 @@ Signed-off-by: Rafał Miłecki <zajec5@gmail.com>
        chip->direction_input   = bcma_gpio_direction_input;
        chip->direction_output  = bcma_gpio_direction_output;
 -      chip->owner             = THIS_MODULE;
--      chip->parent            = bcma_bus_get_host_dev(bus);
+-      chip->parent            = bus->dev;
 +#if IS_BUILTIN(CONFIG_BCM47XX) || IS_BUILTIN(CONFIG_ARCH_BCM_5301X)
 +      chip->to_irq            = bcma_gpio_to_irq;
 +#endif
diff --git a/target/linux/generic/backport-4.14/080-v5.1-0001-bcma-keep-a-direct-pointer-to-the-struct-device.patch b/target/linux/generic/backport-4.14/080-v5.1-0001-bcma-keep-a-direct-pointer-to-the-struct-device.patch
new file mode 100644 (file)
index 0000000..cc32aee
--- /dev/null
@@ -0,0 +1,199 @@
+From 5a1c18b761ddb299a06746948b9ec2814b04fa92 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= <rafal@milecki.pl>
+Date: Wed, 2 Jan 2019 00:00:01 +0100
+Subject: [PATCH] bcma: keep a direct pointer to the struct device
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Accessing struct device is pretty useful/common so having a direct
+pointer:
+1) Simplifies some code
+2) Makes bcma_bus_get_host_dev() unneeded
+3) Allows further improvements like using dev_* printing helpers
+
+Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
+Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
+---
+ drivers/bcma/bcma_private.h |  1 -
+ drivers/bcma/driver_gpio.c  |  2 +-
+ drivers/bcma/host_pci.c     |  2 ++
+ drivers/bcma/host_soc.c     |  4 ++--
+ drivers/bcma/main.c         | 45 +++++++++----------------------------
+ include/linux/bcma/bcma.h   | 11 +++------
+ 6 files changed, 18 insertions(+), 47 deletions(-)
+
+--- a/drivers/bcma/bcma_private.h
++++ b/drivers/bcma/bcma_private.h
+@@ -33,7 +33,6 @@ int __init bcma_bus_early_register(struc
+ int bcma_bus_suspend(struct bcma_bus *bus);
+ int bcma_bus_resume(struct bcma_bus *bus);
+ #endif
+-struct device *bcma_bus_get_host_dev(struct bcma_bus *bus);
+ /* scan.c */
+ void bcma_detect_chip(struct bcma_bus *bus);
+--- a/drivers/bcma/driver_gpio.c
++++ b/drivers/bcma/driver_gpio.c
+@@ -183,7 +183,7 @@ int bcma_gpio_init(struct bcma_drv_cc *c
+       chip->direction_input   = bcma_gpio_direction_input;
+       chip->direction_output  = bcma_gpio_direction_output;
+       chip->owner             = THIS_MODULE;
+-      chip->parent            = bcma_bus_get_host_dev(bus);
++      chip->parent            = bus->dev;
+ #if IS_BUILTIN(CONFIG_OF)
+       chip->of_node           = cc->core->dev.of_node;
+ #endif
+--- a/drivers/bcma/host_pci.c
++++ b/drivers/bcma/host_pci.c
+@@ -196,6 +196,8 @@ static int bcma_host_pci_probe(struct pc
+               goto err_pci_release_regions;
+       }
++      bus->dev = &dev->dev;
++
+       /* Map MMIO */
+       err = -ENOMEM;
+       bus->mmio = pci_iomap(dev, 0, ~0UL);
+--- a/drivers/bcma/host_soc.c
++++ b/drivers/bcma/host_soc.c
+@@ -179,7 +179,6 @@ int __init bcma_host_soc_register(struct
+       /* Host specific */
+       bus->hosttype = BCMA_HOSTTYPE_SOC;
+       bus->ops = &bcma_host_soc_ops;
+-      bus->host_pdev = NULL;
+       /* Initialize struct, detect chip */
+       bcma_init_bus(bus);
+@@ -213,6 +212,8 @@ static int bcma_host_soc_probe(struct pl
+       if (!bus)
+               return -ENOMEM;
++      bus->dev = dev;
++
+       /* Map MMIO */
+       bus->mmio = of_iomap(np, 0);
+       if (!bus->mmio)
+@@ -221,7 +222,6 @@ static int bcma_host_soc_probe(struct pl
+       /* Host specific */
+       bus->hosttype = BCMA_HOSTTYPE_SOC;
+       bus->ops = &bcma_host_soc_ops;
+-      bus->host_pdev = pdev;
+       /* Initialize struct, detect chip */
+       bcma_init_bus(bus);
+--- a/drivers/bcma/main.c
++++ b/drivers/bcma/main.c
+@@ -223,8 +223,8 @@ unsigned int bcma_core_irq(struct bcma_d
+                       mips_irq = bcma_core_mips_irq(core);
+                       return mips_irq <= 4 ? mips_irq + 2 : 0;
+               }
+-              if (bus->host_pdev)
+-                      return bcma_of_get_irq(&bus->host_pdev->dev, core, num);
++              if (bus->dev)
++                      return bcma_of_get_irq(bus->dev, core, num);
+               return 0;
+       case BCMA_HOSTTYPE_SDIO:
+               return 0;
+@@ -239,18 +239,18 @@ void bcma_prepare_core(struct bcma_bus *
+       core->dev.release = bcma_release_core_dev;
+       core->dev.bus = &bcma_bus_type;
+       dev_set_name(&core->dev, "bcma%d:%d", bus->num, core->core_index);
+-      core->dev.parent = bcma_bus_get_host_dev(bus);
+-      if (core->dev.parent)
+-              bcma_of_fill_device(core->dev.parent, core);
++      core->dev.parent = bus->dev;
++      if (bus->dev)
++              bcma_of_fill_device(bus->dev, core);
+       switch (bus->hosttype) {
+       case BCMA_HOSTTYPE_PCI:
+-              core->dma_dev = &bus->host_pci->dev;
++              core->dma_dev = bus->dev;
+               core->irq = bus->host_pci->irq;
+               break;
+       case BCMA_HOSTTYPE_SOC:
+-              if (IS_ENABLED(CONFIG_OF) && bus->host_pdev) {
+-                      core->dma_dev = &bus->host_pdev->dev;
++              if (IS_ENABLED(CONFIG_OF) && bus->dev) {
++                      core->dma_dev = bus->dev;
+               } else {
+                       core->dev.dma_mask = &core->dev.coherent_dma_mask;
+                       core->dma_dev = &core->dev;
+@@ -261,28 +261,6 @@ void bcma_prepare_core(struct bcma_bus *
+       }
+ }
+-struct device *bcma_bus_get_host_dev(struct bcma_bus *bus)
+-{
+-      switch (bus->hosttype) {
+-      case BCMA_HOSTTYPE_PCI:
+-              if (bus->host_pci)
+-                      return &bus->host_pci->dev;
+-              else
+-                      return NULL;
+-      case BCMA_HOSTTYPE_SOC:
+-              if (bus->host_pdev)
+-                      return &bus->host_pdev->dev;
+-              else
+-                      return NULL;
+-      case BCMA_HOSTTYPE_SDIO:
+-              if (bus->host_sdio)
+-                      return &bus->host_sdio->dev;
+-              else
+-                      return NULL;
+-      }
+-      return NULL;
+-}
+-
+ void bcma_init_bus(struct bcma_bus *bus)
+ {
+       mutex_lock(&bcma_buses_mutex);
+@@ -402,7 +380,6 @@ int bcma_bus_register(struct bcma_bus *b
+ {
+       int err;
+       struct bcma_device *core;
+-      struct device *dev;
+       /* Scan for devices (cores) */
+       err = bcma_bus_scan(bus);
+@@ -425,10 +402,8 @@ int bcma_bus_register(struct bcma_bus *b
+               bcma_core_pci_early_init(&bus->drv_pci[0]);
+       }
+-      dev = bcma_bus_get_host_dev(bus);
+-      if (dev) {
+-              of_platform_default_populate(dev->of_node, NULL, dev);
+-      }
++      if (bus->dev)
++              of_platform_default_populate(bus->dev->of_node, NULL, bus->dev);
+       /* Cores providing flash access go before SPROM init */
+       list_for_each_entry(core, &bus->cores, list) {
+--- a/include/linux/bcma/bcma.h
++++ b/include/linux/bcma/bcma.h
+@@ -332,6 +332,8 @@ extern int bcma_arch_register_fallback_s
+               struct ssb_sprom *out));
+ struct bcma_bus {
++      struct device *dev;
++
+       /* The MMIO area. */
+       void __iomem *mmio;
+@@ -339,14 +341,7 @@ struct bcma_bus {
+       enum bcma_hosttype hosttype;
+       bool host_is_pcie2; /* Used for BCMA_HOSTTYPE_PCI only */
+-      union {
+-              /* Pointer to the PCI bus (only for BCMA_HOSTTYPE_PCI) */
+-              struct pci_dev *host_pci;
+-              /* Pointer to the SDIO device (only for BCMA_HOSTTYPE_SDIO) */
+-              struct sdio_func *host_sdio;
+-              /* Pointer to platform device (only for BCMA_HOSTTYPE_SOC) */
+-              struct platform_device *host_pdev;
+-      };
++      struct pci_dev *host_pci; /* PCI bus pointer (BCMA_HOSTTYPE_PCI only) */
+       struct bcma_chipinfo chipinfo;
diff --git a/target/linux/generic/backport-4.14/080-v5.1-0002-bcma-use-dev_-printing-functions.patch b/target/linux/generic/backport-4.14/080-v5.1-0002-bcma-use-dev_-printing-functions.patch
new file mode 100644 (file)
index 0000000..7ce8ba8
--- /dev/null
@@ -0,0 +1,36 @@
+From 777bc4801a6868fcbff09ffb6e30f023e7c5ed38 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= <rafal@milecki.pl>
+Date: Wed, 2 Jan 2019 00:00:02 +0100
+Subject: [PATCH] bcma: use dev_* printing functions
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+It provides more meaningful messages.
+
+Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
+Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
+---
+ drivers/bcma/bcma_private.h | 8 ++++----
+ 1 file changed, 4 insertions(+), 4 deletions(-)
+
+--- a/drivers/bcma/bcma_private.h
++++ b/drivers/bcma/bcma_private.h
+@@ -10,13 +10,13 @@
+ #include <linux/delay.h>
+ #define bcma_err(bus, fmt, ...) \
+-      pr_err("bus%d: " fmt, (bus)->num, ##__VA_ARGS__)
++      dev_err((bus)->dev, "bus%d: " fmt, (bus)->num, ##__VA_ARGS__)
+ #define bcma_warn(bus, fmt, ...) \
+-      pr_warn("bus%d: " fmt, (bus)->num, ##__VA_ARGS__)
++      dev_warn((bus)->dev, "bus%d: " fmt, (bus)->num, ##__VA_ARGS__)
+ #define bcma_info(bus, fmt, ...) \
+-      pr_info("bus%d: " fmt, (bus)->num, ##__VA_ARGS__)
++      dev_info((bus)->dev, "bus%d: " fmt, (bus)->num, ##__VA_ARGS__)
+ #define bcma_debug(bus, fmt, ...) \
+-      pr_debug("bus%d: " fmt, (bus)->num, ##__VA_ARGS__)
++      dev_dbg((bus)->dev, "bus%d: " fmt, (bus)->num, ##__VA_ARGS__)
+ struct bcma_bus;
diff --git a/target/linux/generic/backport-4.19/080-v5.1-0001-bcma-keep-a-direct-pointer-to-the-struct-device.patch b/target/linux/generic/backport-4.19/080-v5.1-0001-bcma-keep-a-direct-pointer-to-the-struct-device.patch
new file mode 100644 (file)
index 0000000..cc32aee
--- /dev/null
@@ -0,0 +1,199 @@
+From 5a1c18b761ddb299a06746948b9ec2814b04fa92 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= <rafal@milecki.pl>
+Date: Wed, 2 Jan 2019 00:00:01 +0100
+Subject: [PATCH] bcma: keep a direct pointer to the struct device
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Accessing struct device is pretty useful/common so having a direct
+pointer:
+1) Simplifies some code
+2) Makes bcma_bus_get_host_dev() unneeded
+3) Allows further improvements like using dev_* printing helpers
+
+Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
+Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
+---
+ drivers/bcma/bcma_private.h |  1 -
+ drivers/bcma/driver_gpio.c  |  2 +-
+ drivers/bcma/host_pci.c     |  2 ++
+ drivers/bcma/host_soc.c     |  4 ++--
+ drivers/bcma/main.c         | 45 +++++++++----------------------------
+ include/linux/bcma/bcma.h   | 11 +++------
+ 6 files changed, 18 insertions(+), 47 deletions(-)
+
+--- a/drivers/bcma/bcma_private.h
++++ b/drivers/bcma/bcma_private.h
+@@ -33,7 +33,6 @@ int __init bcma_bus_early_register(struc
+ int bcma_bus_suspend(struct bcma_bus *bus);
+ int bcma_bus_resume(struct bcma_bus *bus);
+ #endif
+-struct device *bcma_bus_get_host_dev(struct bcma_bus *bus);
+ /* scan.c */
+ void bcma_detect_chip(struct bcma_bus *bus);
+--- a/drivers/bcma/driver_gpio.c
++++ b/drivers/bcma/driver_gpio.c
+@@ -183,7 +183,7 @@ int bcma_gpio_init(struct bcma_drv_cc *c
+       chip->direction_input   = bcma_gpio_direction_input;
+       chip->direction_output  = bcma_gpio_direction_output;
+       chip->owner             = THIS_MODULE;
+-      chip->parent            = bcma_bus_get_host_dev(bus);
++      chip->parent            = bus->dev;
+ #if IS_BUILTIN(CONFIG_OF)
+       chip->of_node           = cc->core->dev.of_node;
+ #endif
+--- a/drivers/bcma/host_pci.c
++++ b/drivers/bcma/host_pci.c
+@@ -196,6 +196,8 @@ static int bcma_host_pci_probe(struct pc
+               goto err_pci_release_regions;
+       }
++      bus->dev = &dev->dev;
++
+       /* Map MMIO */
+       err = -ENOMEM;
+       bus->mmio = pci_iomap(dev, 0, ~0UL);
+--- a/drivers/bcma/host_soc.c
++++ b/drivers/bcma/host_soc.c
+@@ -179,7 +179,6 @@ int __init bcma_host_soc_register(struct
+       /* Host specific */
+       bus->hosttype = BCMA_HOSTTYPE_SOC;
+       bus->ops = &bcma_host_soc_ops;
+-      bus->host_pdev = NULL;
+       /* Initialize struct, detect chip */
+       bcma_init_bus(bus);
+@@ -213,6 +212,8 @@ static int bcma_host_soc_probe(struct pl
+       if (!bus)
+               return -ENOMEM;
++      bus->dev = dev;
++
+       /* Map MMIO */
+       bus->mmio = of_iomap(np, 0);
+       if (!bus->mmio)
+@@ -221,7 +222,6 @@ static int bcma_host_soc_probe(struct pl
+       /* Host specific */
+       bus->hosttype = BCMA_HOSTTYPE_SOC;
+       bus->ops = &bcma_host_soc_ops;
+-      bus->host_pdev = pdev;
+       /* Initialize struct, detect chip */
+       bcma_init_bus(bus);
+--- a/drivers/bcma/main.c
++++ b/drivers/bcma/main.c
+@@ -223,8 +223,8 @@ unsigned int bcma_core_irq(struct bcma_d
+                       mips_irq = bcma_core_mips_irq(core);
+                       return mips_irq <= 4 ? mips_irq + 2 : 0;
+               }
+-              if (bus->host_pdev)
+-                      return bcma_of_get_irq(&bus->host_pdev->dev, core, num);
++              if (bus->dev)
++                      return bcma_of_get_irq(bus->dev, core, num);
+               return 0;
+       case BCMA_HOSTTYPE_SDIO:
+               return 0;
+@@ -239,18 +239,18 @@ void bcma_prepare_core(struct bcma_bus *
+       core->dev.release = bcma_release_core_dev;
+       core->dev.bus = &bcma_bus_type;
+       dev_set_name(&core->dev, "bcma%d:%d", bus->num, core->core_index);
+-      core->dev.parent = bcma_bus_get_host_dev(bus);
+-      if (core->dev.parent)
+-              bcma_of_fill_device(core->dev.parent, core);
++      core->dev.parent = bus->dev;
++      if (bus->dev)
++              bcma_of_fill_device(bus->dev, core);
+       switch (bus->hosttype) {
+       case BCMA_HOSTTYPE_PCI:
+-              core->dma_dev = &bus->host_pci->dev;
++              core->dma_dev = bus->dev;
+               core->irq = bus->host_pci->irq;
+               break;
+       case BCMA_HOSTTYPE_SOC:
+-              if (IS_ENABLED(CONFIG_OF) && bus->host_pdev) {
+-                      core->dma_dev = &bus->host_pdev->dev;
++              if (IS_ENABLED(CONFIG_OF) && bus->dev) {
++                      core->dma_dev = bus->dev;
+               } else {
+                       core->dev.dma_mask = &core->dev.coherent_dma_mask;
+                       core->dma_dev = &core->dev;
+@@ -261,28 +261,6 @@ void bcma_prepare_core(struct bcma_bus *
+       }
+ }
+-struct device *bcma_bus_get_host_dev(struct bcma_bus *bus)
+-{
+-      switch (bus->hosttype) {
+-      case BCMA_HOSTTYPE_PCI:
+-              if (bus->host_pci)
+-                      return &bus->host_pci->dev;
+-              else
+-                      return NULL;
+-      case BCMA_HOSTTYPE_SOC:
+-              if (bus->host_pdev)
+-                      return &bus->host_pdev->dev;
+-              else
+-                      return NULL;
+-      case BCMA_HOSTTYPE_SDIO:
+-              if (bus->host_sdio)
+-                      return &bus->host_sdio->dev;
+-              else
+-                      return NULL;
+-      }
+-      return NULL;
+-}
+-
+ void bcma_init_bus(struct bcma_bus *bus)
+ {
+       mutex_lock(&bcma_buses_mutex);
+@@ -402,7 +380,6 @@ int bcma_bus_register(struct bcma_bus *b
+ {
+       int err;
+       struct bcma_device *core;
+-      struct device *dev;
+       /* Scan for devices (cores) */
+       err = bcma_bus_scan(bus);
+@@ -425,10 +402,8 @@ int bcma_bus_register(struct bcma_bus *b
+               bcma_core_pci_early_init(&bus->drv_pci[0]);
+       }
+-      dev = bcma_bus_get_host_dev(bus);
+-      if (dev) {
+-              of_platform_default_populate(dev->of_node, NULL, dev);
+-      }
++      if (bus->dev)
++              of_platform_default_populate(bus->dev->of_node, NULL, bus->dev);
+       /* Cores providing flash access go before SPROM init */
+       list_for_each_entry(core, &bus->cores, list) {
+--- a/include/linux/bcma/bcma.h
++++ b/include/linux/bcma/bcma.h
+@@ -332,6 +332,8 @@ extern int bcma_arch_register_fallback_s
+               struct ssb_sprom *out));
+ struct bcma_bus {
++      struct device *dev;
++
+       /* The MMIO area. */
+       void __iomem *mmio;
+@@ -339,14 +341,7 @@ struct bcma_bus {
+       enum bcma_hosttype hosttype;
+       bool host_is_pcie2; /* Used for BCMA_HOSTTYPE_PCI only */
+-      union {
+-              /* Pointer to the PCI bus (only for BCMA_HOSTTYPE_PCI) */
+-              struct pci_dev *host_pci;
+-              /* Pointer to the SDIO device (only for BCMA_HOSTTYPE_SDIO) */
+-              struct sdio_func *host_sdio;
+-              /* Pointer to platform device (only for BCMA_HOSTTYPE_SOC) */
+-              struct platform_device *host_pdev;
+-      };
++      struct pci_dev *host_pci; /* PCI bus pointer (BCMA_HOSTTYPE_PCI only) */
+       struct bcma_chipinfo chipinfo;
diff --git a/target/linux/generic/backport-4.19/080-v5.1-0002-bcma-use-dev_-printing-functions.patch b/target/linux/generic/backport-4.19/080-v5.1-0002-bcma-use-dev_-printing-functions.patch
new file mode 100644 (file)
index 0000000..7ce8ba8
--- /dev/null
@@ -0,0 +1,36 @@
+From 777bc4801a6868fcbff09ffb6e30f023e7c5ed38 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= <rafal@milecki.pl>
+Date: Wed, 2 Jan 2019 00:00:02 +0100
+Subject: [PATCH] bcma: use dev_* printing functions
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+It provides more meaningful messages.
+
+Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
+Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
+---
+ drivers/bcma/bcma_private.h | 8 ++++----
+ 1 file changed, 4 insertions(+), 4 deletions(-)
+
+--- a/drivers/bcma/bcma_private.h
++++ b/drivers/bcma/bcma_private.h
+@@ -10,13 +10,13 @@
+ #include <linux/delay.h>
+ #define bcma_err(bus, fmt, ...) \
+-      pr_err("bus%d: " fmt, (bus)->num, ##__VA_ARGS__)
++      dev_err((bus)->dev, "bus%d: " fmt, (bus)->num, ##__VA_ARGS__)
+ #define bcma_warn(bus, fmt, ...) \
+-      pr_warn("bus%d: " fmt, (bus)->num, ##__VA_ARGS__)
++      dev_warn((bus)->dev, "bus%d: " fmt, (bus)->num, ##__VA_ARGS__)
+ #define bcma_info(bus, fmt, ...) \
+-      pr_info("bus%d: " fmt, (bus)->num, ##__VA_ARGS__)
++      dev_info((bus)->dev, "bus%d: " fmt, (bus)->num, ##__VA_ARGS__)
+ #define bcma_debug(bus, fmt, ...) \
+-      pr_debug("bus%d: " fmt, (bus)->num, ##__VA_ARGS__)
++      dev_dbg((bus)->dev, "bus%d: " fmt, (bus)->num, ##__VA_ARGS__)
+ struct bcma_bus;