mbox series

[v2,00/46] dm: Print device name in dev_xxx like Linux

Message ID 20200915144522.509493-1-seanga2@gmail.com
Headers show
Series dm: Print device name in dev_xxx like Linux | expand

Message

Sean Anderson Sept. 15, 2020, 2:44 p.m. UTC
This series adds some additional information to dev_xxx output. This requires
the first argument to dev_xxx to be a struct udevice. The first argument has
never been used in U-Boot, so many drivers have some invalid calls. To fix these
drivers, the following strategies were generally followed

* If there is a udevice already passed to the function, use it.
* If there is a udevice contained in a struct passed to the function, use it.
  When there are multiple possible devices, I have tried to use whatever "makes
  sense" given the content of the message.
* If there is no udevice passed to the function either directly or indirectly,
  but all the callers of said function can access a udevice, modify the function
  signature to pass in a udevice and use that.
* If the driver does not use DM, convert the log statements to log_xxx.
* If the driver uses DM only some of the time, use ifdefs to select an
  appropriate log function.

I have done a little bit of cleanup beyond these strategies, but for the most
part I have tried to *only* to the minimum necessary. Many drivers could use a
follow-up patch to convert their printf()s and debug()s to an appropriate log
function.

I have tried to CC relevant maintainers/reviewers only for patches they
maintain/review. If I have left someone out, please let me know and I will add
them.

CI is passing at [1]. This does not necessarily mean that this series is free of
bugs, so I would appreciate testing on hardware. During my refactoring, I
noticed a few bugs like

	struct udevice *dev;

	if (some_condition)
		dev_err(dev, "Something went wrong\n");

	dev = some_function();

I have fixed such errors when I have encountered them, but they will not always
warn or error on build.

Removal of the duplicate definitions in <linux/compat.h> will be done in a
follow-up patch due to the already-large size of this series.

To test this series on sandbox, apply the following options in addition to
sandbox_defconfig

CONFIG_LOGLEVEL=8
CONFIG_LOG=n
CONFIG_CMD_LOG=n
CONFIG_CMD_TPM=n

Note that there is a soft dependency on [2] if you would like to test this patch
with CONFIG_LOG and a higher LOG_LEVEL than LOGL_INFO.

[1] https://dev.azure.com/seanga2/u-boot/_build/results?buildId=34&view=results
[2] https://patchwork.ozlabs.org/project/uboot/list/?series=201343

Changes in v2:
- Support logging with struct device as well as struct udevice. A lot of
  drivers, especially USB gadgets, log with devices and not udevices. There
  is no major reason why they can't use udevice, but big changes like that
  are outside the scope of this series.
- Add some comments to __dev_printk and dev_printk_emit
- Handle struct device as well as struct udevice
- Match format strings for the NULL path to the regular path. This reduces the
  amount of duplicated strings.
- Print the device name before the driver name
- Many new patches added to fix build bugs

