[PATCH 00/23] RFC: exynos multiplatform support

Tomasz Figa t.figa at samsung.com
Tue Mar 5 13:28:01 EST 2013


Hi Arnd,

First of all, thanks for your great effort on making Exynos multiplatform-
friendly.

I have added my two cents inline.

On Tuesday 05 of March 2013 18:42:10 Arnd Bergmann wrote:
> Hi everyone,
> 
> Although I'm not present at the Linaro Connect hacking
> sessions, I am participating remotely and have tried
> hacking on multiplatform support for Exynos. This patch
> set is far from complete, but I think the patches
> can be useful anyway.
> 
> The series gets increasingly fishy towards the end,
> and we should probably not apply any of the last nine
> patches as-is, nor do I expect everything to work, since
> I have not tested them at all.
> 
> With this patch set, we can build mach-exynos as part
> of a multiplatform kernel, with the following caveats:
> 
> * Only DT based boards are supported

As far as I'm aware, there are plans to drop non-DT Exynos support. Kgene 
should know more on this.

> * Moving to common-clk breaks things including cpufreq
>   and others. Thomas is working on a patch for this

We have several patches internally for fixing things up to run correclty with 
common-clk. I'll see if we can post some patches.

> * We disable the gpio implementation, which also breaks
>   stuff, but Thomas has a patch already

The legacy GPIO code is needed only for non-DT case. DT-case uses the new 
pinctrl-samsung driver, which is (AFAIK) multiplatform-aware.

> * Using the generic DMA engine API in SPI and ASoC
>   means they no longer work on S3C
> * I did not like the solution for the UART driver, but
>   could also not think of a better one.
> * The FB_S3C, S3C2410_WATCHDOG and S3C_ADC drivers
>   are left as an exercise to the reader, they are
>   currently disabled with multiplatform
> * sparsemem support is not available on multiplatform

There was some discussion some time ago whether we really need sparsemem on 
Exynos. If I remember correctly, it turned out that we don't. So this is not 
really an issue.

> The patches are based on v3.9-rc1 and I have pushed
> the git branch to
> 
> git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc.git
> testing/exynos-multiplatform
> 
> I have not yet added subsystem maintainers to Cc on the
> patches, I'd like to coordinate with the other people
> involved first, so see if they already have patches
> for the same drivers.
> 
> 	Arnd
> 
> Arnd Bergmann (23):
>   ARM: exynos: introduce EXYNOS_ATAGS symbol
>   irqchip: exynos: remove dependency on mach/irqs.h
>   tty: serial/samsung: prepare for common clock API
>   tty: serial/samsung: make register definitions global
>   tty: serial/samsung: fix modular build
>   ARM: exynos: move debug-macro.S to include/debug/
>   i2c: s3c2410: make header file local
>   mmc: sdhci-s3c: remove platform dependencies
>   usb: exynos: do not include plat/usb-phy.h
>   [media] exynos: remove unnecessary header inclusions
>   video/exynos: remove unnecessary header inclusions
>   thermal/exynos: remove unnecessary header inclusions
>   mtd: onenand/samsung: make regs-onenand.h file local
>   rtc: s3c: make header file local
>   spi: s3c64xx: move to generic dmaengine API
>   pwm: samsung: repair the worst MMIO abuses

I'm currently working (in my free time) on a series of cleanup patches 
sanitizing Samsung PWM code for S3C64xx and S5PV210 DT (and multiplatform) 
support.

On those platforms it is a bit more complex case as there are two blocks of 
code that access the same hardware - samsung-time (using two PWM channels for 
clocksource and clock events) and pwm-samsung.

Hopefully, I will have some patches ready soon.

Best regards,
-- 
Tomasz Figa
Samsung Poland R&D Center
SW Solution Development, Kernel and System Framework

