dm: Use uclass_first_device_err() where it is useful
authorSimon Glass <sjg@chromium.org>
Thu, 11 Feb 2016 20:23:26 +0000 (13:23 -0700)
committerSimon Glass <sjg@chromium.org>
Mon, 14 Mar 2016 21:34:50 +0000 (15:34 -0600)
Use this new function in places where it simplifies the code.

Signed-off-by: Simon Glass <sjg@chromium.org>
17 files changed:
arch/arm/mach-rockchip/rk3288/sdram_rk3288.c
arch/nios2/cpu/cpu.c
arch/x86/cpu/interrupts.c
arch/x86/cpu/ivybridge/cpu.c
arch/x86/cpu/ivybridge/gma.c
arch/x86/cpu/ivybridge/sata.c
arch/x86/cpu/ivybridge/sdram.c
arch/x86/lib/mpspec.c
cmd/bmp.c
cmd/tpm.c
drivers/gpio/rk_gpio.c
drivers/misc/altera_sysid.c
drivers/pci/pci-uclass.c
drivers/power/regulator/regulator-uclass.c
drivers/timer/timer-uclass.c
drivers/video/vidconsole-uclass.c
lib/tpm.c

index 17daecaf2b0d140e63c753ac202f424faaf029e4..71330cb26ddd966bd747f682da6fa51d8235829d 100644 (file)
@@ -756,7 +756,7 @@ static int veyron_init(struct dram_info *priv)
        struct udevice *pmic;
        int ret;
 
-       ret = uclass_first_device(UCLASS_PMIC, &pmic);
+       ret = uclass_first_device_err(UCLASS_PMIC, &pmic);
        if (ret)
                return ret;
 
index be7f99c1de4fb7d6e29f9a8bf3fe4336f50681ea..4f0f8fc5f8bb7c103776c89459feeccf390945c4 100644 (file)
@@ -63,11 +63,9 @@ int arch_cpu_init_dm(void)
        struct udevice *dev;
        int ret;
 
-       ret = uclass_first_device(UCLASS_CPU, &dev);
+       ret = uclass_first_device_err(UCLASS_CPU, &dev);
        if (ret)
                return ret;
-       if (!dev)
-               return -ENODEV;
 
        gd->ram_size = CONFIG_SYS_SDRAM_SIZE;
 #ifndef CONFIG_ROM_STUBS
index c40200bf8587e86113888c98b40a23e23b17bb33..10dc4d47f06d88431aafa2ed294a91ae38e6fa1d 100644 (file)
@@ -249,7 +249,7 @@ int interrupt_init(void)
        int ret;
 
        /* Try to set up the interrupt router, but don't require one */
-       ret = uclass_first_device(UCLASS_IRQ, &dev);
+       ret = uclass_first_device_err(UCLASS_IRQ, &dev);
        if (ret && ret != -ENODEV)
                return ret;
 
index 948833c02857e6d98de58e57232b3be156aed9b2..5d839a7e1befae9f0355194e7c8771cca65bcddb 100644 (file)
@@ -104,9 +104,9 @@ int arch_cpu_init_dm(void)
        /* TODO(sjg@chromium.org): Get rid of gd->hose */
        gd->hose = hose;
 
-       ret = uclass_first_device(UCLASS_LPC, &dev);
-       if (!dev)
-               return -ENODEV;
+       ret = uclass_first_device_err(UCLASS_LPC, &dev);
+       if (ret)
+               return ret;
 
        /*
         * We should do as little as possible before the serial console is
@@ -210,11 +210,9 @@ int print_cpuinfo(void)
        /* Early chipset init required before RAM init can work */
        uclass_first_device(UCLASS_NORTHBRIDGE, &dev);
 
-       ret = uclass_first_device(UCLASS_LPC, &lpc);
+       ret = uclass_first_device_err(UCLASS_LPC, &lpc);
        if (ret)
                return ret;
-       if (!dev)
-               return -ENODEV;
 
        /* Cause the SATA device to do its early init */
        uclass_first_device(UCLASS_DISK, &dev);
@@ -236,11 +234,9 @@ int print_cpuinfo(void)
        post_code(POST_EARLY_INIT);
 
        /* Enable SPD ROMs and DDR-III DRAM */
-       ret = uclass_first_device(UCLASS_I2C, &dev);
+       ret = uclass_first_device_err(UCLASS_I2C, &dev);
        if (ret)
                return ret;
-       if (!dev)
-               return -ENODEV;
 
        /* Prepare USB controller early in S3 resume */
        if (boot_mode == PEI_BOOT_RESUME)
index 3b6291e9054d607c1c563e8541ebf143e7d1672e..91a57f9847d558f0dfa8370585574aaabae92e82 100644 (file)
@@ -812,9 +812,9 @@ int gma_func0_init(struct udevice *dev)
        writew(0x0010, RCB_REG(DISPBDF));
        setbits_le32(RCB_REG(FD2), PCH_ENABLE_DBDF);
 