Sean Anderson (46):
  dm: syscon: Fix calling dev_dbg with an uninitialized device
  firmware: ti_sci: Fix not calling dev_err with a device
  i2c: mxc: Fix dev_err being called on a nonexistant variable
  mtd: nand: pxa3xx: Fix not calling dev_xxx with a device
  mtd: nand: sunxi: Fix not calling dev_err with a device
  mtd: spi: Include dm.h in spi-nor-core.c
  mtd: spi: Fix logging in spi-nor-tiny
  mtd: spi-nand: Fix not calling dev_err with a device
  mmc: Add mmc_dev()
  mmc: bcm2835-host: Fix not calling dev_dbg with a device
  mmc: mtk-sd: Fix not calling dev_err with a device
  mailbox: k3: Fix not calling dev_err with a device
  nand: atmel: Fix not calling dev_xxx with a device
  nand: brcmnand: Fix not calling dev_err() with a device
  nand: vybrid: Re-introduce vf610_nfc.dev
  net: bcm6368: Fix not calling dev_info with a device
  net: mdio: Fix not calling dev_dbg with a device
  net: mvneta: Fix not always calling dev_err with a device
  net: mvneta: Convert netdev_xxx to dev_xxx
  net: mvpp2: Fix not calling dev_xxx with a device
  net: mvpp2: Convert netdev_xxx to dev_xxx
  linux/compat.h: Remove netdev_xxx functions
  net: sunxi: Fix not calling dev_xxx with a device
  net: sun8i_emac: Fix not calling dev_xxx with a device
  net: ti: cpsw: Fix not calling dev_dbg with a device
  phy: marvell: Fix not calling dev_err with a device
  phy: rockchip: Fix not calling dev_err with a device
  phy: sun4i-usb: Fix not calling dev_err with a device
  phy: ti: Fix not calling dev_err with a device
  phy: usbphyc: Fix not calling dev_err with a device
  remoteproc: Remove unused function rproc_elf_sanity_check
  remoteproc: k3-r5: Fix not calling dev_xxx with a device
  remoteproc: k3: Fix not calling dev_xxx with a device
  soc: qualcomm: Fix not calling dev_err with a device
  spi: sunxi: Fix not calling dev_err with a device
  spi: zynqmp_gqspi: Fix not calling dev_err with a device
  sysreset: ti: Fix not calling dev_err with a device
  usb: cdns3: Fix not calling dev_xxx with a device
  usb: dwc2: Fix not calling dev_xxx with a device
  usb: dwc3: Fix not calling dev_xxx with a device
  usb: dwc3: ti: Fix not calling dev_err with a device
  usb: dwc3: Don't include asm-generic/io.h
  usb: musb-new: sunxi: Fix not calling dev_err with a device
  video: stm32: Fix not calling dev_xxx with a device
  dm: Use symbolic constants for log levels in dev_xxx
  dm: Print device name in dev_xxx like Linux

 drivers/core/syscon-uclass.c              |   2 +-
 drivers/firmware/ti_sci.c                 |  23 ++--
 drivers/i2c/mxc_i2c.c                     |   7 +-
 drivers/mailbox/k3-sec-proxy.c            |   6 +-
 drivers/mmc/bcm2835_sdhost.c              |  34 +++---
 drivers/mmc/mtk-sd.c                      |  24 ++--
 drivers/mtd/nand/raw/atmel_nand.c         |  69 +++++++-----
 drivers/mtd/nand/raw/brcmnand/brcmnand.c  |  20 +---
 drivers/mtd/nand/raw/pxa3xx_nand.c        |  30 ++---
 drivers/mtd/nand/raw/sunxi_nand.c         |  45 ++++----
 drivers/mtd/nand/raw/vf610_nfc.c          |  38 ++++---
 drivers/mtd/nand/spi/core.c               |   8 +-
 drivers/mtd/spi/spi-nor-core.c            |   1 +
 drivers/mtd/spi/spi-nor-tiny.c            |  21 +++-
 drivers/net/bcm6368-eth.c                 |   3 +-
 drivers/net/mvneta.c                      |  56 +++++-----
 drivers/net/mvpp2.c                       |  87 ++++++++-------
 drivers/net/sun8i_emac.c                  |   9 +-
 drivers/net/sunxi_emac.c                  |   5 +-
 drivers/net/ti/cpsw.c                     |   6 +
 drivers/phy/allwinner/phy-sun4i-usb.c     |  12 +-
 drivers/phy/marvell/comphy_core.c         |   6 +-
 drivers/phy/phy-stm32-usbphyc.c           |   2 +-
 drivers/phy/phy-ti-am654.c                |   4 +-
 drivers/phy/rockchip/phy-rockchip-pcie.c  |  14 +--
 drivers/phy/rockchip/phy-rockchip-typec.c |   6 +-
 drivers/remoteproc/k3_system_controller.c |   9 +-
 drivers/remoteproc/rproc-elf-loader.c     |  16 ---
 drivers/remoteproc/ti_k3_r5f_rproc.c      |  24 ++--
 drivers/smem/msm_smem.c                   |   2 +-
 drivers/spi/spi-sunxi.c                   |   6 +-
 drivers/spi/zynqmp_gqspi.c                |   6 +-
 drivers/sysreset/sysreset-ti-sci.c        |   3 +-
 drivers/usb/cdns3/ep0.c                   |   5 +-
 drivers/usb/cdns3/gadget.c                |   3 +-
 drivers/usb/dwc3/core.c                   |  15 +--
 drivers/usb/dwc3/dwc3-generic.c           |   1 -
 drivers/usb/dwc3/ep0.c                    |   1 +
 drivers/usb/dwc3/gadget.c                 |  23 ++--
 drivers/usb/dwc3/ti_usb_phy.c             |   4 +-
 drivers/usb/host/dwc2.c                   |  39 ++++---
 drivers/usb/musb-new/sunxi.c              |   9 +-
 drivers/video/dw_mipi_dsi.c               |  24 ++--
 include/dm/device_compat.h                | 127 ++++++++++++++++------
 include/linux/compat.h                    |  19 ----
 include/mmc.h                             |   2 +
 include/remoteproc.h                      |  13 ---
 net/mdio-uclass.c                         |   4 +-
 48 files changed, 486 insertions(+), 407 deletions(-)

Comments

Patrick DELAUNAY Sept. 16, 2020, 1:43 p.m. UTC | #1
Hi Sean,

