[PATCH RFC v2 0/14] Clean up debugging support

Russell King - ARM Linux linux at arm.linux.org.uk
Tue Jul 16 12:32:43 EDT 2013


This is the second posting of this series, with a few additional patches
on top to go a little further.  Changes since the last posting:

- we now provide a couple of generic options to allow the 8250 and PL01x
  ports to be configured via Kconfig manually.  What this means is that
  I do not expect to see further entries to the debug menu for platforms
  which have PL01x or 8250 debug ports - use the generic options instead.

- I've converted a bunch of the dependencies to select statements here
  to clean things up a little more.

- Made the '8250 32-bit access size" option depend on a shift >= 2
  (it would be silly to do 32-bit accesses to byte offsets.)

- Made all 8250 options available to the user when 8250 support is
  selected, allowing full configuration of 8250 options.

- Removed DEBUG_ROCKCHIP_UART which wasn't doing anything after this
  cleanup.

- Converted Keystone, Davinci, and Spear to also use the generic 8250/PL01x
  code; these had their own private implementations of the same without
  using the generic versions for no reason that I could see.

The rest is the same boilerplate from last time with the exception of
the diffstat.

This patch series cleans up some aspects of the LL debug support by:
- Removing the multi-level choice madness
- Consolidating the 8250 debug UART support
- Consolidating the PL01x debug UART support

The differences between the various 8250 debug UART implementations are:
- Physical/Virtual addresses
- Register offset shift
- Access size
- Flow control

These are now parameterised in the Kconfig.  I've left OMAP because
that's a complex case, but it looks like it can be adapted to it if
some of the unnecessary complexity is eliminated.

Similar is done with the PL01x implementation, except a few complex
cases are left - automatic detection on Versatile Express, and the
Ux500 support which looks like it'll take some picking through header
files to work out what the base addresses are.

The approach I've taken is to consolidate without losing any information
- what that means it that the Kconfig parameters have rather a lot of
dependencies/defaults associated with them, and the main choice
statement keeps all its options.

