[PATCH v10 2/3] ARM: EXYNOS: Change System MMU platform device definitions

2012-03-06 Thread KyongHo Cho
Handling System MMUs with an identifier is not flexible to manage
System MMU platform devices because of the following reasons:
1. A device driver which needs to handle System MMU must know the ID.
2. A System MMU may not present in some implementations of Exynos family.
3. Handling System MMU with IOMMU API does not require an ID.

This patch is the result of removing ID of System MMUs.
Instead, a device driver that needs to handle its System MMU must
use IOMMU API while its descriptor of platform device is given.

This patch also includes the following enhanclements:
- A System MMU device becomes a child if its power domain device.
- clkdev

Signed-off-by: KyongHo Cho pullip@samsung.com
---
 arch/arm/mach-exynos/Kconfig|   11 +-
 arch/arm/mach-exynos/Makefile   |2 +-
 arch/arm/mach-exynos/clock-exynos4.c|   79 ++--
 arch/arm/mach-exynos/clock-exynos4.h|2 +
 arch/arm/mach-exynos/clock-exynos4210.c |   11 +
 arch/arm/mach-exynos/clock-exynos4212.c |   28 ++-
 arch/arm/mach-exynos/clock-exynos5.c|   90 +
 arch/arm/mach-exynos/dev-sysmmu.c   |  457 --
 arch/arm/mach-exynos/include/mach/irqs.h|  179 +-
 arch/arm/mach-exynos/include/mach/map.h |   38 ++
 arch/arm/mach-exynos/include/mach/regs-clock.h  |5 +
 arch/arm/mach-exynos/include/mach/regs-sysmmu.h |   28 --
 arch/arm/mach-exynos/include/mach/sysmmu.h  |   84 +++--
 arch/arm/mach-exynos/mach-armlex4210.c  |1 -
 arch/arm/mach-exynos/mach-smdkv310.c|1 -
 15 files changed, 612 insertions(+), 404 deletions(-)
 delete mode 100644 arch/arm/mach-exynos/include/mach/regs-sysmmu.h

diff --git a/arch/arm/mach-exynos/Kconfig b/arch/arm/mach-exynos/Kconfig
index c49d450..d5a6a29 100644
--- a/arch/arm/mach-exynos/Kconfig
+++ b/arch/arm/mach-exynos/Kconfig
@@ -88,10 +88,10 @@ config EXYNOS4_SETUP_FIMD0
help
  Common setup code for FIMD0.
 
-config EXYNOS4_DEV_SYSMMU
+config EXYNOS_DEV_SYSMMU
bool
help
- Common setup code for SYSTEM MMU in EXYNOS4
+ Common setup code for SYSTEM MMU in EXYNOS platforms
 
 config EXYNOS4_DEV_DWMCI
bool
@@ -201,12 +201,12 @@ config MACH_SMDKV310
select S3C_DEV_HSMMC2
select S3C_DEV_HSMMC3
select SAMSUNG_DEV_BACKLIGHT
+   select EXYNOS_DEV_SYSMMU
select EXYNOS4_DEV_AHCI
select SAMSUNG_DEV_KEYPAD
select EXYNOS4_DEV_DMA
select SAMSUNG_DEV_PWM
select EXYNOS4_DEV_USB_OHCI
-   select EXYNOS4_DEV_SYSMMU
select EXYNOS4_SETUP_FIMD0
select EXYNOS4_SETUP_I2C1
select EXYNOS4_SETUP_KEYPAD
@@ -225,7 +225,6 @@ config MACH_ARMLEX4210
select S3C_DEV_HSMMC3
select EXYNOS4_DEV_AHCI
select EXYNOS4_DEV_DMA
-   select EXYNOS4_DEV_SYSMMU
select EXYNOS4_SETUP_SDHCI
help
  Machine support for Samsung ARMLEX4210 based on EXYNOS4210