> From: Sean Anderson <seanga2@gmail.com>
> Sent: mardi 15 septembre 2020 16:45
> 
> This series adds some additional information to dev_xxx output. This requires the
> first argument to dev_xxx to be a struct udevice. The first argument has never
> been used in U-Boot, so many drivers have some invalid calls. To fix these drivers,
> the following strategies were generally followed
> 
> * If there is a udevice already passed to the function, use it.
> * If there is a udevice contained in a struct passed to the function, use it.
>   When there are multiple possible devices, I have tried to use whatever "makes
>   sense" given the content of the message.
> * If there is no udevice passed to the function either directly or indirectly,
>   but all the callers of said function can access a udevice, modify the function
>   signature to pass in a udevice and use that.
> * If the driver does not use DM, convert the log statements to log_xxx.
> * If the driver uses DM only some of the time, use ifdefs to select an
>   appropriate log function.
> 
> I have done a little bit of cleanup beyond these strategies, but for the most part I
> have tried to *only* to the minimum necessary. Many drivers could use a follow-up
> patch to convert their printf()s and debug()s to an appropriate log function.
> 
> I have tried to CC relevant maintainers/reviewers only for patches they
> maintain/review. If I have left someone out, please let me know and I will add them.
> 
> CI is passing at [1]. This does not necessarily mean that this series is free of bugs,
> so I would appreciate testing on hardware. During my refactoring, I noticed a few
> bugs like
> 
> 	struct udevice *dev;
> 
> 	if (some_condition)
> 		dev_err(dev, "Something went wrong\n");
> 
> 	dev = some_function();
> 
> I have fixed such errors when I have encountered them, but they will not always
> warn or error on build.
> 
> Removal of the duplicate definitions in <linux/compat.h> will be done in a follow-
> up patch due to the already-large size of this series.
> 
> To test this series on sandbox, apply the following options in addition to
> sandbox_defconfig
> 
> CONFIG_LOGLEVEL=8
> CONFIG_LOG=n
> CONFIG_CMD_LOG=n
> CONFIG_CMD_TPM=n
> 
> Note that there is a soft dependency on [2] if you would like to test this patch with
> CONFIG_LOG and a higher LOG_LEVEL than LOGL_INFO.
> 
> [1] https://dev.azure.com/seanga2/u-boot/_build/results?buildId=34&view=results
> [2] https://patchwork.ozlabs.org/project/uboot/list/?series=201343
> 
> Changes in v2:
> - Support logging with struct device as well as struct udevice. A lot of
>   drivers, especially USB gadgets, log with devices and not udevices. There
>   is no major reason why they can't use udevice, but big changes like that
>   are outside the scope of this series.
> - Add some comments to __dev_printk and dev_printk_emit
> - Handle struct device as well as struct udevice
> - Match format strings for the NULL path to the regular path. This reduces the
>   amount of duplicated strings.
> - Print the device name before the driver name
> - Many new patches added to fix build bugs
> 
> Sean Anderson (46):
>   dm: syscon: Fix calling dev_dbg with an uninitialized device
>   firmware: ti_sci: Fix not calling dev_err with a device
>   i2c: mxc: Fix dev_err being called on a nonexistant variable
>   mtd: nand: pxa3xx: Fix not calling dev_xxx with a device
>   mtd: nand: sunxi: Fix not calling dev_err with a device
>   mtd: spi: Include dm.h in spi-nor-core.c
>   mtd: spi: Fix logging in spi-nor-tiny
>   mtd: spi-nand: Fix not calling dev_err with a device
>   mmc: Add mmc_dev()
>   mmc: bcm2835-host: Fix not calling dev_dbg with a device
>   mmc: mtk-sd: Fix not calling dev_err with a device
>   mailbox: k3: Fix not calling dev_err with a device
>   nand: atmel: Fix not calling dev_xxx with a device
>   nand: brcmnand: Fix not calling dev_err() with a device
>   nand: vybrid: Re-introduce vf610_nfc.dev
>   net: bcm6368: Fix not calling dev_info with a device
>   net: mdio: Fix not calling dev_dbg with a device
>   net: mvneta: Fix not always calling dev_err with a device
>   net: mvneta: Convert netdev_xxx to dev_xxx
>   net: mvpp2: Fix not calling dev_xxx with a device
>   net: mvpp2: Convert netdev_xxx to dev_xxx
>   linux/compat.h: Remove netdev_xxx functions
>   net: sunxi: Fix not calling dev_xxx with a device
>   net: sun8i_emac: Fix not calling dev_xxx with a device
>   net: ti: cpsw: Fix not calling dev_dbg with a device
>   phy: marvell: Fix not calling dev_err with a device
>   phy: rockchip: Fix not calling dev_err with a device
>   phy: sun4i-usb: Fix not calling dev_err with a device
>   phy: ti: Fix not calling dev_err with a device
>   phy: usbphyc: Fix not calling dev_err with a device
>   remoteproc: Remove unused function rproc_elf_sanity_check
>   remoteproc: k3-r5: Fix not calling dev_xxx with a device
>   remoteproc: k3: Fix not calling dev_xxx with a device
>   soc: qualcomm: Fix not calling dev_err with a device
>   spi: sunxi: Fix not calling dev_err with a device
>   spi: zynqmp_gqspi: Fix not calling dev_err with a device
>   sysreset: ti: Fix not calling dev_err with a device
>   usb: cdns3: Fix not calling dev_xxx with a device
>   usb: dwc2: Fix not calling dev_xxx with a device
>   usb: dwc3: Fix not calling dev_xxx with a device
>   usb: dwc3: ti: Fix not calling dev_err with a device
>   usb: dwc3: Don't include asm-generic/io.h
>   usb: musb-new: sunxi: Fix not calling dev_err with a device
>   video: stm32: Fix not calling dev_xxx with a device
>   dm: Use symbolic constants for log levels in dev_xxx
>   dm: Print device name in dev_xxx like Linux
> 
>  drivers/core/syscon-uclass.c              |   2 +-
>  drivers/firmware/ti_sci.c                 |  23 ++--
>  drivers/i2c/mxc_i2c.c                     |   7 +-
>  drivers/mailbox/k3-sec-proxy.c            |   6 +-
>  drivers/mmc/bcm2835_sdhost.c              |  34 +++---
>  drivers/mmc/mtk-sd.c                      |  24 ++--
>  drivers/mtd/nand/raw/atmel_nand.c         |  69 +++++++-----
>  drivers/mtd/nand/raw/brcmnand/brcmnand.c  |  20 +---
>  drivers/mtd/nand/raw/pxa3xx_nand.c        |  30 ++---
>  drivers/mtd/nand/raw/sunxi_nand.c         |  45 ++++----
>  drivers/mtd/nand/raw/vf610_nfc.c          |  38 ++++---
>  drivers/mtd/nand/spi/core.c               |   8 +-
>  drivers/mtd/spi/spi-nor-core.c            |   1 +
>  drivers/mtd/spi/spi-nor-tiny.c            |  21 +++-
>  drivers/net/bcm6368-eth.c                 |   3 +-
>  drivers/net/mvneta.c                      |  56 +++++-----
>  drivers/net/mvpp2.c                       |  87 ++++++++-------
>  drivers/net/sun8i_emac.c                  |   9 +-
>  drivers/net/sunxi_emac.c                  |   5 +-
>  drivers/net/ti/cpsw.c                     |   6 +
>  drivers/phy/allwinner/phy-sun4i-usb.c     |  12 +-
>  drivers/phy/marvell/comphy_core.c         |   6 +-
>  drivers/phy/phy-stm32-usbphyc.c           |   2 +-
>  drivers/phy/phy-ti-am654.c                |   4 +-
>  drivers/phy/rockchip/phy-rockchip-pcie.c  |  14 +--
>  drivers/phy/rockchip/phy-rockchip-typec.c |   6 +-
>  drivers/remoteproc/k3_system_controller.c |   9 +-
>  drivers/remoteproc/rproc-elf-loader.c     |  16 ---
>  drivers/remoteproc/ti_k3_r5f_rproc.c      |  24 ++--
>  drivers/smem/msm_smem.c                   |   2 +-
>  drivers/spi/spi-sunxi.c                   |   6 +-
>  drivers/spi/zynqmp_gqspi.c                |   6 +-
>  drivers/sysreset/sysreset-ti-sci.c        |   3 +-
>  drivers/usb/cdns3/ep0.c                   |   5 +-
>  drivers/usb/cdns3/gadget.c                |   3 +-
>  drivers/usb/dwc3/core.c                   |  15 +--
>  drivers/usb/dwc3/dwc3-generic.c           |   1 -
>  drivers/usb/dwc3/ep0.c                    |   1 +
>  drivers/usb/dwc3/gadget.c                 |  23 ++--
>  drivers/usb/dwc3/ti_usb_phy.c             |   4 +-
>  drivers/usb/host/dwc2.c                   |  39 ++++---
>  drivers/usb/musb-new/sunxi.c              |   9 +-
>  drivers/video/dw_mipi_dsi.c               |  24 ++--
>  include/dm/device_compat.h                | 127 ++++++++++++++++------
>  include/linux/compat.h                    |  19 ----
>  include/mmc.h                             |   2 +
>  include/remoteproc.h                      |  13 ---
>  net/mdio-uclass.c                         |   4 +-
>  48 files changed, 486 insertions(+), 407 deletions(-)
> 
> --
> 2.28.0