>   ASoC: samsung: move plat/ headers to local directory
>   ASoC: samsung: convert to dmaengine API
>   ASoC: samsung: use irq resource for idma
>   ARM: exynos: prepare for sparse IRQ
>   ARM: exynos: hack to disable private clock code
>   ARM: exynos: work around missing gpio code on multiplatform
>   ARM: exynos: experimental multiplatform support
> 
>  arch/arm/Kconfig                                  |  11 +-
>  arch/arm/Kconfig.debug                            |   8 +
>  arch/arm/include/debug/exynos.S                   |  39 +++
>  arch/arm/include/debug/samsung.S                  |  87 +++++++
>  arch/arm/mach-exynos/Kconfig                      |  36 ++-
>  arch/arm/mach-exynos/Makefile                     |   5 +
>  arch/arm/mach-exynos/common.c                     |  14 +-
>  arch/arm/mach-exynos/common.h                     |   2 +-
>  arch/arm/mach-exynos/dev-audio.c                  |   1 +
>  arch/arm/mach-exynos/dev-uart.c                   |   1 +
>  arch/arm/mach-exynos/include/mach/debug-macro.S   |  39 ---
>  arch/arm/mach-exynos/include/mach/gpio.h          |   2 +
>  arch/arm/mach-exynos/include/mach/irqs.h          |   5 +-
>  arch/arm/mach-exynos/mach-armlex4210.c            |   3 +
>  arch/arm/mach-exynos/mach-exynos4-dt.c            |   2 +
>  arch/arm/mach-exynos/mach-exynos5-dt.c            |   2 +
>  arch/arm/mach-exynos/mach-nuri.c                  |   2 +
>  arch/arm/mach-exynos/mach-origen.c                |   3 +
>  arch/arm/mach-exynos/mach-smdk4x12.c              |   2 +
>  arch/arm/mach-exynos/mach-smdkv310.c              |   3 +
>  arch/arm/mach-exynos/setup-i2c0.c                 |   3 +-
>  arch/arm/mach-exynos/setup-sdhci-gpio.c           |   2 +-
>  arch/arm/mach-exynos/setup-usb-phy.c              |   8 +-
>  arch/arm/mach-s3c24xx/clock-s3c2440.c             |   5 +
>  arch/arm/mach-s3c24xx/common.c                    |   5 +
>  arch/arm/mach-s3c24xx/dma-s3c2410.c               |   2 -
>  arch/arm/mach-s3c24xx/dma-s3c2412.c               |   2 -
>  arch/arm/mach-s3c24xx/dma-s3c2440.c               |   2 -
>  arch/arm/mach-s3c24xx/dma-s3c2443.c               |   2 -
>  arch/arm/mach-s3c24xx/include/mach/debug-macro.S  |   2 +-
>  arch/arm/mach-s3c24xx/mach-rx1950.c               |   1 -
>  arch/arm/mach-s3c64xx/include/mach/debug-macro.S  |   2 +-
>  arch/arm/mach-s3c64xx/include/mach/gpio.h         |   4 +
>  arch/arm/mach-s3c64xx/setup-usb-phy.c             |   4 +-
>  arch/arm/mach-s5p64x0/include/mach/debug-macro.S  |   2 +-
>  arch/arm/mach-s5pc100/include/mach/debug-macro.S  |   2 +-
>  arch/arm/mach-s5pc100/setup-sdhci-gpio.c          |   1 -
>  arch/arm/mach-s5pv210/include/mach/debug-macro.S  |   2 +-
>  arch/arm/mach-s5pv210/setup-sdhci-gpio.c          |   1 -
>  arch/arm/mach-s5pv210/setup-usb-phy.c             |   4 +-
>  arch/arm/plat-samsung/Kconfig                     |   5 +
>  arch/arm/plat-samsung/Makefile                    |   3 +
>  arch/arm/plat-samsung/clock-clksrc.c              |   3 +
>  arch/arm/plat-samsung/devs.c                      |  17 +-
>  arch/arm/plat-samsung/include/plat/debug-macro.S  |  87 -------
>  arch/arm/plat-samsung/include/plat/gpio-core.h    |   3 +
>  arch/arm/plat-samsung/include/plat/regs-ac97.h    |  67 -----
>  arch/arm/plat-samsung/include/plat/regs-iic.h     |  56 -----
>  arch/arm/plat-samsung/include/plat/regs-iis.h     |  70 ------
>  arch/arm/plat-samsung/include/plat/regs-onenand.h |  63 -----
>  arch/arm/plat-samsung/include/plat/regs-rtc.h     |  71 ------
>  arch/arm/plat-samsung/include/plat/regs-sdhci.h   |  87 -------
>  arch/arm/plat-samsung/include/plat/regs-serial.h  | 282
> +--------------------- arch/arm/plat-samsung/include/plat/sdhci.h        | 
> 56 +----
>  arch/arm/plat-samsung/include/plat/usb-phy.h      |   5 +-
>  arch/arm/plat-samsung/irq-vic-timer.c             |   1 +
>  arch/arm/plat-samsung/pm-gpio.c                   |   1 +
>  arch/arm/plat-samsung/pm.c                        |   1 +
>  arch/arm/plat-samsung/s5p-clock.c                 |   3 +
>  arch/arm/plat-samsung/s5p-irq.c                   |   1 +
>  drivers/cpufreq/Kconfig.arm                       |   4 +-
>  drivers/devfreq/Kconfig                           |   1 +
>  drivers/gpio/Makefile                             |   2 +-
>  drivers/i2c/busses/i2c-s3c2410.c                  |   3 +-
>  drivers/i2c/busses/i2c-s3c2410.h                  |  56 +++++
>  drivers/irqchip/exynos-combiner.c                 | 113 +++++----
>  drivers/media/platform/exynos-gsc/gsc-regs.c      |   1 -
>  drivers/media/platform/s5p-tv/sii9234_drv.c       |   3 -
>  drivers/mmc/host/Kconfig                          |   2 +-
>  drivers/mmc/host/sdhci-s3c-regs.h                 |  87 +++++++
>  drivers/mmc/host/sdhci-s3c.c                      |   5 +-
>  drivers/mtd/onenand/samsung.c                     |   4 +-
>  drivers/mtd/onenand/samsung.h                     |  61 +++++
>  drivers/pwm/pwm-samsung.c                         |  60 +++--
>  drivers/rtc/rtc-s3c.c                             |   3 +-
>  drivers/rtc/rtc-s3c.h                             |  70 ++++++
>  drivers/spi/spi-s3c64xx.c                         | 107 ++++----
>  drivers/thermal/exynos_thermal.c                  |   2 -
>  drivers/tty/serial/samsung.c                      |  17 +-
>  drivers/tty/serial/samsung.h                      |   4 +-
>  drivers/usb/host/ehci-s5p.c                       |   1 -
>  drivers/usb/host/ohci-exynos.c                    |   1 -
>  drivers/video/Kconfig                             |   2 +-
>  drivers/video/exynos/exynos_mipi_dsi.c            |   2 -
>  drivers/video/exynos/exynos_mipi_dsi_common.c     |   2 -
>  drivers/video/exynos/exynos_mipi_dsi_lowlevel.c   |   2 -
>  drivers/watchdog/Kconfig                          |   1 +
>  include/linux/platform_data/mmc-sdhci-s3c.h       |  56 +++++
>  include/linux/platform_data/spi-s3c64xx.h         |   3 +
>  include/linux/serial_s3c.h                        | 260
> ++++++++++++++++++++ sound/soc/samsung/ac97.c                          | 
> 17 +-
>  sound/soc/samsung/dma.c                           | 104 ++++----
>  sound/soc/samsung/dma.h                           |   4 +-
>  sound/soc/samsung/h1940_uda1380.c                 |   2 +-
>  sound/soc/samsung/i2s.c                           |   9 +-
>  sound/soc/samsung/idma.c                          |  10 +-
>  sound/soc/samsung/neo1973_wm8753.c                |   2 +-
>  sound/soc/samsung/pcm.c                           |  13 -
>  sound/soc/samsung/regs-ac97.h                     |  67 +++++
>  sound/soc/samsung/regs-iis.h                      |  70 ++++++
>  sound/soc/samsung/rx1950_uda1380.c                |   2 +-
>  sound/soc/samsung/s3c2412-i2s.c                   |  10 -
>  sound/soc/samsung/s3c24xx-i2s.c                   |  12 +-
>  sound/soc/samsung/s3c24xx_uda134x.c               |   2 +-
>  sound/soc/samsung/spdif.c                         |   6 -
>  105 files changed, 1262 insertions(+), 1208 deletions(-)
>  create mode 100644 arch/arm/include/debug/exynos.S
>  create mode 100644 arch/arm/include/debug/samsung.S
>  delete mode 100644 arch/arm/mach-exynos/include/mach/debug-macro.S
>  delete mode 100644 arch/arm/plat-samsung/include/plat/debug-macro.S
>  delete mode 100644 arch/arm/plat-samsung/include/plat/regs-ac97.h
>  delete mode 100644 arch/arm/plat-samsung/include/plat/regs-iic.h
>  delete mode 100644 arch/arm/plat-samsung/include/plat/regs-iis.h
>  delete mode 100644 arch/arm/plat-samsung/include/plat/regs-onenand.h
>  delete mode 100644 arch/arm/plat-samsung/include/plat/regs-rtc.h
>  delete mode 100644 arch/arm/plat-samsung/include/plat/regs-sdhci.h
>  create mode 100644 drivers/i2c/busses/i2c-s3c2410.h
>  create mode 100644 drivers/mmc/host/sdhci-s3c-regs.h
>  create mode 100644 drivers/mtd/onenand/samsung.h
>  create mode 100644 drivers/rtc/rtc-s3c.h
>  create mode 100644 include/linux/platform_data/mmc-sdhci-s3c.h
>  create mode 100644 include/linux/serial_s3c.h
>  create mode 100644 sound/soc/samsung/regs-ac97.h
>  create mode 100644 sound/soc/samsung/regs-iis.h




More information about the linux-arm-kernel mailing list