@@ -251,6 +250,7 @@ config MACH_UNIVERSAL_C210
select S5P_DEV_MFC
select S5P_DEV_ONENAND
select S5P_DEV_TV
+   select EXYNOS_DEV_SYSMMU
select EXYNOS4_DEV_DMA
select EXYNOS4_SETUP_FIMD0
select EXYNOS4_SETUP_I2C1
@@ -320,6 +320,7 @@ config MACH_ORIGEN
select S5P_DEV_USB_EHCI
select SAMSUNG_DEV_BACKLIGHT
select SAMSUNG_DEV_PWM
+   select EXYNOS_DEV_SYSMMU
select EXYNOS4_DEV_DMA
select EXYNOS4_DEV_USB_OHCI
select EXYNOS4_SETUP_FIMD0
@@ -343,6 +344,7 @@ config MACH_SMDK4212
select SAMSUNG_DEV_BACKLIGHT
select SAMSUNG_DEV_KEYPAD
select SAMSUNG_DEV_PWM
+   select EXYNOS_DEV_SYSMMU
select EXYNOS4_SETUP_I2C1
select EXYNOS4_SETUP_I2C3
select EXYNOS4_SETUP_I2C7
@@ -368,6 +370,7 @@ comment EXYNOS5250 Boards
 config MACH_SMDK5250
bool SMDK5250
select SOC_EXYNOS5250
+   select EXYNOS_DEV_SYSMMU
help
  Machine support for Samsung SMDK5250
 endif
diff --git a/arch/arm/mach-exynos/Makefile b/arch/arm/mach-exynos/Makefile
index 6fd8dd9..8b655e9 100644
--- a/arch/arm/mach-exynos/Makefile
+++ b/arch/arm/mach-exynos/Makefile
@@ -52,7 +52,7 @@ obj-$(CONFIG_MACH_SMDK5250)   += mach-smdk5250.o
 obj-y  += dev-uart.o
 obj-$(CONFIG_ARCH_EXYNOS4) += dev-audio.o
 obj-$(CONFIG_EXYNOS4_DEV_AHCI) += dev-ahci.o
-obj-$(CONFIG_EXYNOS4_DEV_SYSMMU)   += dev-sysmmu.o
+obj-$(CONFIG_EXYNOS_DEV_SYSMMU)+= dev-sysmmu.o
 obj-$(CONFIG_EXYNOS4_DEV_DWMCI)+= dev-dwmci.o
 obj-$(CONFIG_EXYNOS4_DEV_DMA)  += dma.o
 obj-$(CONFIG_EXYNOS4_DEV_USB_OHCI) += dev-ohci.o
diff --git a/arch/arm/mach-exynos/clock-exynos4.c 
b/arch/arm/mach-exynos/clock-exynos4.c
index d72a1fe..18c48f0 100644
--- a/arch/arm/mach-exynos/clock-exynos4.c
+++ b/arch/arm/mach-exynos/clock-exynos4.c
@@ -169,7 +169,7 @@ static int 

Re: [PATCH v10 2/3] ARM: EXYNOS: Change System MMU platform device definitions

2012-03-06 Thread Kyungmin Park
Hi,

