Skip to content
Snippets Groups Projects
Commit 7c84319a authored by Simon Glass's avatar Simon Glass
Browse files

dm: gpio: Correct use of -ENODEV in drivers


In U-Boot -ENODEV means that there is no device. When there is a problem
with the device, drivers should return an error like -ENXIO or -EREMOTEIO.
When the device tree properties cannot be read correct , they should
return -EINVAL.

Update various GPIO drivers to follow this rule, to help with consistency
for future driver writers.

Signed-off-by: default avatarSimon Glass <sjg@chromium.org>
Reported-by: default avatarAdam Ford <aford173@gmail.com>
parent 4d686041
No related branches found
No related tags found
No related merge requests found
...@@ -138,7 +138,7 @@ int peripheral_request(unsigned short per, const char *label) ...@@ -138,7 +138,7 @@ int peripheral_request(unsigned short per, const char *label)
return 0; return 0;
if (!(per & P_DEFINED)) if (!(per & P_DEFINED))
return -ENODEV; return -EINVAL;
BUG_ON(ident >= MAX_RESOURCES); BUG_ON(ident >= MAX_RESOURCES);
......
...@@ -50,11 +50,11 @@ static int atmel_pio4_config_io_func(u32 port, u32 pin, ...@@ -50,11 +50,11 @@ static int atmel_pio4_config_io_func(u32 port, u32 pin,
u32 reg, mask; u32 reg, mask;
if (pin >= ATMEL_PIO_NPINS_PER_BANK) if (pin >= ATMEL_PIO_NPINS_PER_BANK)
return -ENODEV; return -EINVAL;
port_base = atmel_pio4_port_base(port); port_base = atmel_pio4_port_base(port);
if (!port_base) if (!port_base)
return -ENODEV; return -EINVAL;
mask = 1 << pin; mask = 1 << pin;
reg = func; reg = func;
...@@ -128,11 +128,11 @@ int atmel_pio4_set_pio_output(u32 port, u32 pin, u32 value) ...@@ -128,11 +128,11 @@ int atmel_pio4_set_pio_output(u32 port, u32 pin, u32 value)
u32 reg, mask; u32 reg, mask;
if (pin >= ATMEL_PIO_NPINS_PER_BANK) if (pin >= ATMEL_PIO_NPINS_PER_BANK)
return -ENODEV; return -EINVAL;
port_base = atmel_pio4_port_base(port); port_base = atmel_pio4_port_base(port);
if (!port_base) if (!port_base)
return -ENODEV; return -EINVAL;
mask = 0x01 << pin; mask = 0x01 << pin;
reg = ATMEL_PIO_CFGR_FUNC_GPIO | ATMEL_PIO_DIR_MASK; reg = ATMEL_PIO_CFGR_FUNC_GPIO | ATMEL_PIO_DIR_MASK;
...@@ -154,11 +154,11 @@ int atmel_pio4_get_pio_input(u32 port, u32 pin) ...@@ -154,11 +154,11 @@ int atmel_pio4_get_pio_input(u32 port, u32 pin)
u32 reg, mask; u32 reg, mask;
if (pin >= ATMEL_PIO_NPINS_PER_BANK) if (pin >= ATMEL_PIO_NPINS_PER_BANK)
return -ENODEV; return -EINVAL;
port_base = atmel_pio4_port_base(port); port_base = atmel_pio4_port_base(port);
if (!port_base) if (!port_base)
return -ENODEV; return -EINVAL;
mask = 0x01 << pin; mask = 0x01 << pin;
reg = ATMEL_PIO_CFGR_FUNC_GPIO; reg = ATMEL_PIO_CFGR_FUNC_GPIO;
......
...@@ -168,7 +168,7 @@ static int imx_rgpio2p_bind(struct udevice *dev) ...@@ -168,7 +168,7 @@ static int imx_rgpio2p_bind(struct udevice *dev)
addr = devfdt_get_addr_index(dev, 1); addr = devfdt_get_addr_index(dev, 1);
if (addr == FDT_ADDR_T_NONE) if (addr == FDT_ADDR_T_NONE)
return -ENODEV; return -EINVAL;
/* /*
* TODO: * TODO:
......
...@@ -304,7 +304,7 @@ static int mxc_gpio_bind(struct udevice *dev) ...@@ -304,7 +304,7 @@ static int mxc_gpio_bind(struct udevice *dev)
addr = devfdt_get_addr(dev); addr = devfdt_get_addr(dev);
if (addr == FDT_ADDR_T_NONE) if (addr == FDT_ADDR_T_NONE)
return -ENODEV; return -EINVAL;
/* /*
* TODO: * TODO:
......
...@@ -307,7 +307,7 @@ static int omap_gpio_bind(struct udevice *dev) ...@@ -307,7 +307,7 @@ static int omap_gpio_bind(struct udevice *dev)
base_addr = devfdt_get_addr(dev); base_addr = devfdt_get_addr(dev);
if (base_addr == FDT_ADDR_T_NONE) if (base_addr == FDT_ADDR_T_NONE)
return -ENODEV; return -EINVAL;
/* /*
* TODO: * TODO:
......
...@@ -181,7 +181,7 @@ static int tegra186_gpio_bind(struct udevice *parent) ...@@ -181,7 +181,7 @@ static int tegra186_gpio_bind(struct udevice *parent)
regs = (uint32_t *)devfdt_get_addr_name(parent, "gpio"); regs = (uint32_t *)devfdt_get_addr_name(parent, "gpio");
if (regs == (uint32_t *)FDT_ADDR_T_NONE) if (regs == (uint32_t *)FDT_ADDR_T_NONE)
return -ENODEV; return -EINVAL;
for (port = 0; port < ctlr_data->port_count; port++) { for (port = 0; port < ctlr_data->port_count; port++) {
struct tegra186_gpio_platdata *plat; struct tegra186_gpio_platdata *plat;
......
...@@ -412,7 +412,7 @@ static int imx_lpi2c_probe(struct udevice *bus) ...@@ -412,7 +412,7 @@ static int imx_lpi2c_probe(struct udevice *bus)
addr = devfdt_get_addr(bus); addr = devfdt_get_addr(bus);
if (addr == FDT_ADDR_T_NONE) if (addr == FDT_ADDR_T_NONE)
return -ENODEV; return -EINVAL;
i2c_bus->base = addr; i2c_bus->base = addr;
i2c_bus->index = bus->seq; i2c_bus->index = bus->seq;
......
...@@ -176,7 +176,7 @@ static int bus_i2c_set_bus_speed(struct mxc_i2c_bus *i2c_bus, int speed) ...@@ -176,7 +176,7 @@ static int bus_i2c_set_bus_speed(struct mxc_i2c_bus *i2c_bus, int speed)
int reg_shift = quirk ? VF610_I2C_REGSHIFT : IMX_I2C_REGSHIFT; int reg_shift = quirk ? VF610_I2C_REGSHIFT : IMX_I2C_REGSHIFT;
if (!base) if (!base)
return -ENODEV; return -EINVAL;
/* Store divider value */ /* Store divider value */
writeb(idx, base + (IFDR << reg_shift)); writeb(idx, base + (IFDR << reg_shift));
...@@ -239,7 +239,7 @@ static int tx_byte(struct mxc_i2c_bus *i2c_bus, u8 byte) ...@@ -239,7 +239,7 @@ static int tx_byte(struct mxc_i2c_bus *i2c_bus, u8 byte)
if (ret < 0) if (ret < 0)
return ret; return ret;
if (ret & I2SR_RX_NO_AK) if (ret & I2SR_RX_NO_AK)
return -ENODEV; return -EREMOTEIO;
return 0; return 0;
} }
...@@ -418,14 +418,14 @@ static int i2c_init_transfer(struct mxc_i2c_bus *i2c_bus, u8 chip, ...@@ -418,14 +418,14 @@ static int i2c_init_transfer(struct mxc_i2c_bus *i2c_bus, u8 chip,
VF610_I2C_REGSHIFT : IMX_I2C_REGSHIFT; VF610_I2C_REGSHIFT : IMX_I2C_REGSHIFT;
if (!i2c_bus->base) if (!i2c_bus->base)
return -ENODEV; return -EINVAL;
for (retry = 0; retry < 3; retry++) { for (retry = 0; retry < 3; retry++) {
ret = i2c_init_transfer_(i2c_bus, chip, addr, alen); ret = i2c_init_transfer_(i2c_bus, chip, addr, alen);
if (ret >= 0) if (ret >= 0)
return 0; return 0;
i2c_imx_stop(i2c_bus); i2c_imx_stop(i2c_bus);
if (ret == -ENODEV) if (ret == -EREMOTEIO)
return ret; return ret;
printf("%s: failed for chip 0x%x retry=%d\n", __func__, chip, printf("%s: failed for chip 0x%x retry=%d\n", __func__, chip,
...@@ -754,7 +754,7 @@ static int mxc_i2c_probe(struct udevice *bus) ...@@ -754,7 +754,7 @@ static int mxc_i2c_probe(struct udevice *bus)
addr = devfdt_get_addr(bus); addr = devfdt_get_addr(bus);
if (addr == FDT_ADDR_T_NONE) if (addr == FDT_ADDR_T_NONE)
return -ENODEV; return -EINVAL;
i2c_bus->base = addr; i2c_bus->base = addr;
i2c_bus->index = bus->seq; i2c_bus->index = bus->seq;
...@@ -783,7 +783,7 @@ static int mxc_i2c_probe(struct udevice *bus) ...@@ -783,7 +783,7 @@ static int mxc_i2c_probe(struct udevice *bus)
!dm_gpio_is_valid(&i2c_bus->scl_gpio) | !dm_gpio_is_valid(&i2c_bus->scl_gpio) |
ret | ret2) { ret | ret2) {
dev_err(dev, "i2c bus %d at %lu, fail to request scl/sda gpio\n", bus->seq, i2c_bus->base); dev_err(dev, "i2c bus %d at %lu, fail to request scl/sda gpio\n", bus->seq, i2c_bus->base);
return -ENODEV; return -EINVAL;
} }
} }
......
...@@ -94,7 +94,7 @@ static int tegra186_bpmp_i2c_probe(struct udevice *dev) ...@@ -94,7 +94,7 @@ static int tegra186_bpmp_i2c_probe(struct udevice *dev)
"nvidia,bpmp-bus-id", U32_MAX); "nvidia,bpmp-bus-id", U32_MAX);
if (priv->bpmp_bus_id == U32_MAX) { if (priv->bpmp_bus_id == U32_MAX) {
debug("%s: could not parse nvidia,bpmp-bus-id\n", __func__); debug("%s: could not parse nvidia,bpmp-bus-id\n", __func__);
return -ENODEV; return -EINVAL;
} }
return 0; return 0;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment