* [PATCH v3 0/9] Use -ENOSYS consistently
@ 2021-03-24 21:26 Simon Glass
2021-03-24 21:26 ` [PATCH v3 1/9] dm: core: Document the common error codes Simon Glass
` (16 more replies)
0 siblings, 17 replies; 20+ messages in thread
From: Simon Glass @ 2021-03-24 21:26 UTC (permalink / raw)
To: u-boot
A few places use -ENOTSUPP when they should use -ENOSYS. In two cases both
are used. This little series tidies this up and documents the conventions.
Changes in v3:
- Add updates based on feedback from Sean Anderson <seanga2@gmail.com>
Changes in v2:
- Add a patch to document the common error codes
- Add new patch for acpi_get_path()
- Add new patch to update clk drivers to use -EINVAL
Simon Glass (9):
dm: core: Document the common error codes
dm: core: Use -ENOSPC in acpi_get_path()
usb: Return -ENOSYS when system call is not available
spi: Return -ENOSYS when system call is not available
tlv_eeprom: Return -ENOSYS when system call is not available
clk: Update drivers to use -EINVAL
clk: Return -ENOSYS when system call is not available
simple-pm-bus: Use -ENOSYS for checking missing system call
pinctrl: Return -ENOSYS when system call is not available
doc/driver-model/design.rst | 133 +++++++++++++++++++++++++
drivers/clk/aspeed/clk_ast2600.c | 2 +-
drivers/clk/clk-composite.c | 8 +-
drivers/clk/clk-hsdk-cgu.c | 4 +-
drivers/clk/imx/clk-imx8.c | 4 +-
drivers/clk/imx/clk-imx8qm.c | 6 +-
drivers/clk/imx/clk-imx8qxp.c | 6 +-
drivers/clk/imx/clk-pllv3.c | 2 +-
drivers/clk/kendryte/bypass.c | 2 +-
drivers/clk/kendryte/clk.c | 2 +-
drivers/clk/mvebu/armada-37xx-periph.c | 6 +-
drivers/core/acpi.c | 2 +-
drivers/core/simple-pm-bus.c | 4 +-
drivers/pinctrl/pinctrl-uclass.c | 10 +-
drivers/usb/gadget/udc/udc-uclass.c | 2 +-
include/spi-mem.h | 2 +-
include/tlv_eeprom.h | 6 +-
17 files changed, 168 insertions(+), 33 deletions(-)
--
2.31.0.291.g576ba9dcdaf-goog
^ permalink raw reply [flat|nested] 20+ messages in thread
* [PATCH v3 1/9] dm: core: Document the common error codes
2021-03-24 21:26 [PATCH v3 0/9] Use -ENOSYS consistently Simon Glass
@ 2021-03-24 21:26 ` Simon Glass
2021-03-24 23:50 ` Sean Anderson
2021-04-06 4:34 ` Simon Glass
2021-03-24 21:26 ` [PATCH v3 2/9] dm: core: Use -ENOSPC in acpi_get_path() Simon Glass
` (15 subsequent siblings)
16 siblings, 2 replies; 20+ messages in thread
From: Simon Glass @ 2021-03-24 21:26 UTC (permalink / raw)
To: u-boot
Driver model uses quite strong conventions on error codes, but these are
currently not clearly documented. Add a description of the commonly used
errors.
Signed-off-by: Simon Glass <sjg@chromium.org>
---
Changes in v3:
- Add updates based on feedback from Sean Anderson <seanga2@gmail.com>
Changes in v2:
- Add a patch to document the common error codes
doc/driver-model/design.rst | 133 ++++++++++++++++++++++++++++++++++++
1 file changed, 133 insertions(+)
diff --git a/doc/driver-model/design.rst b/doc/driver-model/design.rst
index 4e5cecbab6a..b0e6337030a 100644
--- a/doc/driver-model/design.rst
+++ b/doc/driver-model/design.rst
@@ -900,6 +900,139 @@ Some special flags are used to determine whether to remove the device:
The dm_remove_devices_flags() function can be used to remove devices based on
their driver flags.
+
+Error codes
+-----------
+
+Driver model tries to use errors codes in a consistent way, as follows:
+
+\-EAGAIN
+ Try later, e.g. dependencies not ready
+
+\-EINVAL
+ Invalid argument, such as `dev_read_...()` failed or any other
+ devicetree-related access. Also used when a driver method is passed an
+ argument it considers invalid or does not support.
+
+\-EIO
+ Failed to perform an I/O operation. This is used when a local device
+ (i.e. part of the SOC) does not work as expected. Use -EREMOTEIO for
+ failures to talk to a separate device, e.g. over an I2C or SPI
+ channel.
+
+\-ENODEV
+ Do not bind the device. This should not be used to indicate an
+ error probing the device or for any other purpose, lest driver model get
+ confused. Using `-ENODEV` inside a driver method makes no sense, since
+ clearly there is a device.
+
+\-ENOENT
+ Entry or object not found. This is used when a device, file or directory
+ cannot be found (e.g. when looked up by name), It can also indicate a
+ missing devicetree subnode.
+
+\-ENOMEM
+ Out of memory
+
+\-ENOSPC
+ Ran out of space (e.g. in a buffer or limited-size array)
+
+\-ENOSYS
+ Function not implemented. This is returned by uclasses where the driver does
+ not implement a particular method. It can also be returned by drivers when
+ a particular sub-method is not implemented. This is widely checked in the
+ wider code base, where a feature may or may not be compiled into U-Boot. It
+ indicates that the feature is not available, but this is often just normal
+ operation. Please do not use -ENOSUPP. If an incorrect or unknown argument
+ is provided to a method (e.g. an unknown clock ID), return -EINVAL.
+
+\-ENXIO
+ Couldn't find device/address. This is used when a device or address
+ could not be obtained or is not valid. It is often used to indicate a
+ different type of problem, if -ENOENT is already used for something else in
+ the driver.
+
+\-EPERM
+ This is -1 so some older code may use it as a generic error. This indicates
+ that an operation is not permitted, e.g. a security violation or policy
+ constraint. It is returned internally when binding devices before relocation,
+ if the device is not marked for pre-relocation use.
+
+\-EPFNOSUPPORT
+ Missing uclass. This is deliberately an uncommon error code so that it can
+ easily be distinguished. If you see this very early in U-Boot, it means that
+ a device exists with a particular uclass but the uclass does not (mostly
+ likely because it is not compiled in). Enable DEBUG in uclass.c or lists.c
+ to see which uclass ID or driver is causing the problem.
+
+\-EREMOTEIO
+ This indicates an error in talking to a peripheral over a comms link, such
+ as I2C or SPI. It might indicate that the device is not present or is not
+ responding as expected.
+
+\-ETIMEDOUT
+ Hardware access or some other operation has timed out. This is used where
+ there is an expected time of response and that was exceeded by enough of
+ a margin that there is probably something wrong.
+
+
+Less common ones:
+
+\-ECOMM
+ Not widely used, but similar to -EREMOTEIO. Can be useful as a secondary
+ error to distinguish the problem from -EREMOTEIO.
+
+\-EKEYREJECTED
+ Attempt to remove a device which does not match the removal flags. See
+ device_remove().
+
+\-EILSEQ
+ Devicetree read failure, specifically trying to read a string index which
+ does not exist, in a string-listg property
+
+\-ENOEXEC
+ Attempt to use a uclass method on a device not in that uclass. This is
+ seldom checked at present, since it is generally a programming error and a
+ waste of code space. A DEBUG-only check would be useful here.
+
+\-ENODATA
+ Devicetree read error, where a property exists but has no data associated
+ with it
+
+\-EOVERFLOW
+ Devicetree read error, where the property is longer than expected
+
+\-EPROBE_DEFER
+ Attempt to remove a non-vital device when the removal flags indicate that
+ only vital devices should be removed
+
+\-ERANGE
+ Returned by regmap functions when arguments are out of range. This can be
+ useful for disinguishing regmap errors from other errors obtained while
+ probing devices.
+
+Drivers should use the same conventions so that things function as expected.
+In particular, if a driver fails to probe, or a uclass operation fails, the
+error code is the primary way to indicate what actually happened.
+
+Printing error messages in drivers is discouraged due to code size bloat and
+since it can result in messages appearing in normal operation. For example, if
+a command tries two different devices and uses whichever one probes correctly,
+we don't want an error message displayed, even if the command itself might show
+a warning or informational message. Ideally, messages in drivers should only be
+displayed when debugging, e.g. by using log_debug() although in extreme cases
+log_warning() or log_error() may be used.
+
+Error messages can be logged using `log_msg_ret()`, so that enabling
+`CONFIG_LOG` and `CONFIG_LOG_ERROR_RETURN` shows a trace of error codes returned
+through the call stack. That can be a handy way of quickly figuring out where
+an error occurred. Get into the habit of return errors with
+`return log_msg_ret("here", ret)` instead of just `return ret`. The string
+just needs to be long enough to find in a single function, since a log record
+stores (and can print with `CONFIG_LOGF_FUNC`) the function where it was
+generated.
+
+
Data Structures
---------------
--
2.31.0.291.g576ba9dcdaf-goog
^ permalink raw reply related [flat|nested] 20+ messages in thread
* [PATCH v3 2/9] dm: core: Use -ENOSPC in acpi_get_path()
2021-03-24 21:26 [PATCH v3 0/9] Use -ENOSYS consistently Simon Glass
2021-03-24 21:26 ` [PATCH v3 1/9] dm: core: Document the common error codes Simon Glass
@ 2021-03-24 21:26 ` Simon Glass
2021-03-24 21:26 ` [PATCH v3 3/9] usb: Return -ENOSYS when system call is not available Simon Glass
` (14 subsequent siblings)
16 siblings, 0 replies; 20+ messages in thread
From: Simon Glass @ 2021-03-24 21:26 UTC (permalink / raw)
To: u-boot
Update this function to use -ENOSPC which is more commly used when a buffer
runs out of space.
Signed-off-by: Simon Glass <sjg@chromium.org>
---
(no changes since v2)
Changes in v2:
- Add new patch for acpi_get_path()
drivers/core/acpi.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/core/acpi.c b/drivers/core/acpi.c
index 0901b9260a1..2176d8b8365 100644
--- a/drivers/core/acpi.c
+++ b/drivers/core/acpi.c
@@ -91,7 +91,7 @@ int acpi_get_path(const struct udevice *dev, char *out_path, int maxlen)
path = dev_read_string(dev, "acpi,path");
if (path) {
if (strlen(path) >= maxlen)
- return -E2BIG;
+ return -ENOSPC;
strcpy(out_path, path);
return 0;
}
--
2.31.0.291.g576ba9dcdaf-goog
^ permalink raw reply related [flat|nested] 20+ messages in thread
* [PATCH v3 3/9] usb: Return -ENOSYS when system call is not available
2021-03-24 21:26 [PATCH v3 0/9] Use -ENOSYS consistently Simon Glass
2021-03-24 21:26 ` [PATCH v3 1/9] dm: core: Document the common error codes Simon Glass
2021-03-24 21:26 ` [PATCH v3 2/9] dm: core: Use -ENOSPC in acpi_get_path() Simon Glass
@ 2021-03-24 21:26 ` Simon Glass
2021-03-24 21:26 ` [PATCH v3 4/9] spi: " Simon Glass
` (13 subsequent siblings)
16 siblings, 0 replies; 20+ messages in thread
From: Simon Glass @ 2021-03-24 21:26 UTC (permalink / raw)
To: u-boot
Update usb_gadget_release() to use -ENOSYS, which is the correct error
code for U-Boot.
Signed-off-by: Simon Glass <sjg@chromium.org>
---
(no changes since v1)
drivers/usb/gadget/udc/udc-uclass.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/usb/gadget/udc/udc-uclass.c b/drivers/usb/gadget/udc/udc-uclass.c
index 3053ccf7d97..dbc354e84f9 100644
--- a/drivers/usb/gadget/udc/udc-uclass.c
+++ b/drivers/usb/gadget/udc/udc-uclass.c
@@ -45,7 +45,7 @@ int usb_gadget_release(int index)
dev_array[index] = NULL;
return ret;
#else
- return -ENOTSUPP;
+ return -ENOSYS;
#endif
}
--
2.31.0.291.g576ba9dcdaf-goog
^ permalink raw reply related [flat|nested] 20+ messages in thread
* [PATCH v3 4/9] spi: Return -ENOSYS when system call is not available
2021-03-24 21:26 [PATCH v3 0/9] Use -ENOSYS consistently Simon Glass
` (2 preceding siblings ...)
2021-03-24 21:26 ` [PATCH v3 3/9] usb: Return -ENOSYS when system call is not available Simon Glass
@ 2021-03-24 21:26 ` Simon Glass
2021-03-24 21:26 ` [PATCH v3 5/9] tlv_eeprom: " Simon Glass
` (12 subsequent siblings)
16 siblings, 0 replies; 20+ messages in thread
From: Simon Glass @ 2021-03-24 21:26 UTC (permalink / raw)
To: u-boot
Update spi_controller_dma_map_mem_op_data() to use -ENOSYS, which is the
correct error code for U-Boot.
Signed-off-by: Simon Glass <sjg@chromium.org>
---
(no changes since v1)
include/spi-mem.h | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/include/spi-mem.h b/include/spi-mem.h
index 8be3e2bf6b5..e354c388979 100644
--- a/include/spi-mem.h
+++ b/include/spi-mem.h
@@ -222,7 +222,7 @@ spi_controller_dma_map_mem_op_data(struct spi_controller *ctlr,
const struct spi_mem_op *op,
struct sg_table *sg)
{
- return -ENOTSUPP;
+ return -ENOSYS;
}
static inline void
--
2.31.0.291.g576ba9dcdaf-goog
^ permalink raw reply related [flat|nested] 20+ messages in thread
* [PATCH v3 5/9] tlv_eeprom: Return -ENOSYS when system call is not available
2021-03-24 21:26 [PATCH v3 0/9] Use -ENOSYS consistently Simon Glass
` (3 preceding siblings ...)
2021-03-24 21:26 ` [PATCH v3 4/9] spi: " Simon Glass
@ 2021-03-24 21:26 ` Simon Glass
2021-03-24 21:26 ` [PATCH v3 6/9] clk: Update drivers to use -EINVAL Simon Glass
` (11 subsequent siblings)
16 siblings, 0 replies; 20+ messages in thread
From: Simon Glass @ 2021-03-24 21:26 UTC (permalink / raw)
To: u-boot
When CMD_TLV_EEPROM is not enabled, use -ENOSYS, which is the correct
error code for U-Boot.
Signed-off-by: Simon Glass <sjg@chromium.org>
---
(no changes since v1)
include/tlv_eeprom.h | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/include/tlv_eeprom.h b/include/tlv_eeprom.h
index 1de2fe2337c..a2c333e7446 100644
--- a/include/tlv_eeprom.h
+++ b/include/tlv_eeprom.h
@@ -114,19 +114,19 @@ int read_tlvinfo_tlv_eeprom(void *eeprom, struct tlvinfo_header **hdr,
static inline int read_tlv_eeprom(void *eeprom, int offset, int len, int dev)
{
- return -ENOTSUPP;
+ return -ENOSYS;
}
static inline int write_tlv_eeprom(void *eeprom, int len)
{
- return -ENOTSUPP;
+ return -ENOSYS;
}
static inline int
read_tlvinfo_tlv_eeprom(void *eeprom, struct tlvinfo_header **hdr,
struct tlvinfo_tlv **first_entry, int dev)
{
- return -ENOTSUPP;
+ return -ENOSYS;
}
#endif /* CONFIG_IS_ENABLED(CMD_TLV_EEPROM) */
--
2.31.0.291.g576ba9dcdaf-goog
^ permalink raw reply related [flat|nested] 20+ messages in thread
* [PATCH v3 6/9] clk: Update drivers to use -EINVAL
2021-03-24 21:26 [PATCH v3 0/9] Use -ENOSYS consistently Simon Glass
` (4 preceding siblings ...)
2021-03-24 21:26 ` [PATCH v3 5/9] tlv_eeprom: " Simon Glass
@ 2021-03-24 21:26 ` Simon Glass
2021-03-24 21:26 ` [PATCH v3 7/9] clk: Return -ENOSYS when system call is not available Simon Glass
` (10 subsequent siblings)
16 siblings, 0 replies; 20+ messages in thread
From: Simon Glass @ 2021-03-24 21:26 UTC (permalink / raw)
To: u-boot
At present some drivers use -ENOSUPP to indicate that an unknown or
unsupported clock is used. Most use -EINVAL, indicating an invalid value,
so convert everything to that.
Signed-off-by: Simon Glass <sjg@chromium.org>
Acked-by: Sean Anderson <seanga2@gmail.com>
Reviewed-by: Stefan Roese <sr@denx.de>
---
(no changes since v2)
Changes in v2:
- Add new patch to update clk drivers to use -EINVAL
drivers/clk/aspeed/clk_ast2600.c | 2 +-
drivers/clk/clk-hsdk-cgu.c | 4 ++--
drivers/clk/imx/clk-imx8.c | 4 ++--
drivers/clk/imx/clk-imx8qm.c | 6 +++---
drivers/clk/imx/clk-imx8qxp.c | 6 +++---
drivers/clk/imx/clk-pllv3.c | 2 +-
drivers/clk/kendryte/bypass.c | 2 +-
drivers/clk/kendryte/clk.c | 2 +-
drivers/clk/mvebu/armada-37xx-periph.c | 6 +++---
9 files changed, 17 insertions(+), 17 deletions(-)
diff --git a/drivers/clk/aspeed/clk_ast2600.c b/drivers/clk/aspeed/clk_ast2600.c
index acb7eca7414..3a92739f5cf 100644
--- a/drivers/clk/aspeed/clk_ast2600.c
+++ b/drivers/clk/aspeed/clk_ast2600.c
@@ -1140,7 +1140,7 @@ int soc_clk_dump(void)
clk_free(&clk);
- if (ret == -ENOTSUPP) {
+ if (ret == -EINVAL) {
printf("clk ID %lu not supported yet\n",
aspeed_clk_names[i].id);
continue;
diff --git a/drivers/clk/clk-hsdk-cgu.c b/drivers/clk/clk-hsdk-cgu.c
index 449b430e230..26b0aa9a26f 100644
--- a/drivers/clk/clk-hsdk-cgu.c
+++ b/drivers/clk/clk-hsdk-cgu.c
@@ -718,7 +718,7 @@ static ulong hsdk_cgu_set_rate(struct clk *sclk, ulong rate)
if (clk->map[sclk->id].set_rate)
return clk->map[sclk->id].set_rate(sclk, rate);
- return -ENOTSUPP;
+ return -EINVAL;
}
static int hsdk_cgu_disable(struct clk *sclk)
@@ -731,7 +731,7 @@ static int hsdk_cgu_disable(struct clk *sclk)
if (clk->map[sclk->id].disable)
return clk->map[sclk->id].disable(sclk);
- return -ENOTSUPP;
+ return -EINVAL;
}
static const struct clk_ops hsdk_cgu_ops = {
diff --git a/drivers/clk/imx/clk-imx8.c b/drivers/clk/imx/clk-imx8.c
index 8484613eed5..b3dc138c4bb 100644
--- a/drivers/clk/imx/clk-imx8.c
+++ b/drivers/clk/imx/clk-imx8.c
@@ -29,7 +29,7 @@ __weak ulong imx8_clk_set_rate(struct clk *clk, unsigned long rate)
__weak int __imx8_clk_enable(struct clk *clk, bool enable)
{
- return -ENOTSUPP;
+ return -EINVAL;
}
static int imx8_clk_disable(struct clk *clk)
@@ -70,7 +70,7 @@ int soc_clk_dump(void)
clk_free(&clk);
- if (ret == -ENOTSUPP) {
+ if (ret == -EINVAL) {
printf("clk ID %lu not supported yet\n",
imx8_clk_names[i].id);
continue;
diff --git a/drivers/clk/imx/clk-imx8qm.c b/drivers/clk/imx/clk-imx8qm.c
index 7e466d630a0..7759dc63ee1 100644
--- a/drivers/clk/imx/clk-imx8qm.c
+++ b/drivers/clk/imx/clk-imx8qm.c
@@ -133,7 +133,7 @@ ulong imx8_clk_get_rate(struct clk *clk)
__func__, clk->id);
return -EINVAL;
}
- return -ENOTSUPP;
+ return -EINVAL;
};
ret = sc_pm_get_clock_rate(-1, resource, pm_clk,
@@ -237,7 +237,7 @@ ulong imx8_clk_set_rate(struct clk *clk, unsigned long rate)
__func__, clk->id);
return -EINVAL;
}
- return -ENOTSUPP;
+ return -EINVAL;
};
ret = sc_pm_set_clock_rate(-1, resource, pm_clk, &new_rate);
@@ -337,7 +337,7 @@ int __imx8_clk_enable(struct clk *clk, bool enable)
__func__, clk->id);
return -EINVAL;
}
- return -ENOTSUPP;
+ return -EINVAL;
}
ret = sc_pm_clock_enable(-1, resource, pm_clk, enable, 0);
diff --git a/drivers/clk/imx/clk-imx8qxp.c b/drivers/clk/imx/clk-imx8qxp.c
index e6b2fb40da2..ffa2fcee0b2 100644
--- a/drivers/clk/imx/clk-imx8qxp.c
+++ b/drivers/clk/imx/clk-imx8qxp.c
@@ -126,7 +126,7 @@ ulong imx8_clk_get_rate(struct clk *clk)
__func__, clk->id);
return -EINVAL;
}
- return -ENOTSUPP;
+ return -EINVAL;
};
ret = sc_pm_get_clock_rate(-1, resource, pm_clk,
@@ -221,7 +221,7 @@ ulong imx8_clk_set_rate(struct clk *clk, unsigned long rate)
__func__, clk->id);
return -EINVAL;
}
- return -ENOTSUPP;
+ return -EINVAL;
};
ret = sc_pm_set_clock_rate(-1, resource, pm_clk, &new_rate);
@@ -311,7 +311,7 @@ int __imx8_clk_enable(struct clk *clk, bool enable)
__func__, clk->id);
return -EINVAL;
}
- return -ENOTSUPP;
+ return -EINVAL;
}
ret = sc_pm_clock_enable(-1, resource, pm_clk, enable, 0);
diff --git a/drivers/clk/imx/clk-pllv3.c b/drivers/clk/imx/clk-pllv3.c
index feacaee1c42..b5cbf800543 100644
--- a/drivers/clk/imx/clk-pllv3.c
+++ b/drivers/clk/imx/clk-pllv3.c
@@ -290,7 +290,7 @@ struct clk *imx_clk_pllv3(enum imx_pllv3_type type, const char *name,
break;
default:
kfree(pll);
- return ERR_PTR(-ENOTSUPP);
+ return ERR_PTR(-EINVAL);
}
pll->base = base;
diff --git a/drivers/clk/kendryte/bypass.c b/drivers/clk/kendryte/bypass.c
index 5f1986f2cb8..bbdbd9a10de 100644
--- a/drivers/clk/kendryte/bypass.c
+++ b/drivers/clk/kendryte/bypass.c
@@ -157,7 +157,7 @@ static int k210_bypass_set_parent(struct clk *clk, struct clk *parent)
if (ops->set_parent)
return ops->set_parent(bypass->bypassee, parent);
else
- return -ENOTSUPP;
+ return -EINVAL;
}
/*
diff --git a/drivers/clk/kendryte/clk.c b/drivers/clk/kendryte/clk.c
index 4b959401a63..3b674a998e3 100644
--- a/drivers/clk/kendryte/clk.c
+++ b/drivers/clk/kendryte/clk.c
@@ -495,7 +495,7 @@ static int k210_clk_probe(struct udevice *dev)
* could fix this, but it's Probably Not Worth It (TM).
*/
if (probed)
- return -ENOTSUPP;
+ return -EINVAL;
base = dev_read_addr_ptr(dev_get_parent(dev));
if (!base)
diff --git a/drivers/clk/mvebu/armada-37xx-periph.c b/drivers/clk/mvebu/armada-37xx-periph.c
index 0132fcb7e61..b0f47c33b3f 100644
--- a/drivers/clk/mvebu/armada-37xx-periph.c
+++ b/drivers/clk/mvebu/armada-37xx-periph.c
@@ -340,7 +340,7 @@ static int periph_clk_enable(struct clk *clk, int enable)
return -EINVAL;
if (!periph_clk->can_gate)
- return -ENOTSUPP;
+ return -EINVAL;
if (enable)
clrbits_le32(priv->reg + CLK_DIS, periph_clk->disable_bit);
@@ -408,7 +408,7 @@ static ulong armada_37xx_periph_clk_set_rate(struct clk *clk, ulong req_rate)
return old_rate;
if (!periph_clk->can_gate || !periph_clk->dividers)
- return -ENOTSUPP;
+ return -EINVAL;
parent_rate = get_parent_rate(priv, clk->id);
if (parent_rate == -EINVAL)
@@ -445,7 +445,7 @@ static int armada_37xx_periph_clk_set_parent(struct clk *clk,
return -EINVAL;
if (!periph_clk->can_mux || !periph_clk->can_gate)
- return -ENOTSUPP;
+ return -EINVAL;
ret = clk_get_by_index(clk->dev, 0, &check_parent);
if (ret < 0)
--
2.31.0.291.g576ba9dcdaf-goog
^ permalink raw reply related [flat|nested] 20+ messages in thread
* [PATCH v3 7/9] clk: Return -ENOSYS when system call is not available
2021-03-24 21:26 [PATCH v3 0/9] Use -ENOSYS consistently Simon Glass
` (5 preceding siblings ...)
2021-03-24 21:26 ` [PATCH v3 6/9] clk: Update drivers to use -EINVAL Simon Glass
@ 2021-03-24 21:26 ` Simon Glass
2021-03-24 21:26 ` [PATCH v3 8/9] simple-pm-bus: Use -ENOSYS for checking missing system call Simon Glass
` (9 subsequent siblings)
16 siblings, 0 replies; 20+ messages in thread
From: Simon Glass @ 2021-03-24 21:26 UTC (permalink / raw)
To: u-boot
Update clk_composite_set_parent() to use -ENOSYS, which is the correct
error code for U-Boot. Also rearrange the code so that the error condition
is clearly indicated and the function runs to the end in the normal case,
since this is the common style in U-Boot.
Signed-off-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Sean Anderson <seanga2@gmail.com>
---
(no changes since v1)
drivers/clk/clk-composite.c | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/drivers/clk/clk-composite.c b/drivers/clk/clk-composite.c
index 7e99c5b910d..bb5351ebc0b 100644
--- a/drivers/clk/clk-composite.c
+++ b/drivers/clk/clk-composite.c
@@ -37,10 +37,10 @@ static int clk_composite_set_parent(struct clk *clk, struct clk *parent)
const struct clk_ops *mux_ops = composite->mux_ops;
struct clk *mux = composite->mux;
- if (mux && mux_ops)
- return mux_ops->set_parent(mux, parent);
- else
- return -ENOTSUPP;
+ if (!mux || !mux_ops)
+ return -ENOSYS;
+
+ return mux_ops->set_parent(mux, parent);
}
static unsigned long clk_composite_recalc_rate(struct clk *clk)
--
2.31.0.291.g576ba9dcdaf-goog
^ permalink raw reply related [flat|nested] 20+ messages in thread
* [PATCH v3 8/9] simple-pm-bus: Use -ENOSYS for checking missing system call
2021-03-24 21:26 [PATCH v3 0/9] Use -ENOSYS consistently Simon Glass
` (6 preceding siblings ...)
2021-03-24 21:26 ` [PATCH v3 7/9] clk: Return -ENOSYS when system call is not available Simon Glass
@ 2021-03-24 21:26 ` Simon Glass
2021-03-24 21:26 ` [PATCH v3 9/9] pinctrl: Return -ENOSYS when system call is not available Simon Glass
` (8 subsequent siblings)
16 siblings, 0 replies; 20+ messages in thread
From: Simon Glass @ 2021-03-24 21:26 UTC (permalink / raw)
To: u-boot
We don't need to check -ENOTSUPP since this is not used for this purpose
in U-Boot. Update the code accordingly.
Signed-off-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Sean Anderson <seanga2@gmail.com>
---
(no changes since v1)
drivers/core/simple-pm-bus.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/drivers/core/simple-pm-bus.c b/drivers/core/simple-pm-bus.c
index 7a18953cba1..1bb0d86e289 100644
--- a/drivers/core/simple-pm-bus.c
+++ b/drivers/core/simple-pm-bus.c
@@ -21,7 +21,7 @@ static int simple_pm_bus_probe(struct udevice *dev)
return ret;
ret = clk_enable_bulk(bulk);
- if (ret && ret != -ENOSYS && ret != -ENOTSUPP) {
+ if (ret && ret != -ENOSYS) {
clk_release_bulk(bulk);
return ret;
}
@@ -34,7 +34,7 @@ static int simple_pm_bus_remove(struct udevice *dev)
struct clk_bulk *bulk = dev_get_priv(dev);
ret = clk_release_bulk(bulk);
- if (ret && ret != -ENOSYS && ret != -ENOTSUPP)
+ if (ret && ret != -ENOSYS)
return ret;
else
return 0;
--
2.31.0.291.g576ba9dcdaf-goog
^ permalink raw reply related [flat|nested] 20+ messages in thread
* [PATCH v3 9/9] pinctrl: Return -ENOSYS when system call is not available
2021-03-24 21:26 [PATCH v3 0/9] Use -ENOSYS consistently Simon Glass
` (7 preceding siblings ...)
2021-03-24 21:26 ` [PATCH v3 8/9] simple-pm-bus: Use -ENOSYS for checking missing system call Simon Glass
@ 2021-03-24 21:26 ` Simon Glass
2021-04-06 4:34 ` Simon Glass
` (7 subsequent siblings)
16 siblings, 0 replies; 20+ messages in thread
From: Simon Glass @ 2021-03-24 21:26 UTC (permalink / raw)
To: u-boot
Update the code to use -ENOSYS, which is the correct error code for an
unimplemented system call in U-Boot.
Also we should not check for a missing operations array as this is not
permitted. For now this can be covered by an assert().
Signed-off-by: Simon Glass <sjg@chromium.org>
---
(no changes since v1)
drivers/pinctrl/pinctrl-uclass.c | 10 ++++++----
1 file changed, 6 insertions(+), 4 deletions(-)
diff --git a/drivers/pinctrl/pinctrl-uclass.c b/drivers/pinctrl/pinctrl-uclass.c
index b0f30aa1f75..6e68e52c32c 100644
--- a/drivers/pinctrl/pinctrl-uclass.c
+++ b/drivers/pinctrl/pinctrl-uclass.c
@@ -235,8 +235,9 @@ int pinctrl_gpio_request(struct udevice *dev, unsigned offset)
return ret;
ops = pinctrl_get_ops(pctldev);
- if (!ops || !ops->gpio_request_enable)
- return -ENOTSUPP;
+ assert(ops);
+ if (!ops->gpio_request_enable)
+ return -ENOSYS;
return ops->gpio_request_enable(pctldev, pin_selector);
}
@@ -261,8 +262,9 @@ int pinctrl_gpio_free(struct udevice *dev, unsigned offset)
return ret;
ops = pinctrl_get_ops(pctldev);
- if (!ops || !ops->gpio_disable_free)
- return -ENOTSUPP;
+ assert(ops);
+ if (!ops->gpio_disable_free)
+ return -ENOSYS;
return ops->gpio_disable_free(pctldev, pin_selector);
}
--
2.31.0.291.g576ba9dcdaf-goog
^ permalink raw reply related [flat|nested] 20+ messages in thread
* [PATCH v3 1/9] dm: core: Document the common error codes
2021-03-24 21:26 ` [PATCH v3 1/9] dm: core: Document the common error codes Simon Glass
@ 2021-03-24 23:50 ` Sean Anderson
2021-04-06 4:34 ` Simon Glass
1 sibling, 0 replies; 20+ messages in thread
From: Sean Anderson @ 2021-03-24 23:50 UTC (permalink / raw)
To: u-boot
On 3/24/21 5:26 PM, Simon Glass wrote:
> Driver model uses quite strong conventions on error codes, but these are
> currently not clearly documented. Add a description of the commonly used
> errors.
>
> Signed-off-by: Simon Glass <sjg@chromium.org>
> ---
>
> Changes in v3:
> - Add updates based on feedback from Sean Anderson <seanga2@gmail.com>
>
> Changes in v2:
> - Add a patch to document the common error codes
>
> doc/driver-model/design.rst | 133 ++++++++++++++++++++++++++++++++++++
> 1 file changed, 133 insertions(+)
>
> diff --git a/doc/driver-model/design.rst b/doc/driver-model/design.rst
> index 4e5cecbab6a..b0e6337030a 100644
> --- a/doc/driver-model/design.rst
> +++ b/doc/driver-model/design.rst
> @@ -900,6 +900,139 @@ Some special flags are used to determine whether to remove the device:
> The dm_remove_devices_flags() function can be used to remove devices based on
> their driver flags.
>
> +
> +Error codes
> +-----------
> +
> +Driver model tries to use errors codes in a consistent way, as follows:
> +
> +\-EAGAIN
> + Try later, e.g. dependencies not ready
> +
> +\-EINVAL
> + Invalid argument, such as `dev_read_...()` failed or any other
> + devicetree-related access. Also used when a driver method is passed an
> + argument it considers invalid or does not support.
> +
> +\-EIO
> + Failed to perform an I/O operation. This is used when a local device
> + (i.e. part of the SOC) does not work as expected. Use -EREMOTEIO for
> + failures to talk to a separate device, e.g. over an I2C or SPI
> + channel.
> +
> +\-ENODEV
> + Do not bind the device. This should not be used to indicate an
> + error probing the device or for any other purpose, lest driver model get
> + confused. Using `-ENODEV` inside a driver method makes no sense, since
> + clearly there is a device.
> +
> +\-ENOENT
> + Entry or object not found. This is used when a device, file or directory
> + cannot be found (e.g. when looked up by name), It can also indicate a
> + missing devicetree subnode.
> +
> +\-ENOMEM
> + Out of memory
> +
> +\-ENOSPC
> + Ran out of space (e.g. in a buffer or limited-size array)
> +
> +\-ENOSYS
> + Function not implemented. This is returned by uclasses where the driver does
> + not implement a particular method. It can also be returned by drivers when
> + a particular sub-method is not implemented. This is widely checked in the
> + wider code base, where a feature may or may not be compiled into U-Boot. It
> + indicates that the feature is not available, but this is often just normal
> + operation. Please do not use -ENOSUPP. If an incorrect or unknown argument
> + is provided to a method (e.g. an unknown clock ID), return -EINVAL.
> +
> +\-ENXIO
> + Couldn't find device/address. This is used when a device or address
> + could not be obtained or is not valid. It is often used to indicate a
> + different type of problem, if -ENOENT is already used for something else in
> + the driver.
> +
> +\-EPERM
> + This is -1 so some older code may use it as a generic error. This indicates
> + that an operation is not permitted, e.g. a security violation or policy
> + constraint. It is returned internally when binding devices before relocation,
> + if the device is not marked for pre-relocation use.
> +
> +\-EPFNOSUPPORT
> + Missing uclass. This is deliberately an uncommon error code so that it can
> + easily be distinguished. If you see this very early in U-Boot, it means that
> + a device exists with a particular uclass but the uclass does not (mostly
> + likely because it is not compiled in). Enable DEBUG in uclass.c or lists.c
> + to see which uclass ID or driver is causing the problem.
> +
> +\-EREMOTEIO
> + This indicates an error in talking to a peripheral over a comms link, such
> + as I2C or SPI. It might indicate that the device is not present or is not
> + responding as expected.
> +
> +\-ETIMEDOUT
> + Hardware access or some other operation has timed out. This is used where
> + there is an expected time of response and that was exceeded by enough of
> + a margin that there is probably something wrong.
> +
> +
> +Less common ones:
> +
> +\-ECOMM
> + Not widely used, but similar to -EREMOTEIO. Can be useful as a secondary
> + error to distinguish the problem from -EREMOTEIO.
> +
> +\-EKEYREJECTED
> + Attempt to remove a device which does not match the removal flags. See
> + device_remove().
> +
> +\-EILSEQ
> + Devicetree read failure, specifically trying to read a string index which
> + does not exist, in a string-listg property
> +
> +\-ENOEXEC
> + Attempt to use a uclass method on a device not in that uclass. This is
> + seldom checked at present, since it is generally a programming error and a
> + waste of code space. A DEBUG-only check would be useful here.
> +
> +\-ENODATA
> + Devicetree read error, where a property exists but has no data associated
> + with it
> +
> +\-EOVERFLOW
> + Devicetree read error, where the property is longer than expected
> +
> +\-EPROBE_DEFER
> + Attempt to remove a non-vital device when the removal flags indicate that
> + only vital devices should be removed
> +
> +\-ERANGE
> + Returned by regmap functions when arguments are out of range. This can be
> + useful for disinguishing regmap errors from other errors obtained while
> + probing devices.
> +
> +Drivers should use the same conventions so that things function as expected.
> +In particular, if a driver fails to probe, or a uclass operation fails, the
> +error code is the primary way to indicate what actually happened.
> +
> +Printing error messages in drivers is discouraged due to code size bloat and
> +since it can result in messages appearing in normal operation. For example, if
> +a command tries two different devices and uses whichever one probes correctly,
> +we don't want an error message displayed, even if the command itself might show
> +a warning or informational message. Ideally, messages in drivers should only be
> +displayed when debugging, e.g. by using log_debug() although in extreme cases
> +log_warning() or log_error() may be used.
> +
> +Error messages can be logged using `log_msg_ret()`, so that enabling
> +`CONFIG_LOG` and `CONFIG_LOG_ERROR_RETURN` shows a trace of error codes returned
> +through the call stack. That can be a handy way of quickly figuring out where
> +an error occurred. Get into the habit of return errors with
> +`return log_msg_ret("here", ret)` instead of just `return ret`. The string
> +just needs to be long enough to find in a single function, since a log record
> +stores (and can print with `CONFIG_LOGF_FUNC`) the function where it was
> +generated.
> +
> +
> Data Structures
> ---------------
>
>
Reviewed-by: Sean Anderson <seanga2@gmail.com>
^ permalink raw reply [flat|nested] 20+ messages in thread
* [PATCH v3 9/9] pinctrl: Return -ENOSYS when system call is not available
2021-03-24 21:26 [PATCH v3 0/9] Use -ENOSYS consistently Simon Glass
` (8 preceding siblings ...)
2021-03-24 21:26 ` [PATCH v3 9/9] pinctrl: Return -ENOSYS when system call is not available Simon Glass
@ 2021-04-06 4:34 ` Simon Glass
2021-04-06 4:34 ` [PATCH v3 8/9] simple-pm-bus: Use -ENOSYS for checking missing system call Simon Glass
` (6 subsequent siblings)
16 siblings, 0 replies; 20+ messages in thread
From: Simon Glass @ 2021-04-06 4:34 UTC (permalink / raw)
To: u-boot
Update the code to use -ENOSYS, which is the correct error code for an
unimplemented system call in U-Boot.
Also we should not check for a missing operations array as this is not
permitted. For now this can be covered by an assert().
Signed-off-by: Simon Glass <sjg@chromium.org>
---
(no changes since v1)
drivers/pinctrl/pinctrl-uclass.c | 10 ++++++----
1 file changed, 6 insertions(+), 4 deletions(-)
Applied to u-boot-dm, thanks!
^ permalink raw reply [flat|nested] 20+ messages in thread
* [PATCH v3 8/9] simple-pm-bus: Use -ENOSYS for checking missing system call
2021-03-24 21:26 [PATCH v3 0/9] Use -ENOSYS consistently Simon Glass
` (9 preceding siblings ...)
2021-04-06 4:34 ` Simon Glass
@ 2021-04-06 4:34 ` Simon Glass
2021-04-06 4:34 ` [PATCH v3 7/9] clk: Return -ENOSYS when system call is not available Simon Glass
` (5 subsequent siblings)
16 siblings, 0 replies; 20+ messages in thread
From: Simon Glass @ 2021-04-06 4:34 UTC (permalink / raw)
To: u-boot
We don't need to check -ENOTSUPP since this is not used for this purpose
in U-Boot. Update the code accordingly.
Signed-off-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Sean Anderson <seanga2@gmail.com>
---
(no changes since v1)
drivers/core/simple-pm-bus.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
Applied to u-boot-dm, thanks!
^ permalink raw reply [flat|nested] 20+ messages in thread
* [PATCH v3 7/9] clk: Return -ENOSYS when system call is not available
2021-03-24 21:26 [PATCH v3 0/9] Use -ENOSYS consistently Simon Glass
` (10 preceding siblings ...)
2021-04-06 4:34 ` [PATCH v3 8/9] simple-pm-bus: Use -ENOSYS for checking missing system call Simon Glass
@ 2021-04-06 4:34 ` Simon Glass
2021-04-06 4:34 ` [PATCH v3 6/9] clk: Update drivers to use -EINVAL Simon Glass
` (4 subsequent siblings)
16 siblings, 0 replies; 20+ messages in thread
From: Simon Glass @ 2021-04-06 4:34 UTC (permalink / raw)
To: u-boot
Update clk_composite_set_parent() to use -ENOSYS, which is the correct
error code for U-Boot. Also rearrange the code so that the error condition
is clearly indicated and the function runs to the end in the normal case,
since this is the common style in U-Boot.
Signed-off-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Sean Anderson <seanga2@gmail.com>
---
(no changes since v1)
drivers/clk/clk-composite.c | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
Applied to u-boot-dm, thanks!
^ permalink raw reply [flat|nested] 20+ messages in thread
* [PATCH v3 5/9] tlv_eeprom: Return -ENOSYS when system call is not available
2021-03-24 21:26 [PATCH v3 0/9] Use -ENOSYS consistently Simon Glass
` (12 preceding siblings ...)
2021-04-06 4:34 ` [PATCH v3 6/9] clk: Update drivers to use -EINVAL Simon Glass
@ 2021-04-06 4:34 ` Simon Glass
2021-04-06 4:34 ` [PATCH v3 4/9] spi: " Simon Glass
` (2 subsequent siblings)
16 siblings, 0 replies; 20+ messages in thread
From: Simon Glass @ 2021-04-06 4:34 UTC (permalink / raw)
To: u-boot
When CMD_TLV_EEPROM is not enabled, use -ENOSYS, which is the correct
error code for U-Boot.
Signed-off-by: Simon Glass <sjg@chromium.org>
---
(no changes since v1)
include/tlv_eeprom.h | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
Applied to u-boot-dm, thanks!
^ permalink raw reply [flat|nested] 20+ messages in thread
* [PATCH v3 6/9] clk: Update drivers to use -EINVAL
2021-03-24 21:26 [PATCH v3 0/9] Use -ENOSYS consistently Simon Glass
` (11 preceding siblings ...)
2021-04-06 4:34 ` [PATCH v3 7/9] clk: Return -ENOSYS when system call is not available Simon Glass
@ 2021-04-06 4:34 ` Simon Glass
2021-04-06 4:34 ` [PATCH v3 5/9] tlv_eeprom: Return -ENOSYS when system call is not available Simon Glass
` (3 subsequent siblings)
16 siblings, 0 replies; 20+ messages in thread
From: Simon Glass @ 2021-04-06 4:34 UTC (permalink / raw)
To: u-boot
At present some drivers use -ENOSUPP to indicate that an unknown or
unsupported clock is used. Most use -EINVAL, indicating an invalid value,
so convert everything to that.
Signed-off-by: Simon Glass <sjg@chromium.org>
Acked-by: Sean Anderson <seanga2@gmail.com>
Reviewed-by: Stefan Roese <sr@denx.de>
---
(no changes since v2)
Changes in v2:
- Add new patch to update clk drivers to use -EINVAL
drivers/clk/aspeed/clk_ast2600.c | 2 +-
drivers/clk/clk-hsdk-cgu.c | 4 ++--
drivers/clk/imx/clk-imx8.c | 4 ++--
drivers/clk/imx/clk-imx8qm.c | 6 +++---
drivers/clk/imx/clk-imx8qxp.c | 6 +++---
drivers/clk/imx/clk-pllv3.c | 2 +-
drivers/clk/kendryte/bypass.c | 2 +-
drivers/clk/kendryte/clk.c | 2 +-
drivers/clk/mvebu/armada-37xx-periph.c | 6 +++---
9 files changed, 17 insertions(+), 17 deletions(-)
Applied to u-boot-dm, thanks!
^ permalink raw reply [flat|nested] 20+ messages in thread
* [PATCH v3 4/9] spi: Return -ENOSYS when system call is not available
2021-03-24 21:26 [PATCH v3 0/9] Use -ENOSYS consistently Simon Glass
` (13 preceding siblings ...)
2021-04-06 4:34 ` [PATCH v3 5/9] tlv_eeprom: Return -ENOSYS when system call is not available Simon Glass
@ 2021-04-06 4:34 ` Simon Glass
2021-04-06 4:34 ` [PATCH v3 3/9] usb: " Simon Glass
2021-04-06 4:34 ` [PATCH v3 2/9] dm: core: Use -ENOSPC in acpi_get_path() Simon Glass
16 siblings, 0 replies; 20+ messages in thread
From: Simon Glass @ 2021-04-06 4:34 UTC (permalink / raw)
To: u-boot
Update spi_controller_dma_map_mem_op_data() to use -ENOSYS, which is the
correct error code for U-Boot.
Signed-off-by: Simon Glass <sjg@chromium.org>
---
(no changes since v1)
include/spi-mem.h | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
Applied to u-boot-dm, thanks!
^ permalink raw reply [flat|nested] 20+ messages in thread
* [PATCH v3 3/9] usb: Return -ENOSYS when system call is not available
2021-03-24 21:26 [PATCH v3 0/9] Use -ENOSYS consistently Simon Glass
` (14 preceding siblings ...)
2021-04-06 4:34 ` [PATCH v3 4/9] spi: " Simon Glass
@ 2021-04-06 4:34 ` Simon Glass
2021-04-06 4:34 ` [PATCH v3 2/9] dm: core: Use -ENOSPC in acpi_get_path() Simon Glass
16 siblings, 0 replies; 20+ messages in thread
From: Simon Glass @ 2021-04-06 4:34 UTC (permalink / raw)
To: u-boot
Update usb_gadget_release() to use -ENOSYS, which is the correct error
code for U-Boot.
Signed-off-by: Simon Glass <sjg@chromium.org>
---
(no changes since v1)
drivers/usb/gadget/udc/udc-uclass.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
Applied to u-boot-dm, thanks!
^ permalink raw reply [flat|nested] 20+ messages in thread
* [PATCH v3 2/9] dm: core: Use -ENOSPC in acpi_get_path()
2021-03-24 21:26 [PATCH v3 0/9] Use -ENOSYS consistently Simon Glass
` (15 preceding siblings ...)
2021-04-06 4:34 ` [PATCH v3 3/9] usb: " Simon Glass
@ 2021-04-06 4:34 ` Simon Glass
16 siblings, 0 replies; 20+ messages in thread
From: Simon Glass @ 2021-04-06 4:34 UTC (permalink / raw)
To: u-boot
Update this function to use -ENOSPC which is more commly used when a buffer
runs out of space.
Signed-off-by: Simon Glass <sjg@chromium.org>
---
(no changes since v2)
Changes in v2:
- Add new patch for acpi_get_path()
drivers/core/acpi.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
Applied to u-boot-dm, thanks!
^ permalink raw reply [flat|nested] 20+ messages in thread
* [PATCH v3 1/9] dm: core: Document the common error codes
2021-03-24 21:26 ` [PATCH v3 1/9] dm: core: Document the common error codes Simon Glass
2021-03-24 23:50 ` Sean Anderson
@ 2021-04-06 4:34 ` Simon Glass
1 sibling, 0 replies; 20+ messages in thread
From: Simon Glass @ 2021-04-06 4:34 UTC (permalink / raw)
To: u-boot
On 3/24/21 5:26 PM, Simon Glass wrote:
> Driver model uses quite strong conventions on error codes, but these are
> currently not clearly documented. Add a description of the commonly used
> errors.
>
> Signed-off-by: Simon Glass <sjg@chromium.org>
> ---
>
> Changes in v3:
> - Add updates based on feedback from Sean Anderson <seanga2@gmail.com>
>
> Changes in v2:
> - Add a patch to document the common error codes
>
> doc/driver-model/design.rst | 133 ++++++++++++++++++++++++++++++++++++
> 1 file changed, 133 insertions(+)
>
Applied to u-boot-dm, thanks!
^ permalink raw reply [flat|nested] 20+ messages in thread
end of thread, other threads:[~2021-04-06 4:34 UTC | newest]
Thread overview: 20+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-03-24 21:26 [PATCH v3 0/9] Use -ENOSYS consistently Simon Glass
2021-03-24 21:26 ` [PATCH v3 1/9] dm: core: Document the common error codes Simon Glass
2021-03-24 23:50 ` Sean Anderson
2021-04-06 4:34 ` Simon Glass
2021-03-24 21:26 ` [PATCH v3 2/9] dm: core: Use -ENOSPC in acpi_get_path() Simon Glass
2021-03-24 21:26 ` [PATCH v3 3/9] usb: Return -ENOSYS when system call is not available Simon Glass
2021-03-24 21:26 ` [PATCH v3 4/9] spi: " Simon Glass
2021-03-24 21:26 ` [PATCH v3 5/9] tlv_eeprom: " Simon Glass
2021-03-24 21:26 ` [PATCH v3 6/9] clk: Update drivers to use -EINVAL Simon Glass
2021-03-24 21:26 ` [PATCH v3 7/9] clk: Return -ENOSYS when system call is not available Simon Glass
2021-03-24 21:26 ` [PATCH v3 8/9] simple-pm-bus: Use -ENOSYS for checking missing system call Simon Glass
2021-03-24 21:26 ` [PATCH v3 9/9] pinctrl: Return -ENOSYS when system call is not available Simon Glass
2021-04-06 4:34 ` Simon Glass
2021-04-06 4:34 ` [PATCH v3 8/9] simple-pm-bus: Use -ENOSYS for checking missing system call Simon Glass
2021-04-06 4:34 ` [PATCH v3 7/9] clk: Return -ENOSYS when system call is not available Simon Glass
2021-04-06 4:34 ` [PATCH v3 6/9] clk: Update drivers to use -EINVAL Simon Glass
2021-04-06 4:34 ` [PATCH v3 5/9] tlv_eeprom: Return -ENOSYS when system call is not available Simon Glass
2021-04-06 4:34 ` [PATCH v3 4/9] spi: " Simon Glass
2021-04-06 4:34 ` [PATCH v3 3/9] usb: " Simon Glass
2021-04-06 4:34 ` [PATCH v3 2/9] dm: core: Use -ENOSPC in acpi_get_path() Simon Glass
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.