On 3/6/12, KyongHo Cho pullip@samsung.com wrote:
 Handling System MMUs with an identifier is not flexible to manage
 System MMU platform devices because of the following reasons:
 1. A device driver which needs to handle System MMU must know the ID.
 2. A System MMU may not present in some implementations of Exynos family.
 3. Handling System MMU with IOMMU API does not require an ID.

 This patch is the result of removing ID of System MMUs.
 Instead, a device driver that needs to handle its System MMU must
 use IOMMU API while its descriptor of platform device is given.

 This patch also includes the following enhanclements:
 - A System MMU device becomes a child if its power domain device.
 - clkdev

 Signed-off-by: KyongHo Cho pullip@samsung.com
 ---
  arch/arm/mach-exynos/Kconfig|   11 +-
  arch/arm/mach-exynos/Makefile   |2 +-
  arch/arm/mach-exynos/clock-exynos4.c|   79 ++--
  arch/arm/mach-exynos/clock-exynos4.h|2 +
  arch/arm/mach-exynos/clock-exynos4210.c |   11 +
  arch/arm/mach-exynos/clock-exynos4212.c |   28 ++-
  arch/arm/mach-exynos/clock-exynos5.c|   90 +
  arch/arm/mach-exynos/dev-sysmmu.c   |  457
 --
  arch/arm/mach-exynos/include/mach/irqs.h|  179 +-
  arch/arm/mach-exynos/include/mach/map.h |   38 ++
  arch/arm/mach-exynos/include/mach/regs-clock.h  |5 +
  arch/arm/mach-exynos/include/mach/regs-sysmmu.h |   28 --
  arch/arm/mach-exynos/include/mach/sysmmu.h  |   84 +++--
  arch/arm/mach-exynos/mach-armlex4210.c  |1 -
  arch/arm/mach-exynos/mach-smdkv310.c|1 -
  15 files changed, 612 insertions(+), 404 deletions(-)
  delete mode 100644 arch/arm/mach-exynos/include/mach/regs-sysmmu.h

 diff --git a/arch/arm/mach-exynos/Kconfig b/arch/arm/mach-exynos/Kconfig
 index c49d450..d5a6a29 100644
 --- a/arch/arm/mach-exynos/Kconfig
 +++ b/arch/arm/mach-exynos/Kconfig
 @@ -88,10 +88,10 @@ config EXYNOS4_SETUP_FIMD0
   help
 Common setup code for FIMD0.

 -config EXYNOS4_DEV_SYSMMU
 +config EXYNOS_DEV_SYSMMU
   bool
   help
 -   Common setup code for SYSTEM MMU in EXYNOS4
 +   Common setup code for SYSTEM MMU in EXYNOS platforms

  config EXYNOS4_DEV_DWMCI
   bool
 @@ -201,12 +201,12 @@ config MACH_SMDKV310
   select S3C_DEV_HSMMC2
   select S3C_DEV_HSMMC3
   select SAMSUNG_DEV_BACKLIGHT
 + select EXYNOS_DEV_SYSMMU
   select EXYNOS4_DEV_AHCI
   select SAMSUNG_DEV_KEYPAD
   select EXYNOS4_DEV_DMA
   select SAMSUNG_DEV_PWM
   select EXYNOS4_DEV_USB_OHCI
 - select EXYNOS4_DEV_SYSMMU
   select EXYNOS4_SETUP_FIMD0
   select EXYNOS4_SETUP_I2C1
   select EXYNOS4_SETUP_KEYPAD
 @@ -225,7 +225,6 @@ config MACH_ARMLEX4210
   select S3C_DEV_HSMMC3
   select EXYNOS4_DEV_AHCI
   select EXYNOS4_DEV_DMA
 - select EXYNOS4_DEV_SYSMMU
   select EXYNOS4_SETUP_SDHCI
   help
 Machine support for Samsung ARMLEX4210 based on EXYNOS4210
 @@ -251,6 +250,7 @@ config MACH_UNIVERSAL_C210
   select S5P_DEV_MFC
   select S5P_DEV_ONENAND
   select S5P_DEV_TV
 + select EXYNOS_DEV_SYSMMU
   select EXYNOS4_DEV_DMA
   select EXYNOS4_SETUP_FIMD0
   select EXYNOS4_SETUP_I2C1
 @@ -320,6 +320,7 @@ config MACH_ORIGEN
   select S5P_DEV_USB_EHCI
   select SAMSUNG_DEV_BACKLIGHT
   select SAMSUNG_DEV_PWM
 + select EXYNOS_DEV_SYSMMU
   select EXYNOS4_DEV_DMA
   select EXYNOS4_DEV_USB_OHCI
   select EXYNOS4_SETUP_FIMD0
 @@ -343,6 +344,7 @@ config MACH_SMDK4212
   select SAMSUNG_DEV_BACKLIGHT
   select SAMSUNG_DEV_KEYPAD
   select SAMSUNG_DEV_PWM
 + select EXYNOS_DEV_SYSMMU
   select EXYNOS4_SETUP_I2C1
   select EXYNOS4_SETUP_I2C3
   select EXYNOS4_SETUP_I2C7
 @@ -368,6 +370,7 @@ comment EXYNOS5250 Boards
  config MACH_SMDK5250
   bool SMDK5250
   select SOC_EXYNOS5250
 + select EXYNOS_DEV_SYSMMU
   help
 Machine support for Samsung SMDK5250
  endif
 diff --git a/arch/arm/mach-exynos/Makefile b/arch/arm/mach-exynos/Makefile
 index 6fd8dd9..8b655e9 100644
 --- a/arch/arm/mach-exynos/Makefile
 +++ b/arch/arm/mach-exynos/Makefile
 @@ -52,7 +52,7 @@ obj-$(CONFIG_MACH_SMDK5250) += mach-smdk5250.o
  obj-y+= dev-uart.o
  obj-$(CONFIG_ARCH_EXYNOS4)   += dev-audio.o
  obj-$(CONFIG_EXYNOS4_DEV_AHCI)   += dev-ahci.o
 -obj-$(CONFIG_EXYNOS4_DEV_SYSMMU) += dev-sysmmu.o
 +obj-$(CONFIG_EXYNOS_DEV_SYSMMU)  += dev-sysmmu.o
  obj-$(CONFIG_EXYNOS4_DEV_DWMCI)  += dev-dwmci.o
  obj-$(CONFIG_EXYNOS4_DEV_DMA)+= dma.o
  obj-$(CONFIG_EXYNOS4_DEV_USB_OHCI)   += dev-ohci.o
 diff --git a/arch/arm/mach-exynos/clock-exynos4.c
 b/arch/arm/mach-exynos/clock-exynos4.c
 index d72a1fe..18c48f0 100644
 --- a/arch/arm/mach-exynos/clock-exynos4.c
 +++ 

