Skip to content

Create common framework for AT91 device initialisation

Ryan Mallon linux-arm-kernel 6 versions – New

Get series with b4
b4 am [email protected]

Versions newest first · linked by author and title

  1. v4 Latest posting 2/20 of 23 patches 0 repliesNew
  2. v4 posting 1/223 patches 0 repliesSuperseded
  3. v3 posting 2/20 of 23 patches 0 repliesSuperseded
Earlier versions · 3
VersionPostedPatchesRepliesStatus
v3 posting 1/223 patches0 repliesSuperseded
v223 patches0 repliesSuperseded
v1 RFC0 of 23 patches0 repliesSuperseded

Patches in v4 posting 2/2 No applies recorded yet

None of the 23 patches the cover letter announces are in this archive.

Reviews trailers per patch

No Reviewed-by, Acked-by or Tested-by trailers for v4 yet.

Read the v4 thread

Cover letter [PATCH V4 00/23] Create common framework for AT91 device initialisation
Quoted 69 lines · Jean-Christophe PLAGNIOL-VILLARD
Quoted 60 lines · Ryan Mallon

Each AT91 variant (AT91RM9200, AT91SAM9260, etc) currently has its own devices file, which includes the MMIO address, interrupt configuration, GPIO setup, etc for each device. This results in a large amount of duplicated code.

This patch set introduces a framework for adding shared devices for the AT91 platform and replaces the multiple device setup implementations for each device with single implementations in the new framework. This has a net reduction of over 5000 lines of code.

Each of the arch/arm/mach-at91/*_devices.c files becomes a collection of structures (with some initialisation callbacks where necessary) with a table of devices which are present on the particular AT91 variant. All structures/functions are marked as __init/__initdata so there is little additional memory overhead. This also means that the #ifdefs around each device can be removed from the *_devices.c files (but remain in the new common devices.c file) without overhead.

This is also a step towards allowing more than one AT91 variant to be built into a single kernel by removing duplicate function names across the *_devices.c files.

I have build tested the patch series for all of the AT91 variants and devices, and have boot tested it on the AT91SAM9G20 (Snapper 9G20 board) and tested basic device functionality.

Changes from v1:
- Moved __initdata to the end of lines
- Fixed at572d940hf EMAC MMIO base
- Fixed some whitespace issues

Changes from v2:
- Renamed UART identifiers from AT91_ID_USx to AT91_UART_USx. The AT91_UARTx names are already in use. See patch 12 for more details.
- Removed some left over debugging.

Changes from v3:
- Made resource/data allocation dynamic to remove all of the near empty static declarations.
- Use arrays when multiple devices exist to reduce code complexity
- Fixed indendation on some structures and initialisers
- Fixed some additional bugs
- Now removes over 5000 lines of code :-)

Ryan Mallon (23):
at91: Add common devices framework
at91: Make Ethernet device common
at91: Make USB OHCI/EHCI devices common
at91: Make UDC device common
at91: Make MMC device common
at91: Make NAND device common
at91: Make TWI device common
at91: Make SPI device common
at91: Make TCB device common
at91: Make RTT device common
at91: Make watchdog device common
at91: Make UART devices common
at91: Make PWM device common
at91: Make SSC device common
at91: Make AC97 device common

Quoted 8 lines

at91: Make LCD controller device common
at91: Make touchscreen device common
at91: Make HDMAC device common
at91: Make RTC device common
at91: Make high speed USB gadget device common
at91: Make compact flash device common
at91: Move at91sam9263 CAN device to common devices
at91: Remove mAgic and ISI device code

Quoted 6 lines

good patch

I'll send some comment to remove more
and we have issue on some of the api we need to fix first so as I tell you before we keep in hold until we fix it as they are in confict suc as GPIO, RTC, TIMERS, clock etc...

I realise that this patch will probably need to be rebased on top of some of yours and Andrews work. I'd like to get any overall design issues sorted before I do this though.

Thanks,
~Ryan

Signature · 7 lines
Bluewater Systems Ltd - ARM Technology Solution Centre

Ryan Mallon         		5 Amuri Park, 404 Barbadoes St
ryan at bluewatersys.com         	PO Box 13 889, Christchurch 8013
http://www.bluewatersys.com	New Zealand
Phone: +64 3 3779127		Freecall: Australia 1800 148 751
Fax:   +64 3 3779135			  USA 1800 261 2934