For the serie, tested on STM32MP157C-DK2

This target se the modified files:
drivers/core/syscon-uclass.c
drivers/phy/phy-stm32-usbphyc.c
drivers/usb/host/dwc2.c
drivers/video/dw_mipi_dsi.c

I execute compilation and boot with
CONFIG_LOGLEVEL=8
CONFIG_LOG_MAX_LEVEL=8

For stm32mp15_basic_defconfig 

Tested-by: Patrick Delaunay <patrick.delaunay@st.com>

Thanks, I can now enable CONFIG_LOG now for stm32mp15x targets.
even if stm32 drivers still need update for full "log" migration.

Patrick
Tom Rini Sept. 30, 2020, 1:01 p.m. UTC | #2
On Tue, Sep 15, 2020 at 10:44:36AM -0400, Sean Anderson wrote:

> This series adds some additional information to dev_xxx output. This requires
> the first argument to dev_xxx to be a struct udevice. The first argument has
> never been used in U-Boot, so many drivers have some invalid calls. To fix these
> drivers, the following strategies were generally followed
> 
> * If there is a udevice already passed to the function, use it.
> * If there is a udevice contained in a struct passed to the function, use it.
>   When there are multiple possible devices, I have tried to use whatever "makes
>   sense" given the content of the message.
> * If there is no udevice passed to the function either directly or indirectly,
>   but all the callers of said function can access a udevice, modify the function
>   signature to pass in a udevice and use that.
> * If the driver does not use DM, convert the log statements to log_xxx.
> * If the driver uses DM only some of the time, use ifdefs to select an
>   appropriate log function.
> 
> I have done a little bit of cleanup beyond these strategies, but for the most
> part I have tried to *only* to the minimum necessary. Many drivers could use a
> follow-up patch to convert their printf()s and debug()s to an appropriate log
> function.
> 
> I have tried to CC relevant maintainers/reviewers only for patches they
> maintain/review. If I have left someone out, please let me know and I will add
> them.
> 
> CI is passing at [1]. This does not necessarily mean that this series is free of
> bugs, so I would appreciate testing on hardware. During my refactoring, I
> noticed a few bugs like
> 
> 	struct udevice *dev;
> 
> 	if (some_condition)
> 		dev_err(dev, "Something went wrong\n");
> 
> 	dev = some_function();
> 
> I have fixed such errors when I have encountered them, but they will not always
> warn or error on build.
> 
> Removal of the duplicate definitions in <linux/compat.h> will be done in a
> follow-up patch due to the already-large size of this series.
> 
> To test this series on sandbox, apply the following options in addition to
> sandbox_defconfig
> 
> CONFIG_LOGLEVEL=8
> CONFIG_LOG=n
> CONFIG_CMD_LOG=n
> CONFIG_CMD_TPM=n
> 
> Note that there is a soft dependency on [2] if you would like to test this patch
> with CONFIG_LOG and a higher LOG_LEVEL than LOGL_INFO.
> 
> [1] https://dev.azure.com/seanga2/u-boot/_build/results?buildId=34&view=results
> [2] https://patchwork.ozlabs.org/project/uboot/list/?series=201343
> 
> Changes in v2:
> - Support logging with struct device as well as struct udevice. A lot of
>   drivers, especially USB gadgets, log with devices and not udevices. There
>   is no major reason why they can't use udevice, but big changes like that
>   are outside the scope of this series.
> - Add some comments to __dev_printk and dev_printk_emit
> - Handle struct device as well as struct udevice
> - Match format strings for the NULL path to the regular path. This reduces the
>   amount of duplicated strings.
> - Print the device name before the driver name
> - Many new patches added to fix build bugs
> 
> Sean Anderson (46):
>   dm: syscon: Fix calling dev_dbg with an uninitialized device
>   firmware: ti_sci: Fix not calling dev_err with a device
>   i2c: mxc: Fix dev_err being called on a nonexistant variable
>   mtd: nand: pxa3xx: Fix not calling dev_xxx with a device
>   mtd: nand: sunxi: Fix not calling dev_err with a device
>   mtd: spi: Include dm.h in spi-nor-core.c
>   mtd: spi: Fix logging in spi-nor-tiny
>   mtd: spi-nand: Fix not calling dev_err with a device
>   mmc: Add mmc_dev()
>   mmc: bcm2835-host: Fix not calling dev_dbg with a device
>   mmc: mtk-sd: Fix not calling dev_err with a device
>   mailbox: k3: Fix not calling dev_err with a device
>   nand: atmel: Fix not calling dev_xxx with a device
>   nand: brcmnand: Fix not calling dev_err() with a device
>   nand: vybrid: Re-introduce vf610_nfc.dev
>   net: bcm6368: Fix not calling dev_info with a device
>   net: mdio: Fix not calling dev_dbg with a device
>   net: mvneta: Fix not always calling dev_err with a device
>   net: mvneta: Convert netdev_xxx to dev_xxx
>   net: mvpp2: Fix not calling dev_xxx with a device
>   net: mvpp2: Convert netdev_xxx to dev_xxx
>   linux/compat.h: Remove netdev_xxx functions
>   net: sunxi: Fix not calling dev_xxx with a device
>   net: sun8i_emac: Fix not calling dev_xxx with a device
>   net: ti: cpsw: Fix not calling dev_dbg with a device
>   phy: marvell: Fix not calling dev_err with a device
>   phy: rockchip: Fix not calling dev_err with a device
>   phy: sun4i-usb: Fix not calling dev_err with a device
>   phy: ti: Fix not calling dev_err with a device
>   phy: usbphyc: Fix not calling dev_err with a device
>   remoteproc: Remove unused function rproc_elf_sanity_check
>   remoteproc: k3-r5: Fix not calling dev_xxx with a device
>   remoteproc: k3: Fix not calling dev_xxx with a device
>   soc: qualcomm: Fix not calling dev_err with a device
>   spi: sunxi: Fix not calling dev_err with a device
>   spi: zynqmp_gqspi: Fix not calling dev_err with a device
>   sysreset: ti: Fix not calling dev_err with a device
>   usb: cdns3: Fix not calling dev_xxx with a device
>   usb: dwc2: Fix not calling dev_xxx with a device
>   usb: dwc3: Fix not calling dev_xxx with a device
>   usb: dwc3: ti: Fix not calling dev_err with a device
>   usb: dwc3: Don't include asm-generic/io.h
>   usb: musb-new: sunxi: Fix not calling dev_err with a device
>   video: stm32: Fix not calling dev_xxx with a device
>   dm: Use symbolic constants for log levels in dev_xxx
>   dm: Print device name in dev_xxx like Linux
> 
>  drivers/core/syscon-uclass.c              |   2 +-
>  drivers/firmware/ti_sci.c                 |  23 ++--
>  drivers/i2c/mxc_i2c.c                     |   7 +-
>  drivers/mailbox/k3-sec-proxy.c            |   6 +-
>  drivers/mmc/bcm2835_sdhost.c              |  34 +++---
>  drivers/mmc/mtk-sd.c                      |  24 ++--
>  drivers/mtd/nand/raw/atmel_nand.c         |  69 +++++++-----
>  drivers/mtd/nand/raw/brcmnand/brcmnand.c  |  20 +---
>  drivers/mtd/nand/raw/pxa3xx_nand.c        |  30 ++---
>  drivers/mtd/nand/raw/sunxi_nand.c         |  45 ++++----
>  drivers/mtd/nand/raw/vf610_nfc.c          |  38 ++++---
>  drivers/mtd/nand/spi/core.c               |   8 +-
>  drivers/mtd/spi/spi-nor-core.c            |   1 +
>  drivers/mtd/spi/spi-nor-tiny.c            |  21 +++-
>  drivers/net/bcm6368-eth.c                 |   3 +-
>  drivers/net/mvneta.c                      |  56 +++++-----
>  drivers/net/mvpp2.c                       |  87 ++++++++-------
>  drivers/net/sun8i_emac.c                  |   9 +-
>  drivers/net/sunxi_emac.c                  |   5 +-
>  drivers/net/ti/cpsw.c                     |   6 +
>  drivers/phy/allwinner/phy-sun4i-usb.c     |  12 +-
>  drivers/phy/marvell/comphy_core.c         |   6 +-
>  drivers/phy/phy-stm32-usbphyc.c           |   2 +-
>  drivers/phy/phy-ti-am654.c                |   4 +-
>  drivers/phy/rockchip/phy-rockchip-pcie.c  |  14 +--
>  drivers/phy/rockchip/phy-rockchip-typec.c |   6 +-
>  drivers/remoteproc/k3_system_controller.c |   9 +-
>  drivers/remoteproc/rproc-elf-loader.c     |  16 ---
>  drivers/remoteproc/ti_k3_r5f_rproc.c      |  24 ++--
>  drivers/smem/msm_smem.c                   |   2 +-
>  drivers/spi/spi-sunxi.c                   |   6 +-
>  drivers/spi/zynqmp_gqspi.c                |   6 +-
>  drivers/sysreset/sysreset-ti-sci.c        |   3 +-
>  drivers/usb/cdns3/ep0.c                   |   5 +-
>  drivers/usb/cdns3/gadget.c                |   3 +-
>  drivers/usb/dwc3/core.c                   |  15 +--
>  drivers/usb/dwc3/dwc3-generic.c           |   1 -
>  drivers/usb/dwc3/ep0.c                    |   1 +
>  drivers/usb/dwc3/gadget.c                 |  23 ++--
>  drivers/usb/dwc3/ti_usb_phy.c             |   4 +-
>  drivers/usb/host/dwc2.c                   |  39 ++++---
>  drivers/usb/musb-new/sunxi.c              |   9 +-
>  drivers/video/dw_mipi_dsi.c               |  24 ++--
>  include/dm/device_compat.h                | 127 ++++++++++++++++------
>  include/linux/compat.h                    |  19 ----
>  include/mmc.h                             |   2 +
>  include/remoteproc.h                      |  13 ---
>  net/mdio-uclass.c                         |   4 +-
>  48 files changed, 486 insertions(+), 407 deletions(-)
> Tested-by: Patrick Delaunay <patrick.delaunay@st.com>