Re: [PATCH v10 2/3] ARM: EXYNOS: Change System MMU platform device definitions

2012-03-06 Thread KyongHo Cho
On Tue, Mar 6, 2012 at 7:03 PM, Kyungmin Park kyungmin.p...@samsung.com wrote:

 -#define S5P_SYSMMU_TOTAL_IPNUM               EXYNOS4_SYSMMU_TOTAL_IPNUM
 +#define SYSMMU_DEVNAME_BASE exynos-sysmmu
 +
 +#define SYSMMU_CLOCK_NAME sysmmu
 +#define SYSMMU_CLOCK_NAME2 sysmmu_mc
 What's the meaning of mc?
It stands for multi clock gating source.
ISP block has a lot of System MMUs and I merged them in a single
platform device to control them easier. However it is required to access
2 control registers to gating  their clocks. sysmmu_mc is prepared for the
case that requires 2 clock descriptors for clock gating.

 +
 +#ifdef CONFIG_EXYNOS_DEV_SYSMMU
 +#include linux/device.h
 +struct platform_device;
 +
 +#define SYSMMU_PLATDEV(ipname) exynos_device_sysmmu_##ipname
 +
 +extern struct platform_device SYSMMU_PLATDEV(mfc_l);
 +extern struct platform_device SYSMMU_PLATDEV(mfc_r);
 +extern struct platform_device SYSMMU_PLATDEV(tv);
 +extern struct platform_device SYSMMU_PLATDEV(jpeg);
 +extern struct platform_device SYSMMU_PLATDEV(rot);
 Where's the fimc platform_device?

 I think you only tested it with exynos5.

True. I am sorry that I have missed to define it externally.
Thank you.

Cho KyongHo.
--
To unsubscribe from this list: send the line unsubscribe linux-samsung-soc in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html