PLEA: Please fix mach/gpio.h includes (was: Re: [RFC PATCH 2/2] GPIO: add gpiolib and irqchip for CSR SiRFprimaII GPIO controller)
From: Nicolas Pitre <hidden>
Date: 2011-07-27 02:51:08
On Wed, 27 Jul 2011, Barry Song wrote:
2011/7/27 Nicolas Pitre [off-list ref]:quoted
On Tue, 26 Jul 2011, Russell King - ARM Linux wrote:quoted
I don't think there's any plans to break the: linux/gpio.h -> asm/gpio.h -> mach/gpio.h include path at the moment, as platforms do define ARCH_NR_GPIO, which has to be done before asm-generic/gpiolib.h is included.Well, this GPIO business is the biggest hurdle towards a single kernel image that can support multiple SOCs at the moment, and the only one for which I have no solution yet. ?Anything that could help removing mach/gpio.h from asm/gpio.h would be welcome.After reading all the following patches, 1. use CONFIG_PHYS_OFFSET to prepare for removal of a bunch of <mach/memory.h> files 2. move from ARM_DMA_ZONE_SIZE to mdesc->dma_zone_size 3. convert boot_params to atag_offset Have i lost anything for the work on 1 and 2? considering some platforms need CONSISTENT_DMA_SIZE more than the default 2MB in arch/arm/include/asm/memory.h, we can't remove all memory.h only by defining CONFIG_PHYS_OFFSET and moving ARM_DMA_ZONE_SIZE to mdesc->dma_zone_size. So CONSISTENT_DMA_SIZE should also be a left issue except gpio.h.
CONSISTENT_DMA_SIZE can be solved the same way as ARM_DMA_ZONE_SIZE, plus a few changes in dma-mapping.c to dynamically allocate the consistent_pte array. But that's far from the end of it. In a nutshell: - We have to get rid of mach/vmalloc.h (trivial) - We have to kill every SOC specific definition for CLOCK_TICK_RATE and remove mach/timex.h. - All mach/io.h need a similar refactoring. - asm/irq.h must stop including mach/irqs.h, and everyone should initialize mdesc->nr_irqs - mach/entry-macro.S should be translated into something that hooks to mdesc->handle_irq. - mach/system.h content needs to be moved to out-of-line indirect calls. - A multy-SOC kernel binary might not support CONFIG_DEBUG_LL out of the box. - And there are a few odd cases we probably might not find sufficient motivation to fix them and simply exclude them from a single image config. But there is mach/gpio.h which is the real bummer at the moment. Nicolas