I'm about to apply this series to -next and I'm cc'ing the board
maintainers list.  A feature of this series is that a large number of
drivers that had put in information / error / etc messages that had
intended to be seen (presumably) by the user and were being discarded at
link/compile time before are included now.  buildman has a set of flags
to tell you what exact functions grew between commits and if there's
messages that should have their log level changed, we really should do
that.
Tom Rini Sept. 30, 2020, 1:08 p.m. UTC | #3
On Tue, Sep 15, 2020 at 10:44:36AM -0400, Sean Anderson wrote:

> This series adds some additional information to dev_xxx output. This requires
> the first argument to dev_xxx to be a struct udevice. The first argument has
> never been used in U-Boot, so many drivers have some invalid calls. To fix these
> drivers, the following strategies were generally followed
> 
> * If there is a udevice already passed to the function, use it.
> * If there is a udevice contained in a struct passed to the function, use it.
>   When there are multiple possible devices, I have tried to use whatever "makes
>   sense" given the content of the message.
> * If there is no udevice passed to the function either directly or indirectly,
>   but all the callers of said function can access a udevice, modify the function
>   signature to pass in a udevice and use that.
> * If the driver does not use DM, convert the log statements to log_xxx.
> * If the driver uses DM only some of the time, use ifdefs to select an
>   appropriate log function.
> 
> I have done a little bit of cleanup beyond these strategies, but for the most
> part I have tried to *only* to the minimum necessary. Many drivers could use a
> follow-up patch to convert their printf()s and debug()s to an appropriate log
> function.
> 
> I have tried to CC relevant maintainers/reviewers only for patches they
> maintain/review. If I have left someone out, please let me know and I will add
> them.
> 
> CI is passing at [1]. This does not necessarily mean that this series is free of
> bugs, so I would appreciate testing on hardware. During my refactoring, I
> noticed a few bugs like
> 
> 	struct udevice *dev;
> 
> 	if (some_condition)
> 		dev_err(dev, "Something went wrong\n");
> 
> 	dev = some_function();
> 
> I have fixed such errors when I have encountered them, but they will not always
> warn or error on build.
> 
> Removal of the duplicate definitions in <linux/compat.h> will be done in a
> follow-up patch due to the already-large size of this series.
> 
> To test this series on sandbox, apply the following options in addition to
> sandbox_defconfig
> 
> CONFIG_LOGLEVEL=8
> CONFIG_LOG=n
> CONFIG_CMD_LOG=n
> CONFIG_CMD_TPM=n
> 
> Note that there is a soft dependency on [2] if you would like to test this patch
> with CONFIG_LOG and a higher LOG_LEVEL than LOGL_INFO.
> 
> [1] https://dev.azure.com/seanga2/u-boot/_build/results?buildId=34&view=results
> [2] https://patchwork.ozlabs.org/project/uboot/list/?series=201343
> 
> Changes in v2:
> - Support logging with struct device as well as struct udevice. A lot of
>   drivers, especially USB gadgets, log with devices and not udevices. There
>   is no major reason why they can't use udevice, but big changes like that
>   are outside the scope of this series.
> - Add some comments to __dev_printk and dev_printk_emit
> - Handle struct device as well as struct udevice
> - Match format strings for the NULL path to the regular path. This reduces the
>   amount of duplicated strings.
> - Print the device name before the driver name
> - Many new patches added to fix build bugs
> 
> Sean Anderson (46):
>   dm: syscon: Fix calling dev_dbg with an uninitialized device
>   firmware: ti_sci: Fix not calling dev_err with a device
>   i2c: mxc: Fix dev_err being called on a nonexistant variable
>   mtd: nand: pxa3xx: Fix not calling dev_xxx with a device
>   mtd: nand: sunxi: Fix not calling dev_err with a device
>   mtd: spi: Include dm.h in spi-nor-core.c
>   mtd: spi: Fix logging in spi-nor-tiny
>   mtd: spi-nand: Fix not calling dev_err with a device
>   mmc: Add mmc_dev()
>   mmc: bcm2835-host: Fix not calling dev_dbg with a device
>   mmc: mtk-sd: Fix not calling dev_err with a device
>   mailbox: k3: Fix not calling dev_err with a device
>   nand: atmel: Fix not calling dev_xxx with a device
>   nand: brcmnand: Fix not calling dev_err() with a device
>   nand: vybrid: Re-introduce vf610_nfc.dev
>   net: bcm6368: Fix not calling dev_info with a device
>   net: mdio: Fix not calling dev_dbg with a device
>   net: mvneta: Fix not always calling dev_err with a device
>   net: mvneta: Convert netdev_xxx to dev_xxx
>   net: mvpp2: Fix not calling dev_xxx with a device
>   net: mvpp2: Convert netdev_xxx to dev_xxx
>   linux/compat.h: Remove netdev_xxx functions
>   net: sunxi: Fix not calling dev_xxx with a device
>   net: sun8i_emac: Fix not calling dev_xxx with a device
>   net: ti: cpsw: Fix not calling dev_dbg with a device
>   phy: marvell: Fix not calling dev_err with a device
>   phy: rockchip: Fix not calling dev_err with a device
>   phy: sun4i-usb: Fix not calling dev_err with a device
>   phy: ti: Fix not calling dev_err with a device
>   phy: usbphyc: Fix not calling dev_err with a device
>   remoteproc: Remove unused function rproc_elf_sanity_check
>   remoteproc: k3-r5: Fix not calling dev_xxx with a device
>   remoteproc: k3: Fix not calling dev_xxx with a device
>   soc: qualcomm: Fix not calling dev_err with a device
>   spi: sunxi: Fix not calling dev_err with a device
>   spi: zynqmp_gqspi: Fix not calling dev_err with a device
>   sysreset: ti: Fix not calling dev_err with a device
>   usb: cdns3: Fix not calling dev_xxx with a device
>   usb: dwc2: Fix not calling dev_xxx with a device
>   usb: dwc3: Fix not calling dev_xxx with a device
>   usb: dwc3: ti: Fix not calling dev_err with a device
>   usb: dwc3: Don't include asm-generic/io.h
>   usb: musb-new: sunxi: Fix not calling dev_err with a device
>   video: stm32: Fix not calling dev_xxx with a device
>   dm: Use symbolic constants for log levels in dev_xxx
>   dm: Print device name in dev_xxx like Linux
> 
>  drivers/core/syscon-uclass.c              |   2 +-
>  drivers/firmware/ti_sci.c                 |  23 ++--
>  drivers/i2c/mxc_i2c.c                     |   7 +-
>  drivers/mailbox/k3-sec-proxy.c            |   6 +-
>  drivers/mmc/bcm2835_sdhost.c              |  34 +++---
>  drivers/mmc/mtk-sd.c                      |  24 ++--
>  drivers/mtd/nand/raw/atmel_nand.c         |  69 +++++++-----
>  drivers/mtd/nand/raw/brcmnand/brcmnand.c  |  20 +---
>  drivers/mtd/nand/raw/pxa3xx_nand.c        |  30 ++---
>  drivers/mtd/nand/raw/sunxi_nand.c         |  45 ++++----
>  drivers/mtd/nand/raw/vf610_nfc.c          |  38 ++++---
>  drivers/mtd/nand/spi/core.c               |   8 +-
>  drivers/mtd/spi/spi-nor-core.c            |   1 +
>  drivers/mtd/spi/spi-nor-tiny.c            |  21 +++-
>  drivers/net/bcm6368-eth.c                 |   3 +-
>  drivers/net/mvneta.c                      |  56 +++++-----
>  drivers/net/mvpp2.c                       |  87 ++++++++-------
>  drivers/net/sun8i_emac.c                  |   9 +-
>  drivers/net/sunxi_emac.c                  |   5 +-
>  drivers/net/ti/cpsw.c                     |   6 +
>  drivers/phy/allwinner/phy-sun4i-usb.c     |  12 +-
>  drivers/phy/marvell/comphy_core.c         |   6 +-
>  drivers/phy/phy-stm32-usbphyc.c           |   2 +-
>  drivers/phy/phy-ti-am654.c                |   4 +-
>  drivers/phy/rockchip/phy-rockchip-pcie.c  |  14 +--
>  drivers/phy/rockchip/phy-rockchip-typec.c |   6 +-
>  drivers/remoteproc/k3_system_controller.c |   9 +-
>  drivers/remoteproc/rproc-elf-loader.c     |  16 ---
>  drivers/remoteproc/ti_k3_r5f_rproc.c      |  24 ++--
>  drivers/smem/msm_smem.c                   |   2 +-
>  drivers/spi/spi-sunxi.c                   |   6 +-
>  drivers/spi/zynqmp_gqspi.c                |   6 +-
>  drivers/sysreset/sysreset-ti-sci.c        |   3 +-
>  drivers/usb/cdns3/ep0.c                   |   5 +-
>  drivers/usb/cdns3/gadget.c                |   3 +-
>  drivers/usb/dwc3/core.c                   |  15 +--
>  drivers/usb/dwc3/dwc3-generic.c           |   1 -
>  drivers/usb/dwc3/ep0.c                    |   1 +
>  drivers/usb/dwc3/gadget.c                 |  23 ++--
>  drivers/usb/dwc3/ti_usb_phy.c             |   4 +-
>  drivers/usb/host/dwc2.c                   |  39 ++++---
>  drivers/usb/musb-new/sunxi.c              |   9 +-
>  drivers/video/dw_mipi_dsi.c               |  24 ++--
>  include/dm/device_compat.h                | 127 ++++++++++++++++------
>  include/linux/compat.h                    |  19 ----
>  include/mmc.h                             |   2 +
>  include/remoteproc.h                      |  13 ---
>  net/mdio-uclass.c                         |   4 +-
>  48 files changed, 486 insertions(+), 407 deletions(-)

For the series, applied to u-boot/next, thanks!