Nevertheless, even avoiding the loss of information, I think the diffstat
is quite impressive:

 arch/arm/Kconfig.debug                             |  553 ++++++++++++++------
 arch/arm/include/asm/hardware/debug-8250.S         |   29 -
 arch/arm/include/debug/8250.S                      |   54 ++
 arch/arm/include/debug/8250_32.S                   |   27 -
 arch/arm/include/debug/bcm2835.S                   |   22 -
 arch/arm/include/debug/cns3xxx.S                   |   19 -
 arch/arm/include/debug/highbank.S                  |   17 -
 arch/arm/include/debug/keystone.S                  |   43 --
 arch/arm/include/debug/mvebu.S                     |   30 -
 arch/arm/include/debug/mxs.S                       |   27 -
 arch/arm/include/debug/nomadik.S                   |   20 -
 arch/arm/include/debug/nspire.S                    |   28 -
 arch/arm/include/debug/picoxcell.S                 |   19 -
 .../{asm/hardware/debug-pl01x.S => debug/pl01x.S}  |    9 +-
 arch/arm/include/debug/pxa.S                       |   33 --
 arch/arm/include/debug/rockchip.S                  |   42 --
 arch/arm/include/debug/socfpga.S                   |   21 -
 arch/arm/include/debug/sunxi.S                     |   27 -
 arch/arm/include/debug/u300.S                      |   18 -
 arch/arm/include/debug/ux500.S                     |    2 +-
 arch/arm/include/debug/vexpress.S                  |   48 +--
 arch/arm/mach-davinci/include/mach/debug-macro.S   |   65 ---
 arch/arm/mach-dove/include/mach/debug-macro.S      |   19 -
 arch/arm/mach-ebsa110/include/mach/debug-macro.S   |   22 -
 arch/arm/mach-ep93xx/include/mach/debug-macro.S    |   21 -
 .../arm/mach-footbridge/include/mach/debug-macro.S |   15 -
 arch/arm/mach-gemini/include/mach/debug-macro.S    |   21 -
 .../arm/mach-integrator/include/mach/debug-macro.S |   20 -
 arch/arm/mach-iop13xx/include/mach/debug-macro.S   |   24 -
 arch/arm/mach-iop32x/include/mach/debug-macro.S    |   21 -
 arch/arm/mach-iop33x/include/mach/debug-macro.S    |   22 -
 arch/arm/mach-ixp4xx/include/mach/debug-macro.S    |   26 -
 arch/arm/mach-kirkwood/include/mach/debug-macro.S  |   19 -
 arch/arm/mach-lpc32xx/include/mach/debug-macro.S   |   29 -
 arch/arm/mach-mv78xx0/include/mach/debug-macro.S   |   19 -
 arch/arm/mach-orion5x/include/mach/debug-macro.S   |   21 -
 arch/arm/mach-realview/include/mach/debug-macro.S  |   29 -
 arch/arm/mach-rpc/include/mach/debug-macro.S       |   23 -
 arch/arm/mach-spear/include/mach/debug-macro.S     |   36 --
 arch/arm/mach-spear/include/mach/spear.h           |    2 -
 arch/arm/mach-versatile/include/mach/debug-macro.S |   21 -
 41 files changed, 457 insertions(+), 1106 deletions(-)
 delete mode 100644 arch/arm/include/asm/hardware/debug-8250.S
 create mode 100644 arch/arm/include/debug/8250.S
 delete mode 100644 arch/arm/include/debug/8250_32.S
 delete mode 100644 arch/arm/include/debug/bcm2835.S
 delete mode 100644 arch/arm/include/debug/cns3xxx.S
 delete mode 100644 arch/arm/include/debug/highbank.S
 delete mode 100644 arch/arm/include/debug/keystone.S
 delete mode 100644 arch/arm/include/debug/mvebu.S
 delete mode 100644 arch/arm/include/debug/mxs.S
 delete mode 100644 arch/arm/include/debug/nomadik.S
 delete mode 100644 arch/arm/include/debug/nspire.S
 delete mode 100644 arch/arm/include/debug/picoxcell.S
 rename arch/arm/include/{asm/hardware/debug-pl01x.S => debug/pl01x.S} (78%)
 delete mode 100644 arch/arm/include/debug/pxa.S
 delete mode 100644 arch/arm/include/debug/rockchip.S
 delete mode 100644 arch/arm/include/debug/socfpga.S
 delete mode 100644 arch/arm/include/debug/sunxi.S
 delete mode 100644 arch/arm/include/debug/u300.S
 delete mode 100644 arch/arm/mach-davinci/include/mach/debug-macro.S
 delete mode 100644 arch/arm/mach-dove/include/mach/debug-macro.S
 delete mode 100644 arch/arm/mach-ebsa110/include/mach/debug-macro.S
 delete mode 100644 arch/arm/mach-ep93xx/include/mach/debug-macro.S
 delete mode 100644 arch/arm/mach-gemini/include/mach/debug-macro.S
 delete mode 100644 arch/arm/mach-integrator/include/mach/debug-macro.S
 delete mode 100644 arch/arm/mach-iop13xx/include/mach/debug-macro.S
 delete mode 100644 arch/arm/mach-iop32x/include/mach/debug-macro.S
 delete mode 100644 arch/arm/mach-iop33x/include/mach/debug-macro.S
 delete mode 100644 arch/arm/mach-ixp4xx/include/mach/debug-macro.S
 delete mode 100644 arch/arm/mach-kirkwood/include/mach/debug-macro.S
 delete mode 100644 arch/arm/mach-lpc32xx/include/mach/debug-macro.S
 delete mode 100644 arch/arm/mach-mv78xx0/include/mach/debug-macro.S
 delete mode 100644 arch/arm/mach-orion5x/include/mach/debug-macro.S
 delete mode 100644 arch/arm/mach-realview/include/mach/debug-macro.S
 delete mode 100644 arch/arm/mach-rpc/include/mach/debug-macro.S
 delete mode 100644 arch/arm/mach-spear/include/mach/debug-macro.S
 delete mode 100644 arch/arm/mach-versatile/include/mach/debug-macro.S



More information about the linux-arm-kernel mailing list