-       ret = uclass_first_device(UCLASS_NORTHBRIDGE, &nbridge);
-       if (!nbridge)
-               return -ENODEV;
+       ret = uclass_first_device_err(UCLASS_NORTHBRIDGE, &nbridge);
+       if (ret)
+               return ret;
        rev = bridge_silicon_revision(nbridge);
        sandybridge_setup_graphics(nbridge, dev);
 
index a59d9edce5f57edd2c4167404cc27247c68b1304..da6455b3bd86674a03665e05f2f436838e26bb24 100644 (file)
@@ -229,11 +229,9 @@ static int bd82x6x_sata_probe(struct udevice *dev)
        struct udevice *pch;
        int ret;
 
-       ret = uclass_first_device(UCLASS_PCH, &pch);
+       ret = uclass_first_device_err(UCLASS_PCH, &pch);
        if (ret)
                return ret;
-       if (!pch)
-               return -ENODEV;
 
        if (!(gd->flags & GD_FLG_RELOC))
                bd82x6x_sata_enable(dev);
index e23c422cd0ada61ff55189c6bc6390f0afa32226..0ebcc2c2579aff79a932357bd46e33d58708f0bc 100644 (file)
@@ -736,11 +736,9 @@ int dram_init(void)
        struct udevice *dev, *me_dev;
        int ret;
 
-       ret = uclass_first_device(UCLASS_NORTHBRIDGE, &dev);
+       ret = uclass_first_device_err(UCLASS_NORTHBRIDGE, &dev);
        if (ret)
                return ret;
-       if (!dev)
-               return -ENODEV;
        ret = syscon_get_by_driver_data(X86_SYSCON_ME, &me_dev);
        if (ret)
                return ret;
index 0faa582d772d4608dea2b178e4330376e29ea629..6ab43f1055fdc31a2bb7f2b2d08d830392c812b5 100644 (file)
@@ -297,7 +297,7 @@ static int mptable_add_intsrc(struct mp_config_table *mc,
        const u32 *cell;
        int i, ret;
 
-       ret = uclass_first_device(UCLASS_IRQ, &dev);
+       ret = uclass_first_device_err(UCLASS_IRQ, &dev);
        if (ret && ret != -ENODEV) {
                debug("%s: Cannot find irq router node\n", __func__);
                return ret;
index 01b3d39e9c8ec99f253b3fe05e1e37f3da7a1470..fb6fe3f286c5434f1cd15eba5ee28b8f4166fbd4 100644 (file)
--- a/cmd/bmp.c
+++ b/cmd/bmp.c
@@ -246,18 +246,14 @@ int bmp_display(ulong addr, int x, int y)
        addr = map_to_sysmem(bmp);
 
 #ifdef CONFIG_DM_VIDEO
-       ret = uclass_first_device(UCLASS_VIDEO, &dev);
+       ret = uclass_first_device_err(UCLASS_VIDEO, &dev);
        if (!ret) {
-               if (!dev)
-                       ret = -ENODEV;
-               if (!ret) {
-                       bool align = false;
+               bool align = false;
 
 # ifdef CONFIG_SPLASH_SCREEN_ALIGN
-                       align = true;
+               align = true;
 # endif /* CONFIG_SPLASH_SCREEN_ALIGN */
-                       ret = video_bmp_display(dev, addr, x, y, align);
-               }
+               ret = video_bmp_display(dev, addr, x, y, align);
        }
 #elif defined(CONFIG_LCD)
        ret = lcd_display_bitmap(addr, x, y);
index 6edf3e9dc35de128f7a8dfa221da824d1979846a..312503fb96f9bfaa08407b62127f611081ec4db7 100644 (file)
--- a/cmd/tpm.c
+++ b/cmd/tpm.c
@@ -447,8 +447,8 @@ static int get_tpm(struct udevice **devp)
 {
        int rc;
 
-       rc = uclass_first_device(UCLASS_TPM, devp);
-       if (rc || !*devp) {
+       rc = uclass_first_device_err(UCLASS_TPM, devp);
+       if (rc) {
                printf("Could not find TPM (ret=%d)\n", rc);
                return CMD_RET_FAILURE;
        }
index c62f0251c4aa2e66060a41d344cb2684911646ee..40e87bd1996a4249008bc649f19a1c6f55e2877b 100644 (file)
@@ -116,11 +116,9 @@ static int rockchip_gpio_probe(struct udevice *dev)
 
        /* This only supports RK3288 at present */
        priv->regs = (struct rockchip_gpio_regs *)dev_get_addr(dev);
-       ret = uclass_first_device(UCLASS_PINCTRL, &priv->pinctrl);
+       ret = uclass_first_device_err(UCLASS_PINCTRL, &priv->pinctrl);
        if (ret)
                return ret;
-       if (!priv->pinctrl)
-               return -ENODEV;
 
        uc_priv->gpio_count = ROCKCHIP_GPIOS_PER_BANK;
        end = strrchr(dev->name, '@');
index 2d0fa2a7dd1c82cc41417a9ceda58b2a565736a0..ed6d462c95d4c1cea9575bad588026fc43c7fd68 100644 (file)
@@ -32,11 +32,9 @@ void display_sysid(void)
        int ret;
 
        /* the first misc device will be used */
-       ret = uclass_first_device(UCLASS_MISC, &dev);
+       ret = uclass_first_device_err(UCLASS_MISC, &dev);
        if (ret)
                return;
-       if (!dev)
-               return;
        ret = misc_read(dev, 0, &sysid, sizeof(sysid));
        if (ret)
                return;
index d01bfc12e44f28ec58a30d93eaca55aef63923f0..519052efe3833b4523d776a3adbf8726b1c90f9f 100644 (file)
@@ -30,11 +30,9 @@ int pci_get_bus(int busnum, struct udevice **busp)
 
        /* Since buses may not be numbered yet try a little harder with bus 0 */
        if (ret == -ENODEV) {
-               ret = uclass_first_device(UCLASS_PCI, busp);
+               ret = uclass_first_device_err(UCLASS_PCI, busp);
                if (ret)
                        return ret;
-               else if (!*busp)
-                       return -ENODEV;
                ret = uclass_get_device_by_seq(UCLASS_PCI, busnum, busp);
        }
 
index 9fe07f2f7336e339fe604986145f901dad6d98c0..4434e36312ac9f9f322bcf364b523e82494290ac 100644 (file)
@@ -325,7 +325,7 @@ int regulators_enable_boot_on(bool verbose)
        if (ret)
                return ret;
        for (uclass_first_device(UCLASS_REGULATOR, &dev);
-            dev && !ret;
+            dev;
             uclass_next_device(&dev)) {
                ret = regulator_autoset(dev);
                if (ret == -EMEDIUMTYPE) {
index 382c0f2bd15dbb961a764a2be2c4f50256973ff8..f8ddf93cf8157fcf2a2de60fcab046914829d66e 100644 (file)
@@ -82,11 +82,9 @@ int notrace dm_timer_init(void)
        node = fdtdec_get_chosen_node(blob, "tick-timer");
        if (node < 0) {
                /* No chosen timer, trying first available timer */
-               ret = uclass_first_device(UCLASS_TIMER, &dev);
+               ret = uclass_first_device_err(UCLASS_TIMER, &dev);
                if (ret)
                        return ret;
-               if (!dev)
-                       return -ENODEV;
        } else {
                if (uclass_get_device_by_of_offset(UCLASS_TIMER, node, &dev)) {
                        /*
index 832e90aea2bc9a4ae7ee5b1d99fcf1d01cd7dc6c..c8cc05e3c2ab47addda1467adc9164a47153a672 100644 (file)
@@ -240,8 +240,7 @@ static int do_video_setcursor(cmd_tbl_t *cmdtp, int flag, int argc,
        if (argc != 3)
                return CMD_RET_USAGE;
 
-       uclass_first_device(UCLASS_VIDEO_CONSOLE, &dev);
-       if (!dev)
+       if (uclass_first_device_err(UCLASS_VIDEO_CONSOLE, &dev))
                return CMD_RET_FAILURE;
        col = simple_strtoul(argv[1], NULL, 10);
        row = simple_strtoul(argv[2], NULL, 10);
@@ -259,8 +258,7 @@ static int do_video_puts(cmd_tbl_t *cmdtp, int flag, int argc,
        if (argc != 2)
                return CMD_RET_USAGE;
 
-       uclass_first_device(UCLASS_VIDEO_CONSOLE, &dev);
-       if (!dev)
+       if (uclass_first_device_err(UCLASS_VIDEO_CONSOLE, &dev))
                return CMD_RET_FAILURE;
        for (s = argv[1]; *s; s++)
                vidconsole_put_char(dev, *s);
index f428d454fbece41d01ca4610cc2201e5f0716502..88f24060f00683c001e982b9365d9d098d62a2e3 100644 (file)
--- a/lib/tpm.c
+++ b/lib/tpm.c
@@ -242,7 +242,7 @@ static uint32_t tpm_sendrecv_command(const void *command,
                response_length = sizeof(response_buffer);
        }
 
-       ret = uclass_first_device(UCLASS_TPM, &dev);
+       ret = uclass_first_device_err(UCLASS_TPM, &dev);
        if (ret)
                return ret;
        err = tpm_xfer(dev, command, tpm_command_size(command),
@@ -261,8 +261,8 @@ int tpm_init(void)
        int err;
        struct udevice *dev;
 
-       err = uclass_first_device(UCLASS_TPM, &dev);
-       if (err || !dev)
+       err = uclass_first_device_err(UCLASS_TPM, &dev);
+       if (err)
                return err;
        return tpm_open(dev);
 }