Re: [PATCH 8/9] ARM: EXYNOS: suspend requires regulator access

2015-03-02 Thread Javier Martinez Canillas
Hello Arnd,

On Mon, Mar 2, 2015 at 10:28 PM, Arnd Bergmann  wrote:
> Building an exynos kernel without regulators but with suspend enabled results
> in a link error:
>
> arch/arm/mach-exynos/built-in.o: In function `exynos_suspend_finish':
> arch/arm/mach-exynos/suspend.c:532: undefined reference to 
> `regulator_suspend_finish'
> arch/arm/mach-exynos/built-in.o: In function `exynos_suspend_prepare':
> arch/arm/mach-exynos/suspend.c:515: undefined reference to 
> `regulator_suspend_prepare'
>
> This adds an appropriate 'select' statement in Kconfig to ensure the symbols
> are available.
>
> Signed-off-by: Arnd Bergmann 

The patch looks good to me.

Reviewed-by: Javier Martinez Canillas 

Best regards,
Javier
--
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


Re: [PATCH 1/1] ARM: exynos_defconfig: Disable IOMMU support

2015-03-02 Thread Javier Martinez Canillas
Hello Kukjin,

On 03/02/2015 08:43 PM, Kukjin Kim wrote:
> On 02/27/15 15:20, Javier Martinez Canillas wrote:
>> Hello Kukjin,
>> 
> Hi,
> 
>> On 02/17/2015 12:38 PM, Javier Martinez Canillas wrote:
>> 
>> Can you please pick this patch? linux-next is still broken for many Exynos
>> boards after commit 8dcc14f82f06 ("drm/exynos: IOMMU support should not be
>> selectable by user") so we need to disable IOMMU support on Exynos to make
>> them boot again.
>> 
>> Here are boot logs of some boards that are affected by this issue:
>> 
>> http://storage.kernelci.org/samsung/v4.0-rc1-44-g6a05e2a77140/arm-exynos_defconfig/lab-tbaker/boot-exynos5250-arndale.html
>> http://storage.kernelci.org/samsung/v4.0-rc1-28-g55a4c031ed15/arm-exynos_defconfig/lab-collabora/boot-exynos5800-peach-pi.html
>> http://storage.kernelci.org/samsung/v4.0-rc1-28-g55a4c031ed15/arm-exynos_defconfig/lab-collabora/boot-exynos5250-snow.html
>> 
> Thanks, applied.
>

Thanks a lot, please keep in mind that this patch is 4.0 rc material since
the offending commit landed in 4.0-rc1 so Exynos DRM driver breaks the boot.
 
>> Also there are other exynos_defconfig patches that have been in the list:
>> 
>> * [PATCH 1/1] ARM: exynos_defconfig: Enable HDMI support
>> https://lkml.org/lkml/2015/2/6/531
>> 
>> * [PATCH] ARM: exynos_defconfig: Enable Marvell WiFi-Ex support
>> https://lkml.org/lkml/2015/2/15/59
>> 
> Will have a look soon ;)
>

Great, thanks.

> - Kukjin
>

Best regards,
Javier
--
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


Re: [GIT PULL] clk/samsung: clk support for Exynos 5433 SoC

2015-03-02 Thread Chanwoo Choi
Dear Mike,

On 03/03/2015 03:24 AM, Mike Turquette wrote:
> Quoting Chanwoo Choi (2015-02-27 16:52:59)
>> Dear Mike and Sylwester,
>>
>> Gently ping.
> 
> Hello,
> 
> I'll merge this into clk-next towards 4.1 later this week. v3.19 was
> released on February 8, so this merge request came too late for
> inclusion into 4.0.

OK. Thanks for your reply.

Best Regards,
Chanwoo Choi

> 
>>
>> Best Regards,
>> Chanwoo Choi
>>
>> On Tue, Feb 24, 2015 at 8:48 AM, Chanwoo Choi  wrote:
>>> Dear Mike and Sylwester,
>>>
>>> This pull-request was not merged on Linux 4.0-rc1.
>>> Did you have any plan about it?
>>>
>>> Best Regards,
>>> Chanwoo Choi
>>>
>>> On 02/06/2015 04:44 AM, Sylwester Nawrocki wrote:
 Hi Mike,

 This pull request includes driver for clock controller of the Exynos
 5433 SoC.  As the hardware is quite complex, with many peripherals and
 corresponding clock management units the driver is rather huge.  I guess
 it will require a bit more cleanups than last time to balance lines
 introduced in this patch set... Please review and pull if it looks OK.

 The following changes since commit 
 e64fb42da4c6c713cfc7cad607e97e0773fa41ff:

   clk: samsung: exynos4: Add divider clock id for memory bus frequency
 (2015-01-28 15:51:17 +0100)

 are available in the git repository at:

   git://linuxtv.org/snawrocki/samsung.git tags/v3.20-exynos5433-clk

 for you to fetch changes up to b2f0e5f28e0686c0d5db238357a2e32555e97633:

   clk: samsung: exynos5433: Move CLK_SCLK_HDMI_SPDIF_DISP clock to CMU_TOP
 domain (2015-02-05 19:31:09 +0100)

 
 Clock controller driver for Exynos 5433 SoC.

 
 Chanwoo Choi (22):
   clk: samsung: exynos5433: Add binding document for Exynos5433 clock 
 domains
   clk: samsung: exynos5433: Add clocks using common clock framework
   clk: samsung: exynos5433: Add MUX clocks of CMU_TOP domain
   clk: samsung: exynos5433: Add clocks for CMU_PERIC domain
   clk: samsung: exynos5433: Add clocks for CMU_PERIS domain
   clk: samsung: exynos5433: Add clocks for CMU_G2D domain
   clk: samsung: exynos5433: Add clocks for CMU_MIF domain
   clk: samsung: exynos5433: Add clocks for CMU_DISP domain
   clk: samsung: exynos5433: Add clocks for CMU_AUD domain
   clk: samsung: exynos5433: Add clocks for CMU_BUS{0|1|2} domains
   clk: samsung: exynos5433: Add missing clocks for CMU_FSYS domain
   clk: samsung: exynos5433: Add clocks for CMU_G3D domain
   clk: samsung: exynos5433: Add clocks for CMU_GSCL domain
   clk: samsung: exynos5433: Add clocks for CMU_APOLLO domain
   clk: samsung: exynos5433: Add clocks for CMU_ATLAS domain
   clk: samsung: exynos5433: Add clocks for CMU_MSCL domain
   clk: samsung: exynos5433: Add clocks for CMU_MFC domain
   clk: samsung: exynos5433: Add clocks for CMU_HEVC domain
   clk: samsung: exynos5433: Add clocks for CMU_ISP domain
   clk: samsung: exynos5433: Add clocks for CMU_CAM0 domain
   clk: samsung: exynos5433: Add clocks for CMU_CAM1 domain
   clk: samsung: exynos5433: Move CLK_SCLK_HDMI_SPDIF_DISP clock to 
 CMU_TOP domain

 Inha Song (1):
   clk: samsung: Add CLKOUT driver support for Exynos5433 SoC

  .../devicetree/bindings/clock/exynos5433-clock.txt |  462 ++
  drivers/clk/samsung/Makefile   |1 +
  drivers/clk/samsung/clk-exynos-clkout.c|2 +
  drivers/clk/samsung/clk-exynos5433.c   | 5423 
 
  include/dt-bindings/clock/exynos5433.h | 1403 +
  5 files changed, 7291 insertions(+)
  create mode 100644 
 Documentation/devicetree/bindings/clock/exynos5433-clock.txt
  create mode 100644 drivers/clk/samsung/clk-exynos5433.c
  create mode 100644 include/dt-bindings/clock/exynos5433.h

>>>
>>> --
>>> 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
> --
> 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
> 

--
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


Approved!!!..

2015-03-02 Thread nisim knafo


CLAIM.docx
Description: MS-Word document


[PATCH] phy: samsung-usb2: Remove NULL terminating entry from phys array

2015-03-02 Thread Axel Lin
Current code uses num_phys settings to tell the number of entries in phys.
Thus remove the NULL terminating entry from phys array which is not necessary.

Signed-off-by: Axel Lin 
---
 drivers/phy/phy-exynos4210-usb2.c | 1 -
 drivers/phy/phy-exynos4x12-usb2.c | 1 -
 drivers/phy/phy-exynos5250-usb2.c | 1 -
 3 files changed, 3 deletions(-)

diff --git a/drivers/phy/phy-exynos4210-usb2.c 
b/drivers/phy/phy-exynos4210-usb2.c
index 236a52a..f30bbb0 100644
--- a/drivers/phy/phy-exynos4210-usb2.c
+++ b/drivers/phy/phy-exynos4210-usb2.c
@@ -250,7 +250,6 @@ static const struct samsung_usb2_common_phy 
exynos4210_phys[] = {
.power_on   = exynos4210_power_on,
.power_off  = exynos4210_power_off,
},
-   {},
 };
 
 const struct samsung_usb2_phy_config exynos4210_usb2_phy_config = {
diff --git a/drivers/phy/phy-exynos4x12-usb2.c 
b/drivers/phy/phy-exynos4x12-usb2.c
index 0b9de88..765da90 100644
--- a/drivers/phy/phy-exynos4x12-usb2.c
+++ b/drivers/phy/phy-exynos4x12-usb2.c
@@ -361,7 +361,6 @@ static const struct samsung_usb2_common_phy 
exynos4x12_phys[] = {
.power_on   = exynos4x12_power_on,
.power_off  = exynos4x12_power_off,
},
-   {},
 };
 
 const struct samsung_usb2_phy_config exynos3250_usb2_phy_config = {
diff --git a/drivers/phy/phy-exynos5250-usb2.c 
b/drivers/phy/phy-exynos5250-usb2.c
index 1c139aa..2ed1735 100644
--- a/drivers/phy/phy-exynos5250-usb2.c
+++ b/drivers/phy/phy-exynos5250-usb2.c
@@ -391,7 +391,6 @@ static const struct samsung_usb2_common_phy 
exynos5250_phys[] = {
.power_on   = exynos5250_power_on,
.power_off  = exynos5250_power_off,
},
-   {},
 };
 
 const struct samsung_usb2_phy_config exynos5250_usb2_phy_config = {
-- 
1.9.1



--
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


[PATCH 9/9] ARM: EXYNOS: make exynos 4210 cpuidle build without SMP

2015-03-02 Thread Arnd Bergmann
arch/arm/mach-exynos/pm.c: In function 'exynos_cpu0_enter_aftr':
arch/arm/mach-exynos/pm.c:246:4: error: implicit declaration of function 
'arch_send_wakeup_ipi_mask' [-Werror=implicit-function-declaration]
arch_send_wakeup_ipi_mask(cpumask_of(1));

Signed-off-by: Arnd Bergmann 
---
 arch/arm/mach-exynos/pm.c | 19 +++
 1 file changed, 15 insertions(+), 4 deletions(-)

diff --git a/arch/arm/mach-exynos/pm.c b/arch/arm/mach-exynos/pm.c
index e6209dadc00d..a91aefaee31d 100644
--- a/arch/arm/mach-exynos/pm.c
+++ b/arch/arm/mach-exynos/pm.c
@@ -187,6 +187,7 @@ static int exynos_cpu0_enter_aftr(void)
 {
int ret = -1;
 
+#ifdef CONFIG_SMP
/*
 * If the other cpu is powered on, we have to power it off, because
 * the AFTR state won't work otherwise
@@ -216,10 +217,12 @@ static int exynos_cpu0_enter_aftr(void)
cpu_relax();
}
}
+#endif
 
exynos_enter_aftr();
ret = 0;
 
+#ifdef CONFIG_SMP
 abort:
if (cpu_online(1)) {
/*
@@ -246,11 +249,12 @@ abort:
arch_send_wakeup_ipi_mask(cpumask_of(1));
}
}
+#endif
 
return ret;
 }
 
-static int exynos_wfi_finisher(unsigned long flags)
+static int __maybe_unused exynos_wfi_finisher(unsigned long flags)
 {
cpu_do_idle();
 
@@ -260,7 +264,7 @@ static int exynos_wfi_finisher(unsigned long flags)
 static int exynos_cpu1_powerdown(void)
 {
int ret = -1;
-
+#ifdef CONFIG_SMP
/*
 * Idle sequence for cpu1
 */
@@ -282,13 +286,20 @@ cpu1_aborted:
 * Notify cpu 0 that cpu 1 is awake
 */
atomic_set(&cpu1_wakeup, 1);
-
+#endif
return ret;
 }
 
 static void exynos_pre_enter_aftr(void)
 {
-   __raw_writel(virt_to_phys(exynos_cpu_resume), cpu_boot_reg_base());
+   void *reg_base;
+
+   if (soc_is_exynos4210() && samsung_rev() == EXYNOS4210_REV_1_1)
+   reg_base = pmu_base_addr + S5P_INFORM5;
+   else
+   reg_base = sysram_base_addr;
+
+   __raw_writel(virt_to_phys(exynos_cpu_resume), reg_base);
 }
 
 static void exynos_post_enter_aftr(void)
-- 
2.1.0.rc2


--
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


[PATCH 8/9] ARM: EXYNOS: suspend requires regulator access

2015-03-02 Thread Arnd Bergmann
Building an exynos kernel without regulators but with suspend enabled results
in a link error:

arch/arm/mach-exynos/built-in.o: In function `exynos_suspend_finish':
arch/arm/mach-exynos/suspend.c:532: undefined reference to 
`regulator_suspend_finish'
arch/arm/mach-exynos/built-in.o: In function `exynos_suspend_prepare':
arch/arm/mach-exynos/suspend.c:515: undefined reference to 
`regulator_suspend_prepare'

This adds an appropriate 'select' statement in Kconfig to ensure the symbols
are available.

Signed-off-by: Arnd Bergmann 
---
 arch/arm/mach-exynos/Kconfig | 1 +
 1 file changed, 1 insertion(+)

diff --git a/arch/arm/mach-exynos/Kconfig b/arch/arm/mach-exynos/Kconfig
index 603820e5aba7..f4bd06370ad8 100644
--- a/arch/arm/mach-exynos/Kconfig
+++ b/arch/arm/mach-exynos/Kconfig
@@ -22,6 +22,7 @@ menuconfig ARCH_EXYNOS
select PINCTRL
select PINCTRL_EXYNOS
select PM_GENERIC_DOMAINS if PM
+   select REGULATOR if PM_SLEEP
select S5P_DEV_MFC
select SRAM
select MFD_SYSCON
-- 
2.1.0.rc2


--
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


Re: [PATCH 0/9] ARM: samsung: randconfig build fixes

2015-03-02 Thread Arnd Bergmann
On Tuesday 03 March 2015 04:50:23 Kukjin Kim wrote:
> On 02/18/15 09:21, Kukjin Kim wrote:
> > Arnd Bergmann wrote:
> >>
> >> This is a set of mostly trivial build fixes for bugs I have encountered
> >> in random configurations. I'm sending them separate from the other
> >> platforms since we have a lot of them for the various samsung platforms
> >> here.
> >>
> >> Kukjin, please pick them up into a fixes branch for 3.20 or send
> >> an Ack so we can apply them directly.
> >>
> > Sure, I will create a branch for them in this week. IMO, would be better if 
> > I
> > could make a non-critical fixes branch for v3.20 in Samsung tree for further
> > other Samsung stuff for v3.20 
> > 
> >> Let me know if anything looks wrong with some of the patches.
> > 
> > OK, if anything I'll let you know.
> > 
> > Thanks for your pointing out.
> > Happy new year again! (Actually it's the Lunar New Year holidays now)
> > 
> > - Kukjin
> > 
> >> Arnd Bergmann (9):
> >>   ARM: s3c64xx: add I2C dependencies where needed
> >>   ARM: s3c64xx: fix building without CONFIG_PM_SLEEP
> >>   ARM: s3c64xx: fix __initdata section mismatch
> >>   ARM: s3c24xx: use SAMSUNG_WAKEMASK for s3c2416
> >>   ARM: s3c24xx: fix building without PM_SLEEP
> >>   ARM: s3c24xx: fix header file inclusions
> >>   ARM: s3c24xx: avoid a Kconfig warning
> >>   ARM: EXYNOS: suspend requires regulator access
> >>   ARM: EXYNOS: make exynos 4210 cpuidle build without SMP
> 
> Arnd,
> 
> BTW, I can't see exynos related patches in my mailbox, I don't know the
> reason...can you please re-send it?

Thanks for letting me know. It was a problem on my side with git-send-email
when sending them out. I'll send them using my normal mail client now.

Arnd
--
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


Re: [PATCH 00/10] ARM: s3c64xx multiplatform, help needed

2015-03-02 Thread Arnd Bergmann
On Monday 02 March 2015 13:35:53 Arnd Bergmann wrote:
> Hi everyone,
> 
> I've had these patches in a private git tree for a while, and have
> finally gotten around to clean them up some more for submission.
> Hopefully we can get all of it merged into 4.1.
> 
> I've done this to the best of my knowledge, but some parts are
> a bit tricky, so I expect that there are bugs. The trickiest
> part is the touchscreen driver. I've sent it out for review
> last year already, but I have not found anybody who could test
> it, and it's basically a blind rewrite of an existing driver,
> so it's unlikely that I got it all right.
> 
> The other parts may actually work, but it is possible that
> I made a mistake with the ASoC driver, the sparseirq support
> or something else.
> 
> Does anyone still have access to the hardware? I'm particularly
> interested in seeing this patch set get tested on smartq
> and on smdk6410, which have the majority of the hardware.
> 

I should have mentioned, this series (and the respective bits
for realview, mmp, and orion) is now at
http://git.kernel.org/cgit/linux/kernel/git/arnd/playground.git/log/?h=multiplatform-4.0-rc1

Arnd
--
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


Re: [PATCH 0/9] ARM: samsung: randconfig build fixes

2015-03-02 Thread Kukjin Kim
On 02/18/15 09:21, Kukjin Kim wrote:
> Arnd Bergmann wrote:
>>
>> This is a set of mostly trivial build fixes for bugs I have encountered
>> in random configurations. I'm sending them separate from the other
>> platforms since we have a lot of them for the various samsung platforms
>> here.
>>
>> Kukjin, please pick them up into a fixes branch for 3.20 or send
>> an Ack so we can apply them directly.
>>
> Sure, I will create a branch for them in this week. IMO, would be better if I
> could make a non-critical fixes branch for v3.20 in Samsung tree for further
> other Samsung stuff for v3.20 ;)
> 
>> Let me know if anything looks wrong with some of the patches.
> 
> OK, if anything I'll let you know.
> 
> Thanks for your pointing out.
> Happy new year again! (Actually it's the Lunar New Year holidays now)
> 
> - Kukjin
> 
>> Arnd Bergmann (9):
>>   ARM: s3c64xx: add I2C dependencies where needed
>>   ARM: s3c64xx: fix building without CONFIG_PM_SLEEP
>>   ARM: s3c64xx: fix __initdata section mismatch
>>   ARM: s3c24xx: use SAMSUNG_WAKEMASK for s3c2416
>>   ARM: s3c24xx: fix building without PM_SLEEP
>>   ARM: s3c24xx: fix header file inclusions
>>   ARM: s3c24xx: avoid a Kconfig warning
>>   ARM: EXYNOS: suspend requires regulator access
>>   ARM: EXYNOS: make exynos 4210 cpuidle build without SMP

Arnd,

BTW, I can't see exynos related patches in my mailbox, I don't know the
reason...can you please re-send it?

Thanks,
Kukjin
--
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


Re: [PATCH 1/1] ARM: exynos_defconfig: Disable IOMMU support

2015-03-02 Thread Kukjin Kim
On 02/27/15 15:20, Javier Martinez Canillas wrote:
> Hello Kukjin,
> 
Hi,

> On 02/17/2015 12:38 PM, Javier Martinez Canillas wrote:
>> Enabling Exynos DRM IOMMU support for Exynos is currently broken and
>> causes a BUG on exynos-iommu driver. This was not an issue since the
>> options was disabled in exynos_defconfig but after commit 8dcc14f82f06
>> ("drm/exynos: IOMMU support should not be selectable by user"), it is
>> selected if EXYNOS_IOMMU is enabled which is in exynos_defconfig.
>>
>> So a kernel built using exynos_defconfig after the mentioned commit
>> fails to boot [0]. Disable IOMMU support in Exynos defconfig until
>> things get sorted out.
>>
>> [0]:
>> [1.242183] [ cut here ]
>> [1.246191] kernel BUG at drivers/iommu/exynos-iommu.c:481!
>> [1.251747] Internal error: Oops - BUG: 0 [#1] PREEMPT SMP ARM
>> [1.257561] Modules linked in:
>> [1.260603] CPU: 1 PID: 1 Comm: swapper/0 Not tainted 
>> 3.19.0-07478-g796e1c55717e #490
>> [1.268412] Hardware name: SAMSUNG EXYNOS (Flattened Device Tree)
>> [1.274489] task: ee06c000 ti: ee05a000 task.ti: ee05a000
>> [1.279874] PC is at __exynos_sysmmu_enable+0x184/0x190
>> [1.285080] LR is at exynos_iommu_attach_device+0x44/0xb0
>> [1.290461] pc : []lr : []psr: 6193
>> [1.290461] sp : ee05bcf8  ip :   fp : ed84aa40
>> [1.301916] r10: ed84a890  r9 : a113  r8 : 6db3
>> [1.307125] r7 : ed84aa40  r6 :   r5 :   r4 : ee174e10
>> [1.313635] r3 : 6db3  r2 : ed84aa40  r1 : 6db3  r0 : ee174e10
>> [1.320147] Flags: nZCv  IRQs off  FIQs on  Mode SVC_32  ISA ARM  Segment 
>> kernel
>> [1.327524] Control: 10c5387d  Table: 4000406a  DAC: 0015
>> [1.333252] Process swapper/0 (pid: 1, stack limit = 0xee05a210)
>> [1.339241] Stack: (0xee05bcf8 to 0xee05c000)
>> [1.343581] bce0:   
>> 6db3 ee174e10
>> [1.351741] bd00: ed84a880  ed84aa40 ee174e10 a113 ed84a890 
>>  c0254a64
>> [1.359900] bd20:  6db3 ee174e10 ed84adc0 0005 0034 
>> 0001 c0692c1c
>> [1.368059] bd40: 0097 c02526c8 ee29f050 c0017210 ee29f050 ee174e10 
>> edab6810 c0282558
>> [1.376219] bd60: edab6a10 ee1cb000 0005 c0283520 ee29f240 c028f210 
>> edab6810 ee2ef280
>> [1.384378] bd80: edb24680 ed84a680 ee1cb000 c02883f8 edab6810 ee1cb000 
>> ee1cb000 
>> [1.392537] bda0: ed84a680 ee2ef450  c027e968 ee1cb000  
>>  c0268fd4
>> [1.400696] bdc0: edab6800 c06b0de4 ee1cb000 c026a8bc ee2ef0c0 c028f210 
>> 0002 ee2ef460
>> [1.408855] bde0: ee2ef460 0002 ee2ef280 c0288728 c04af5d0 edab6810 
>> ee2ef280 
>> [1.417014] be00: c06b1348 c0288918 c06b0f00 c06b0f00 edab6810 0001 
>> c06b0da0 c027eaf4
>> [1.425173] be20: c070334c edaee190  edab6810 ffed c06b0da0 
>>  c028da1c
>> [1.42] be40: edab6810 c070334c  c028c5f8 edab6810 c06b0da0 
>> edab6844 
>> [1.441492] be60: eda3c740 c028c7a4 c06b0da0  c028c718 c028af74 
>> ee005274 ee3b7b40
>> [1.449652] be80: c06b0da0 ee3b7680 c06b1540 c028bde4 c05b6990 c06b0da0 
>> c0703324 c06b0da0
>> [1.457811] bea0: c0703324  c069ab18 c028cdc4   
>> c0703324 c027ebd8
>> [1.465970] bec0:  c05b6990     
>>  c00c4574
>> [1.474129] bee0:   c069ab18 c027eb1c  c069ab18 
>> c069ab18 c0008944
>> [1.482288] bf00: 0036 c04770e8 ee049800 c06eace0 ee06c000 6113 
>> c069eab0 
>> [1.490447] bf20:  c069eab0 6113  ef7fcabc ef7fcaae 
>> c061c594 c0038640
>> [1.498607] bf40: c05cb1d0 c061bc24 0006 0006 c069ea50 c06724d4 
>> 0006 c06724b4
>> [1.506766] bf60: c06c7600 c0647588 c0692c1c 0097  c0647d40 
>> 0006 0006
>> [1.514925] bf80: c0647588 c003d2d8  c046921c   
>>  
>> [1.523084] bfa0:  c0469224  c000e680   
>>  
>> [1.531243] bfc0:       
>>  
>> [1.539402] bfe0:     0013  
>>  
>> [1.547567] [] (__exynos_sysmmu_enable) from [] 
>> (exynos_iommu_attach_device+0x44/0xb0)
>> [1.557199] [] (exynos_iommu_attach_device) from [] 
>> (iommu_attach_device+0x18/0x24)
>> [1.566576] [] (iommu_attach_device) from [] 
>> (arm_iommu_attach_device+0x18/0x50)
>> [1.575690] [] (arm_iommu_attach_device) from [] 
>> (drm_iommu_attach_device+0x50/0xb4)
>> [1.585150] [] (drm_iommu_attach_device) from [] 
>> (fimd_bind+0x94/0x1b8)
>> [1.593483] [] (fimd_bind) from [] 
>> (component_bind_all+0xb4/0x214)
>> [1.601380] [] (component_bind_all) from [] 
>> (exynos_drm_load+0x9c/0x13c)
>> [   

Re: [PATCH] ARM: fix exynos randconfig build error

2015-03-02 Thread Kukjin Kim
On 02/27/15 06:30, Kukjin Kim wrote:
> On 02/25/15 20:46, Krzysztof Kozlowski wrote:
>> 2015-02-25 12:26 GMT+01:00 Russell King :
>>> The following error was observed with SMP=n in v4.0-rc1:
>>>
>>> arch/arm/mach-exynos/pm.c: In function 'exynos_cpu0_enter_aftr':
>>> arch/arm/mach-exynos/pm.c:246:4: error: implicit declaration of function 
>>> 'arch_send_wakeup_ipi_mask' [-Werror=implicit-function-declaration]
>>>
>>> As the code unconditionally calls a function only available with SMP=y,
>>> make the Exynos PM support depend on SMP.
>>>
>>> Signed-off-by: Russell King 
>>
>> Hi,
>>
>> Thanks for the patch but this already waits for Kukjin top be picked
>> up. The first patch was similar to yours (adds dependency on SMP),
>> sent on 4th of February:
>> https://patchwork.ozlabs.org/patch/436231/
>>
>> But later Bartlomiej fixed this in other way (allowing to use cpuidle
>> on non-SMP):
>> https://patchwork.ozlabs.org/patch/436445/
>>
>> Unfortunately none of them were picked up.
>>
> I've missed the fix, sorry.
> 
> BTW, as you know, all of exynos SoCs are based on SMP so generally (in
> normal case) there is no reason to use non-SMP on exynos
> platforms...even though I understand the build error should be fixed...
> 
> Anyway, I'll have a look Bart's patch and Russell's fix in this weekend.
> 

Firstly, let me take rmk's patch for the randconfig build error...BTW
I'm still wondering exynos stuff needs to support non-SMP and need to
think more about its usefulness?...

- Kukjin
--
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


Re: [PATCH 00/10] ARM: s3c64xx multiplatform, help needed

2015-03-02 Thread Kukjin Kim
On 03/03/15 01:53, Tomasz Figa wrote:
> Hi Arnd,
> 
Hi,

> Thanks a lot for these patches.
> 
> 2015-03-02 21:35 GMT+09:00 Arnd Bergmann :
>> Hi everyone,
>>
>> I've had these patches in a private git tree for a while, and have
>> finally gotten around to clean them up some more for submission.
>> Hopefully we can get all of it merged into 4.1.
>>
Sure,

>> I've done this to the best of my knowledge, but some parts are
>> a bit tricky, so I expect that there are bugs. The trickiest
>> part is the touchscreen driver. I've sent it out for review
>> last year already, but I have not found anybody who could test
>> it, and it's basically a blind rewrite of an existing driver,
>> so it's unlikely that I got it all right.
>>
>> The other parts may actually work, but it is possible that
>> I made a mistake with the ASoC driver, the sparseirq support
>> or something else.
>>
>> Does anyone still have access to the hardware? I'm particularly
>> interested in seeing this patch set get tested on smartq
>> and on smdk6410, which have the majority of the hardware.
> 
> I still have a tiny6410, which is compatible with mini6410, so I can
> test both DT and non-DT code paths. It also has a touchscreen using
> the on-SoC ADC. I'll give it a try this weekend. I'll try to review
> the series as well.
> 
I also have smdk6410 board on my desk and maybe I can test this series
in the weekend. If anything I'll let you know.

Thanks,
Kukjin
--
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


[GIT PULL 2/2] Samsung fixes-2 for v4.0

2015-03-02 Thread Kukjin Kim
Hi,

Please pull Samsung tmu and hdmi regression fixes for v4.0 and I know
this is quite big for fixes but I couldn't handle this series for
previous merge window because of dependency with driver side...sorry for
that and please pull so that we could support them in v4.0 on exynos
platforms.

Thanks,
Kukjin

The following changes since commit c517d838eb7d07bbe9507871fab3931deccff539:

  Linux 4.0-rc1 (2015-02-22 18:21:14 -0800)

are available in the git repository at:

  git://git.kernel.org/pub/scm/linux/kernel/git/kgene/linux-samsung.git
tags/samsung-fixes-dt

for you to fetch changes up to 2d2c9a8d0a4f90e298315d2f4a282d8bd5d45e5c:

  ARM: dts: add display power domain for exynos5250 (2015-02-27 05:29:32
+0900)


Samsung tmu and hdmi regression fixes for v4.0

- The thermal management unit and HDMI (drm mixer driver) related
reworks have been merged in v4.0 merge window. So if this DT changes
are missed for v4.0, we regressions in v4.0 release for exynos
platforms such as exynos5250, exynos5420, exynos4 SoCs.

- Note since there was a dependency with driver side, this cannot
be sent to upstream during preivous merge window and now it has been
resolved.


Andrzej Hajda (1):
  ARM: dts: add display power domain for exynos5250

Lukasz Majewski (9):
  ARM: dts: Enable TMU for exynos4210-trats
  ARM: dts: Add LDO10 for TMU for exynos4412-odroid-common
  ARM: dts: Enable TMU for exynos4412-odriod-common
  ARM: dts: Adding CPU cooling binding for Exynos SoCs
  ARM: dts: add TMU default definitions for exynos4412
  ARM: dts: default trip points definition for exynos5420
  ARM: dts: define default thermal-zones for exynos4
  ARM: dts: Trip points and sensor configuration data for exynos5440
  ARM: dts: Provide dt bindings identical for Exynos TMU

Marek Szyprowski (6):
  dt-bindings: document a note about power domain subdomains
  ARM: EXYNOS: add support for sub-power domains
  ARM: dts: add hdmi related nodes for exynos4 SoCs
  ARM: dts: add dependency between TV and LCD0 power domains for exynos4
  ARM: dts: enable hdmi support for exynos4412-odroid-common
  ARM: dts: add 'hdmi' clock to mixer nodes for exynos5250 and
exynos5420

Tomasz Stanislawski (1):
  ARM: dts: enable hdmi support for exynos4210-universal_c210

 .../bindings/arm/exynos/power_domain.txt   |  2 +
 .../devicetree/bindings/power/power_domain.txt | 29 ++
 arch/arm/boot/dts/exynos3250.dtsi  |  2 +
 arch/arm/boot/dts/exynos4-cpu-thermal.dtsi | 52 ++
 arch/arm/boot/dts/exynos4.dtsi | 45 +++
 arch/arm/boot/dts/exynos4210-trats.dts | 19 +++
 arch/arm/boot/dts/exynos4210-universal_c210.dts| 57 +++
 arch/arm/boot/dts/exynos4210.dtsi  | 38 -
 arch/arm/boot/dts/exynos4212.dtsi  |  5 +-
 arch/arm/boot/dts/exynos4412-odroid-common.dtsi| 64
++
 arch/arm/boot/dts/exynos4412-tmu-sensor-conf.dtsi  | 24 
 arch/arm/boot/dts/exynos4412-trats2.dts| 15 +
 arch/arm/boot/dts/exynos4412.dtsi  |  5 +-
 arch/arm/boot/dts/exynos4x12.dtsi  | 12 
 arch/arm/boot/dts/exynos5250.dtsi  | 44 +--
 arch/arm/boot/dts/exynos5420-trip-points.dtsi  | 35 
 arch/arm/boot/dts/exynos5420.dtsi  | 33 ++-
 arch/arm/boot/dts/exynos5440-tmu-sensor-conf.dtsi  | 24 
 arch/arm/boot/dts/exynos5440-trip-points.dtsi  | 25 +
 arch/arm/boot/dts/exynos5440.dtsi  | 18 ++
 arch/arm/mach-exynos/pm_domains.c  | 28 ++
 21 files changed, 565 insertions(+), 11 deletions(-)
 create mode 100644 arch/arm/boot/dts/exynos4-cpu-thermal.dtsi
 create mode 100644 arch/arm/boot/dts/exynos4412-tmu-sensor-conf.dtsi
 create mode 100644 arch/arm/boot/dts/exynos5420-trip-points.dtsi
 create mode 100644 arch/arm/boot/dts/exynos5440-tmu-sensor-conf.dtsi
 create mode 100644 arch/arm/boot/dts/exynos5440-trip-points.dtsi
--
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


[GIT PULL 1/2] Samsung fixes-1 for v4.0

2015-03-02 Thread Kukjin Kim
The following changes since commit c517d838eb7d07bbe9507871fab3931deccff539:

  Linux 4.0-rc1 (2015-02-22 18:21:14 -0800)

are available in the git repository at:

  git://git.kernel.org/pub/scm/linux/kernel/git/kgene/linux-samsung.git
tags/samsung-fixes-1

for you to fetch changes up to 8a68de64e984cfc49ecc22ac18155a7fe6dbbfaf:

  ARM: EXYNOS: fix exynos randconfig build error (2015-03-03 03:37:57 +0900)


Samsung fixes for v4.0

- fix exynos randconfig build error with SMP=n
- fix wrong hwirq of RTC interrupt for exynos3250
- fix usage of LDREX and STREX after disabling cache coherency


Chanwoo Choi (1):
  ARM: EXYNOS: Fix wrong hwirq of RTC interrupt for Exynos3250 SoC

Krzysztof Kozlowski (1):
  ARM: EXYNOS: Don't use LDREX and STREX after disabling cache coherency

Russell King (1):
  ARM: EXYNOS: fix exynos randconfig build error

 arch/arm/mach-exynos/Kconfig   | 1 +
 arch/arm/mach-exynos/platsmp.c | 3 +--
 arch/arm/mach-exynos/suspend.c | 4 ++--
 3 files changed, 4 insertions(+), 4 deletions(-)
--
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


Re: [GIT PULL] clk/samsung: clk support for Exynos 5433 SoC

2015-03-02 Thread Mike Turquette
Quoting Chanwoo Choi (2015-02-27 16:52:59)
> Dear Mike and Sylwester,
> 
> Gently ping.

Hello,

I'll merge this into clk-next towards 4.1 later this week. v3.19 was
released on February 8, so this merge request came too late for
inclusion into 4.0.

Regards,
Mike

> 
> Best Regards,
> Chanwoo Choi
> 
> On Tue, Feb 24, 2015 at 8:48 AM, Chanwoo Choi  wrote:
> > Dear Mike and Sylwester,
> >
> > This pull-request was not merged on Linux 4.0-rc1.
> > Did you have any plan about it?
> >
> > Best Regards,
> > Chanwoo Choi
> >
> > On 02/06/2015 04:44 AM, Sylwester Nawrocki wrote:
> >> Hi Mike,
> >>
> >> This pull request includes driver for clock controller of the Exynos
> >> 5433 SoC.  As the hardware is quite complex, with many peripherals and
> >> corresponding clock management units the driver is rather huge.  I guess
> >> it will require a bit more cleanups than last time to balance lines
> >> introduced in this patch set... Please review and pull if it looks OK.
> >>
> >> The following changes since commit 
> >> e64fb42da4c6c713cfc7cad607e97e0773fa41ff:
> >>
> >>   clk: samsung: exynos4: Add divider clock id for memory bus frequency
> >> (2015-01-28 15:51:17 +0100)
> >>
> >> are available in the git repository at:
> >>
> >>   git://linuxtv.org/snawrocki/samsung.git tags/v3.20-exynos5433-clk
> >>
> >> for you to fetch changes up to b2f0e5f28e0686c0d5db238357a2e32555e97633:
> >>
> >>   clk: samsung: exynos5433: Move CLK_SCLK_HDMI_SPDIF_DISP clock to CMU_TOP
> >> domain (2015-02-05 19:31:09 +0100)
> >>
> >> 
> >> Clock controller driver for Exynos 5433 SoC.
> >>
> >> 
> >> Chanwoo Choi (22):
> >>   clk: samsung: exynos5433: Add binding document for Exynos5433 clock 
> >> domains
> >>   clk: samsung: exynos5433: Add clocks using common clock framework
> >>   clk: samsung: exynos5433: Add MUX clocks of CMU_TOP domain
> >>   clk: samsung: exynos5433: Add clocks for CMU_PERIC domain
> >>   clk: samsung: exynos5433: Add clocks for CMU_PERIS domain
> >>   clk: samsung: exynos5433: Add clocks for CMU_G2D domain
> >>   clk: samsung: exynos5433: Add clocks for CMU_MIF domain
> >>   clk: samsung: exynos5433: Add clocks for CMU_DISP domain
> >>   clk: samsung: exynos5433: Add clocks for CMU_AUD domain
> >>   clk: samsung: exynos5433: Add clocks for CMU_BUS{0|1|2} domains
> >>   clk: samsung: exynos5433: Add missing clocks for CMU_FSYS domain
> >>   clk: samsung: exynos5433: Add clocks for CMU_G3D domain
> >>   clk: samsung: exynos5433: Add clocks for CMU_GSCL domain
> >>   clk: samsung: exynos5433: Add clocks for CMU_APOLLO domain
> >>   clk: samsung: exynos5433: Add clocks for CMU_ATLAS domain
> >>   clk: samsung: exynos5433: Add clocks for CMU_MSCL domain
> >>   clk: samsung: exynos5433: Add clocks for CMU_MFC domain
> >>   clk: samsung: exynos5433: Add clocks for CMU_HEVC domain
> >>   clk: samsung: exynos5433: Add clocks for CMU_ISP domain
> >>   clk: samsung: exynos5433: Add clocks for CMU_CAM0 domain
> >>   clk: samsung: exynos5433: Add clocks for CMU_CAM1 domain
> >>   clk: samsung: exynos5433: Move CLK_SCLK_HDMI_SPDIF_DISP clock to 
> >> CMU_TOP domain
> >>
> >> Inha Song (1):
> >>   clk: samsung: Add CLKOUT driver support for Exynos5433 SoC
> >>
> >>  .../devicetree/bindings/clock/exynos5433-clock.txt |  462 ++
> >>  drivers/clk/samsung/Makefile   |1 +
> >>  drivers/clk/samsung/clk-exynos-clkout.c|2 +
> >>  drivers/clk/samsung/clk-exynos5433.c   | 5423 
> >> 
> >>  include/dt-bindings/clock/exynos5433.h | 1403 +
> >>  5 files changed, 7291 insertions(+)
> >>  create mode 100644 
> >> Documentation/devicetree/bindings/clock/exynos5433-clock.txt
> >>  create mode 100644 drivers/clk/samsung/clk-exynos5433.c
> >>  create mode 100644 include/dt-bindings/clock/exynos5433.h
> >>
> >
> > --
> > 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
--
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


Re: [PATCH 00/10] ARM: s3c64xx multiplatform, help needed

2015-03-02 Thread Vasily Khoruzhick
On Mon, Mar 2, 2015 at 8:37 PM, Dmitry Torokhov
 wrote:

> I think Vasily had access to hardware with s3c2410_ts at some point...

Hi,

Yep, I have s3c24xx hardware to test rewritten s3c2410_ts driver. Will
try it this weekend.

Regards,
Vasily
--
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


Re: [PATCH 00/10] ARM: s3c64xx multiplatform, help needed

2015-03-02 Thread Charles Keepax
On Mon, Mar 02, 2015 at 04:17:12PM +, Mark Brown wrote:
> On Mon, Mar 02, 2015 at 01:35:53PM +0100, Arnd Bergmann wrote:
> 
> > Does anyone still have access to the hardware? I'm particularly
> > interested in seeing this patch set get tested on smartq
> > and on smdk6410, which have the majority of the hardware.
> 
> I and a bunch of other people still have Cragganmore, the ex-Wolfson
> (added Charles here) people may also be able to locate a smdk6410.
> may also be a

Certainly we have Cragganmores here, I think I have seen an
smdk6410 kicking about the office unloved somewhere. I will have
a look to see if I can unearth it somewhere.

Thanks,
Charles
--
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


Re: [PATCH 00/10] ARM: s3c64xx multiplatform, help needed

2015-03-02 Thread Dmitry Torokhov
On Mon, Mar 02, 2015 at 01:35:53PM +0100, Arnd Bergmann wrote:
> Hi everyone,
> 
> I've had these patches in a private git tree for a while, and have
> finally gotten around to clean them up some more for submission.
> Hopefully we can get all of it merged into 4.1.
> 
> I've done this to the best of my knowledge, but some parts are
> a bit tricky, so I expect that there are bugs. The trickiest
> part is the touchscreen driver. I've sent it out for review
> last year already, but I have not found anybody who could test
> it, and it's basically a blind rewrite of an existing driver,
> so it's unlikely that I got it all right.

I think Vasily had access to hardware with s3c2410_ts at some point...

> 
> The other parts may actually work, but it is possible that
> I made a mistake with the ASoC driver, the sparseirq support
> or something else.
> 
> Does anyone still have access to the hardware? I'm particularly
> interested in seeing this patch set get tested on smartq
> and on smdk6410, which have the majority of the hardware.

Thanks.

-- 
Dmitry
--
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


Re: [PATCH 00/10] ARM: s3c64xx multiplatform, help needed

2015-03-02 Thread Tomasz Figa
Hi Arnd,

Thanks a lot for these patches.

2015-03-02 21:35 GMT+09:00 Arnd Bergmann :
> Hi everyone,
>
> I've had these patches in a private git tree for a while, and have
> finally gotten around to clean them up some more for submission.
> Hopefully we can get all of it merged into 4.1.
>
> I've done this to the best of my knowledge, but some parts are
> a bit tricky, so I expect that there are bugs. The trickiest
> part is the touchscreen driver. I've sent it out for review
> last year already, but I have not found anybody who could test
> it, and it's basically a blind rewrite of an existing driver,
> so it's unlikely that I got it all right.
>
> The other parts may actually work, but it is possible that
> I made a mistake with the ASoC driver, the sparseirq support
> or something else.
>
> Does anyone still have access to the hardware? I'm particularly
> interested in seeing this patch set get tested on smartq
> and on smdk6410, which have the majority of the hardware.

I still have a tiny6410, which is compatible with mini6410, so I can
test both DT and non-DT code paths. It also has a touchscreen using
the on-SoC ADC. I'll give it a try this weekend. I'll try to review
the series as well.

Best regards,
Tomasz
--
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


Re: [PATCH 00/10] ARM: s3c64xx multiplatform, help needed

2015-03-02 Thread Mark Brown
On Mon, Mar 02, 2015 at 01:35:53PM +0100, Arnd Bergmann wrote:

> Does anyone still have access to the hardware? I'm particularly
> interested in seeing this patch set get tested on smartq
> and on smdk6410, which have the majority of the hardware.

I and a bunch of other people still have Cragganmore, the ex-Wolfson
(added Charles here) people may also be able to locate a smdk6410.
may also be a


signature.asc
Description: Digital signature


[PATCH 0/2] Support for CMU_ISP clock domain on Exynos3250

2015-03-02 Thread Beata Michalska

Hi All,

This simple patchset adds support for CMU_ISP clock domain
on Exynos3250.

Best Regards
Beata Michalska

---

Beata Michalska (1):
  ARM: dts: exynos3250: Add assigned clock parents to CMU node

Tomasz Figa (1):
  clk: samsung: exynos3250: Add driver for CMU_ISP clock domain

 .../devicetree/bindings/clock/exynos3250-clock.txt |8 +
 arch/arm/boot/dts/exynos3250.dtsi  |4 +
 drivers/clk/samsung/clk-exynos3250.c   |  163 
 include/dt-bindings/clock/exynos3250.h |   61 
 4 files changed, 236 insertions(+)

-- 
1.7.9.5

--
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


[PATCH 2/2] ARM: dts: exynos3250: Add assigned clock parents to CMU node

2015-03-02 Thread Beata Michalska
Use assigned-clocks/assigned-clock-parents properties for
CMU clock controller DT node to secure proper clock setup:
switching the two muxes to root oscillator clock is not only
required for proper powering down the ISP power domain,
but it also reduces the risk of accessing the ISP CMU
registers while the ISP power domain remains turned off
(i.e. through the common clock framework by clk_summary)

Signed-off-by: Beata Michalska 
Acked-by: Kyungmin Park 
---
 arch/arm/boot/dts/exynos3250.dtsi |4 
 1 file changed, 4 insertions(+)

diff --git a/arch/arm/boot/dts/exynos3250.dtsi 
b/arch/arm/boot/dts/exynos3250.dtsi
index 277b48b..6d6118e 100644
--- a/arch/arm/boot/dts/exynos3250.dtsi
+++ b/arch/arm/boot/dts/exynos3250.dtsi
@@ -172,6 +172,10 @@
compatible = "samsung,exynos3250-cmu";
reg = <0x1003 0x2>;
#clock-cells = <1>;
+   assigned-clocks = <&cmu CLK_MOUT_ACLK_400_MCUISP_SUB>,
+ <&cmu CLK_MOUT_ACLK_266_SUB>;
+   assigned-clock-parents = <&cmu CLK_FIN_PLL>,
+<&cmu CLK_FIN_PLL>;
};
 
cmu_dmc: clock-controller@105C {
-- 
1.7.9.5

--
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


[PATCH 1/2] clk: samsung: exynos3250: Add driver for CMU_ISP clock domain

2015-03-02 Thread Beata Michalska
From: Tomasz Figa 

Add clock controller for CMU ISP clock domain on Exynos3250,
providing clocks for FIMC-IS subsystem.

[b.michalska:use samsung_cmu_register_one to register
 the provider; updated DT binding documentation]

Signed-off-by: Tomasz Figa 
Signed-off-by: Sylwester Nawrocki 
Signed-off-by: Chanwoo Choi 
Signed-off-by: Beata Michalska 
Acked-by: Kyungmin Park 
---
 .../devicetree/bindings/clock/exynos3250-clock.txt |8 +
 drivers/clk/samsung/clk-exynos3250.c   |  163 
 include/dt-bindings/clock/exynos3250.h |   61 
 3 files changed, 232 insertions(+)

diff --git a/Documentation/devicetree/bindings/clock/exynos3250-clock.txt 
b/Documentation/devicetree/bindings/clock/exynos3250-clock.txt
index f57d9dd..f1738b8 100644
--- a/Documentation/devicetree/bindings/clock/exynos3250-clock.txt
+++ b/Documentation/devicetree/bindings/clock/exynos3250-clock.txt
@@ -9,6 +9,8 @@ Required Properties:
   - "samsung,exynos3250-cmu" - controller compatible with Exynos3250 SoC.
   - "samsung,exynos3250-cmu-dmc" - controller compatible with
 Exynos3250 SoC for Dynamic Memory Controller domain.
+  - "samsung,exynos3250-cmu-isp" - ISP block clock controller compatible
+ with Exynos3250 SOC
 
 - reg: physical base address of the controller and length of memory mapped
   region.
@@ -36,6 +38,12 @@ Example 1: Examples of clock controller nodes are listed 
below.
#clock-cells = <1>;
};
 
+   cmu_isp: clock-controller@10048000 {
+   compatible = "samsung,exynos3250-cmu-isp";
+   reg = <0x10048000 0x1000>;
+   #clock-cells = <1>;
+   };
+
 Example 2: UART controller node that consumes the clock generated by the clock
   controller. Refer to the standard clock bindings for information
   about 'clocks' and 'clock-names' property.
diff --git a/drivers/clk/samsung/clk-exynos3250.c 
b/drivers/clk/samsung/clk-exynos3250.c
index cc4c348..e5dc48c 100644
--- a/drivers/clk/samsung/clk-exynos3250.c
+++ b/drivers/clk/samsung/clk-exynos3250.c
@@ -894,3 +894,166 @@ static void __init exynos3250_cmu_dmc_init(struct 
device_node *np)
 }
 CLK_OF_DECLARE(exynos3250_cmu_dmc, "samsung,exynos3250-cmu-dmc",
exynos3250_cmu_dmc_init);
+
+
+/*
+ * CMU ISP
+ */
+
+#define DIV_ISP0   0x300
+#define DIV_ISP1   0x304
+#define GATE_IP_ISP0   0x800
+#define GATE_IP_ISP1   0x804
+#define GATE_SCLK_ISP  0x900
+
+static struct samsung_div_clock isp_div_clks[] __initdata = {
+   /*
+* NOTE: Following table is sorted by register address in ascending
+* order and then bitfield shift in descending order, as it is done
+* in the User's Manual. When adding new entries, please make sure
+* that the order is preserved, to avoid merge conflicts and make
+* further work with defined data easier.
+*/
+   /* DIV_ISP0 */
+   DIV(CLK_DIV_ISP1, "div_isp1", "mout_aclk_266_sub", DIV_ISP0, 4, 3),
+   DIV(CLK_DIV_ISP0, "div_isp0", "mout_aclk_266_sub", DIV_ISP0, 0, 3),
+
+   /* DIV_ISP1 */
+   DIV(CLK_DIV_MCUISP1, "div_mcuisp1", "mout_aclk_400_mcuisp_sub",
+   DIV_ISP1, 8, 3),
+   DIV(CLK_DIV_MCUISP0, "div_mcuisp0", "mout_aclk_400_mcuisp_sub",
+   DIV_ISP1, 4, 3),
+   DIV(CLK_DIV_MPWM, "div_mpwm", "div_isp1", DIV_ISP1, 0, 3),
+};
+
+static struct samsung_gate_clock isp_gate_clks[] __initdata = {
+   /*
+* NOTE: Following table is sorted by register address in ascending
+* order and then bitfield shift in descending order, as it is done
+* in the User's Manual. When adding new entries, please make sure
+* that the order is preserved, to avoid merge conflicts and make
+* further work with defined data easier.
+*/
+
+   /* GATE_IP_ISP0 */
+   GATE(CLK_UART_ISP, "uart_isp", "uart_isp_top",
+   GATE_IP_ISP0, 31, CLK_IGNORE_UNUSED, 0),
+   GATE(CLK_WDT_ISP, "wdt_isp", "mout_aclk_266_sub",
+   GATE_IP_ISP0, 30, CLK_IGNORE_UNUSED, 0),
+   GATE(CLK_PWM_ISP, "pwm_isp", "mout_aclk_266_sub",
+   GATE_IP_ISP0, 28, CLK_IGNORE_UNUSED, 0),
+   GATE(CLK_I2C1_ISP, "i2c1_isp", "mout_aclk_266_sub",
+   GATE_IP_ISP0, 26, CLK_IGNORE_UNUSED, 0),
+   GATE(CLK_I2C0_ISP, "i2c0_isp", "mout_aclk_266_sub",
+   GATE_IP_ISP0, 25, CLK_IGNORE_UNUSED, 0),
+   GATE(CLK_MPWM_ISP, "mpwm_isp", "mout_aclk_266_sub",
+   GATE_IP_ISP0, 24, CLK_IGNORE_UNUSED, 0),
+   GATE(CLK_MCUCTL_ISP, "mcuctl_isp", "mout_aclk_266_sub",
+   GATE_IP_ISP0, 23, CLK_IGNORE_UNUSED, 0),
+   GATE(CLK_PPMUISPX, "ppmuispx", "mout_aclk_266_sub",
+   GATE_IP_ISP0, 21, CLK_IGNORE_UNUSED, 0),
+   GATE(CLK_PPMUISPMX, "ppmuispmx", "mout_aclk_266_sub",
+   GATE_IP_ISP0, 20, CLK_IGNORE_UNUSED, 0),
+   GATE(CLK_QE_LITE1, "qe_lite1", "mout_ac

[PATCH 05/10] ARM: s3c64xx: enable sparse IRQ support

2015-03-02 Thread Arnd Bergmann
This is another prerequisite for enabling multiplatform
support, and it is the part I am least certain about.

I assume it will cause the extra boot message "Cannot
allocate irq_descs @ IRQ%d, assuming pre-allocated" to
be printed, but otherwise work ok. This definitely needs
to be tested on real hardware to see if it works.

Signed-off-by: Arnd Bergmann 
---
 arch/arm/Kconfig |  1 +
 arch/arm/mach-s3c64xx/common.c   |  1 +
 arch/arm/mach-s3c64xx/dev-uart.c |  1 +
 arch/arm/mach-s3c64xx/include/mach/irqs.h| 20 +++-
 arch/arm/mach-s3c64xx/include/mach/pm-core.h |  1 +
 arch/arm/mach-s3c64xx/mach-anw6410.c |  3 ++-
 arch/arm/mach-s3c64xx/mach-crag6410-module.c |  2 ++
 arch/arm/mach-s3c64xx/mach-crag6410.c|  2 ++
 arch/arm/mach-s3c64xx/mach-hmt.c |  2 ++
 arch/arm/mach-s3c64xx/mach-mini6410.c|  2 ++
 arch/arm/mach-s3c64xx/mach-ncp.c |  2 ++
 arch/arm/mach-s3c64xx/mach-real6410.c|  3 ++-
 arch/arm/mach-s3c64xx/mach-smartq5.c |  2 ++
 arch/arm/mach-s3c64xx/mach-smartq7.c |  2 ++
 arch/arm/mach-s3c64xx/mach-smdk6400.c|  3 ++-
 arch/arm/mach-s3c64xx/mach-smdk6410.c|  3 ++-
 arch/arm/plat-samsung/gpio-samsung.c |  1 +
 17 files changed, 30 insertions(+), 21 deletions(-)

diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
index 98f113833465..a6f71e402b38 100644
--- a/arch/arm/Kconfig
+++ b/arch/arm/Kconfig
@@ -709,6 +709,7 @@ config ARCH_S3C64XX
select SAMSUNG_ATAGS
select SAMSUNG_WAKEMASK
select SAMSUNG_WDT_RESET
+   select SPARSE_IRQ
help
  Samsung S3C64XX series based systems
 
diff --git a/arch/arm/mach-s3c64xx/common.c b/arch/arm/mach-s3c64xx/common.c
index cca29aa49fd3..971b4799f16d 100644
--- a/arch/arm/mach-s3c64xx/common.c
+++ b/arch/arm/mach-s3c64xx/common.c
@@ -40,6 +40,7 @@
 #include 
 
 #include 
+#include 
 #include 
 #include 
 #include 
diff --git a/arch/arm/mach-s3c64xx/dev-uart.c b/arch/arm/mach-s3c64xx/dev-uart.c
index 46e18d77ea93..a0b4f0329811 100644
--- a/arch/arm/mach-s3c64xx/dev-uart.c
+++ b/arch/arm/mach-s3c64xx/dev-uart.c
@@ -23,6 +23,7 @@
 #include 
 #include 
 #include 
+#include 
 
 #include 
 
diff --git a/arch/arm/mach-s3c64xx/include/mach/irqs.h 
b/arch/arm/mach-s3c64xx/include/mach/irqs.h
index 67bbd1dd04c2..3ceb00b5de07 100644
--- a/arch/arm/mach-s3c64xx/include/mach/irqs.h
+++ b/arch/arm/mach-s3c64xx/include/mach/irqs.h
@@ -156,25 +156,11 @@
 
 #define IRQ_EINT_GROUP(group, no)  (IRQ_EINT_GROUP##group##_BASE + (no))
 
-/* Define a group of interrupts for board-specific use (eg, for MFD
- * interrupt controllers). */
+/* Some boards have their own IRQs behind this */
 #define IRQ_BOARD_START (IRQ_EINT_GROUP9_BASE + IRQ_EINT_GROUP9_NR + 1)
 
-#ifdef CONFIG_MACH_WLF_CRAGG_6410
-#define IRQ_BOARD_NR 160
-#elif defined(CONFIG_SMDK6410_WM1190_EV1)
-#define IRQ_BOARD_NR 64
-#elif defined(CONFIG_SMDK6410_WM1192_EV1)
-#define IRQ_BOARD_NR 64
-#else
-#define IRQ_BOARD_NR 16
-#endif
-
-#define IRQ_BOARD_END (IRQ_BOARD_START + IRQ_BOARD_NR)
-
-/* Set the default NR_IRQS */
-
-#define NR_IRQS(IRQ_BOARD_END + 1)
+/* Set the default nr_irqs, boards can override if necessary */
+#define S3C64XX_NR_IRQSIRQ_BOARD_START
 
 /* Compatibility */
 
diff --git a/arch/arm/mach-s3c64xx/include/mach/pm-core.h 
b/arch/arm/mach-s3c64xx/include/mach/pm-core.h
index a30a1e3ffc6a..32d2ff54f82d 100644
--- a/arch/arm/mach-s3c64xx/include/mach/pm-core.h
+++ b/arch/arm/mach-s3c64xx/include/mach/pm-core.h
@@ -18,6 +18,7 @@
 #include 
 
 #include 
+#include 
 
 static inline void s3c_pm_debug_init_uart(void)
 {
diff --git a/arch/arm/mach-s3c64xx/mach-anw6410.c 
b/arch/arm/mach-s3c64xx/mach-anw6410.c
index 6224c67f5061..347ce6009a8c 100644
--- a/arch/arm/mach-s3c64xx/mach-anw6410.c
+++ b/arch/arm/mach-s3c64xx/mach-anw6410.c
@@ -47,6 +47,7 @@
 
 #include 
 #include 
+#include 
 #include 
 #include 
 #include 
@@ -229,7 +230,7 @@ static void __init anw6410_machine_init(void)
 MACHINE_START(ANW6410, "A&W6410")
/* Maintainer: Kwangwoo Lee  */
.atag_offset= 0x100,
-
+   .nr_irqs= S3C64XX_NR_IRQS,
.init_irq   = s3c6410_init_irq,
.map_io = anw6410_map_io,
.init_machine   = anw6410_machine_init,
diff --git a/arch/arm/mach-s3c64xx/mach-crag6410-module.c 
b/arch/arm/mach-s3c64xx/mach-crag6410-module.c
index be21f06e6b3f..571f95cc5a53 100644
--- a/arch/arm/mach-s3c64xx/mach-crag6410-module.c
+++ b/arch/arm/mach-s3c64xx/mach-crag6410-module.c
@@ -30,6 +30,8 @@
 #include 
 
 #include 
+#include 
+
 #include "crag6410.h"
 
 static struct s3c64xx_spi_csinfo wm0010_spi_csinfo = {
diff --git a/arch/arm/mach-s3c64xx/mach-crag6410.c 
b/arch/arm/mach-s3c64xx/mach-crag6410.c
index 10b913baab28..f395a5617142 100644
--- a/arch/arm/mach-s3c64xx/mach-crag6410.c
+++ b/arch/arm/mach-s3c64xx/mach-crag6410.c
@@ -51,6 +51,7 @@
 #include 
 #include 
 #incl

[PATCH 07/10] ARM: s3c64xx: use new adc/touchscreen driver

2015-03-02 Thread Arnd Bergmann
The old ADC and touchscreen drivers are not compatible with
multiplatform support, but we can use the exynos-adc driver
as a replacement.

This changes the common device creation functions for s3c64xx
(but not s3c24xx for now) to use the new driver. To do this,
we have to pass the interrupt resources in the opposite order
and pass the platform data in the adc device node.

Signed-off-by: Arnd Bergmann 
---
 arch/arm/mach-s3c64xx/mach-mini6410.c |  3 +--
 arch/arm/mach-s3c64xx/mach-real6410.c |  3 +--
 arch/arm/mach-s3c64xx/mach-smartq.c   |  3 +--
 arch/arm/mach-s3c64xx/mach-smdk6410.c |  3 +--
 arch/arm/plat-samsung/devs.c  | 22 +-
 include/linux/platform_data/touchscreen-s3c2410.h |  1 +
 6 files changed, 10 insertions(+), 25 deletions(-)

diff --git a/arch/arm/mach-s3c64xx/mach-mini6410.c 
b/arch/arm/mach-s3c64xx/mach-mini6410.c
index 3ce5842ed51b..ae999fb3fe6d 100644
--- a/arch/arm/mach-s3c64xx/mach-mini6410.c
+++ b/arch/arm/mach-s3c64xx/mach-mini6410.c
@@ -234,7 +234,6 @@ static struct platform_device *mini6410_devices[] 
__initdata = {
&s3c_device_fb,
&mini6410_lcd_powerdev,
&s3c_device_adc,
-   &s3c_device_ts,
 };
 
 static void __init mini6410_map_io(void)
@@ -333,7 +332,7 @@ static void __init mini6410_machine_init(void)
s3c_nand_set_platdata(&mini6410_nand_info);
s3c_fb_set_platdata(&mini6410_lcd_pdata[features.lcd_index]);
s3c_sdhci1_set_platdata(&mini6410_hsmmc1_pdata);
-   s3c24xx_ts_set_platdata(NULL);
+   s3c64xx_ts_set_platdata(NULL);
 
/* configure nCS1 width to 16 bits */
 
diff --git a/arch/arm/mach-s3c64xx/mach-real6410.c 
b/arch/arm/mach-s3c64xx/mach-real6410.c
index ca6548a1ed3b..4e240ffa7ac7 100644
--- a/arch/arm/mach-s3c64xx/mach-real6410.c
+++ b/arch/arm/mach-s3c64xx/mach-real6410.c
@@ -203,7 +203,6 @@ static struct platform_device *real6410_devices[] 
__initdata = {
&s3c_device_fb,
&s3c_device_nand,
&s3c_device_adc,
-   &s3c_device_ts,
&s3c_device_ohci,
 };
 
@@ -302,7 +301,7 @@ static void __init real6410_machine_init(void)
 
s3c_fb_set_platdata(&real6410_lcd_pdata[features.lcd_index]);
s3c_nand_set_platdata(&real6410_nand_info);
-   s3c24xx_ts_set_platdata(NULL);
+   s3c64xx_ts_set_platdata(NULL);
 
/* configure nCS1 width to 16 bits */
 
diff --git a/arch/arm/mach-s3c64xx/mach-smartq.c 
b/arch/arm/mach-s3c64xx/mach-smartq.c
index 327ec1f451e3..59ec4cd92b51 100644
--- a/arch/arm/mach-s3c64xx/mach-smartq.c
+++ b/arch/arm/mach-s3c64xx/mach-smartq.c
@@ -249,7 +249,6 @@ static struct platform_device *smartq_devices[] __initdata 
= {
&s3c_device_ohci,
&s3c_device_rtc,
&samsung_device_pwm,
-   &s3c_device_ts,
&s3c_device_usb_hsotg,
&s3c64xx_device_iis0,
&smartq_backlight_device,
@@ -396,7 +395,7 @@ void __init smartq_machine_init(void)
s3c_hwmon_set_platdata(&smartq_hwmon_pdata);
s3c_sdhci1_set_platdata(&smartq_internal_hsmmc_pdata);
s3c_sdhci2_set_platdata(&smartq_internal_hsmmc_pdata);
-   s3c24xx_ts_set_platdata(&smartq_touchscreen_pdata);
+   s3c64xx_ts_set_platdata(&smartq_touchscreen_pdata);
 
i2c_register_board_info(0, smartq_i2c_devs,
ARRAY_SIZE(smartq_i2c_devs));
diff --git a/arch/arm/mach-s3c64xx/mach-smdk6410.c 
b/arch/arm/mach-s3c64xx/mach-smdk6410.c
index e160eded69e1..c16b90440aa1 100644
--- a/arch/arm/mach-s3c64xx/mach-smdk6410.c
+++ b/arch/arm/mach-s3c64xx/mach-smdk6410.c
@@ -289,7 +289,6 @@ static struct platform_device *smdk6410_devices[] 
__initdata = {
&s3c_device_adc,
&s3c_device_cfcon,
&s3c_device_rtc,
-   &s3c_device_ts,
&s3c_device_wdt,
 };
 
@@ -664,7 +663,7 @@ static void __init smdk6410_machine_init(void)
 
samsung_keypad_set_platdata(&smdk6410_keypad_data);
 
-   s3c24xx_ts_set_platdata(NULL);
+   s3c64xx_ts_set_platdata(NULL);
 
/* configure nCS1 width to 16 bits */
 
diff --git a/arch/arm/plat-samsung/devs.c b/arch/arm/plat-samsung/devs.c
index 83c7d154bde0..b0c7857a481c 100644
--- a/arch/arm/plat-samsung/devs.c
+++ b/arch/arm/plat-samsung/devs.c
@@ -111,12 +111,12 @@ struct platform_device s3c_device_adc = {
 #if defined(CONFIG_SAMSUNG_DEV_ADC)
 static struct resource s3c_adc_resource[] = {
[0] = DEFINE_RES_MEM(SAMSUNG_PA_ADC, SZ_256),
-   [1] = DEFINE_RES_IRQ(IRQ_TC),
-   [2] = DEFINE_RES_IRQ(IRQ_ADC),
+   [1] = DEFINE_RES_IRQ(IRQ_ADC),
+   [2] = DEFINE_RES_IRQ(IRQ_TC),
 };
 
 struct platform_device s3c_device_adc = {
-   .name   = "samsung-adc",
+   .name   = "exynos-adc",
.id = -1,
.num_resources  = ARRAY_SIZE(s3c_adc_resource),
.resource   = s3c_adc_resource,
@@ -939,31 +939,19 @@ void __init s3c24xx_ts_set_platdata(struct 
s3c2410_ts_mach_info *hard_s3c2410ts_
 #

[PATCH 04/10] ARM: s3c64xx: prepare initcalls for multiplatform

2015-03-02 Thread Arnd Bergmann
In a multiplatform kernel, each initcall is run regardless
of the platform it is meant for, so it must not attempt to
access SoC-specific registers.

This adds 'if (soc_is_s3c64xx)' to all initcalls that are
specific to the s3c64xx platform, to prevent them from breaking
other platforms once we can build them into a combined kernel.

Signed-off-by: Arnd Bergmann 
---
 arch/arm/mach-s3c64xx/common.c   |  4 ++--
 arch/arm/mach-s3c64xx/cpuidle.c  |  5 -
 arch/arm/mach-s3c64xx/irq-pm.c   |  2 +-
 arch/arm/mach-s3c64xx/mach-crag6410-module.c |  4 
 arch/arm/mach-s3c64xx/pl080.c|  4 
 arch/arm/mach-s3c64xx/pm.c   |  4 
 arch/arm/mach-s3c64xx/s3c6400.c  |  2 +-
 arch/arm/mach-s3c64xx/s3c6410.c  |  2 +-
 arch/arm/plat-samsung/gpio-samsung.c | 11 +--
 arch/arm/plat-samsung/init.c |  5 +
 10 files changed, 31 insertions(+), 12 deletions(-)

diff --git a/arch/arm/mach-s3c64xx/common.c b/arch/arm/mach-s3c64xx/common.c
index 16547f2641a3..cca29aa49fd3 100644
--- a/arch/arm/mach-s3c64xx/common.c
+++ b/arch/arm/mach-s3c64xx/common.c
@@ -209,7 +209,7 @@ void __init s3c64xx_init_io(struct map_desc *mach_desc, int 
size)
 static __init int s3c64xx_dev_init(void)
 {
/* Not applicable when using DT. */
-   if (of_have_populated_dt())
+   if (of_have_populated_dt() || !soc_is_s3c64xx())
return 0;
 
subsys_system_register(&s3c64xx_subsys, NULL);
@@ -414,7 +414,7 @@ static int __init s3c64xx_init_irq_eint(void)
int irq;
 
/* On DT-enabled systems EINTs are handled by pinctrl-s3c64xx driver. */
-   if (of_have_populated_dt())
+   if (of_have_populated_dt() || !soc_is_s3c64xx())
return -ENODEV;
 
for (irq = IRQ_EINT(0); irq <= IRQ_EINT(27); irq++) {
diff --git a/arch/arm/mach-s3c64xx/cpuidle.c b/arch/arm/mach-s3c64xx/cpuidle.c
index 2eb072440dfa..92b41c2b7314 100644
--- a/arch/arm/mach-s3c64xx/cpuidle.c
+++ b/arch/arm/mach-s3c64xx/cpuidle.c
@@ -18,6 +18,7 @@
 
 #include 
 
+#include 
 #include 
 
 #include "regs-sys.h"
@@ -57,6 +58,8 @@ static struct cpuidle_driver s3c64xx_cpuidle_driver = {
 
 static int __init s3c64xx_init_cpuidle(void)
 {
-   return cpuidle_register(&s3c64xx_cpuidle_driver, NULL);
+   if (soc_is_s3c64xx())
+   return cpuidle_register(&s3c64xx_cpuidle_driver, NULL);
+   return 0;
 }
 device_initcall(s3c64xx_init_cpuidle);
diff --git a/arch/arm/mach-s3c64xx/irq-pm.c b/arch/arm/mach-s3c64xx/irq-pm.c
index ae4ea7601f60..0bbf1faaee42 100644
--- a/arch/arm/mach-s3c64xx/irq-pm.c
+++ b/arch/arm/mach-s3c64xx/irq-pm.c
@@ -113,7 +113,7 @@ static struct syscore_ops s3c64xx_irq_syscore_ops = {
 static __init int s3c64xx_syscore_init(void)
 {
/* Appropriate drivers (pinctrl, uart) handle this when using DT. */
-   if (of_have_populated_dt())
+   if (of_have_populated_dt() || !soc_is_s3c64xx())
return 0;
 
register_syscore_ops(&s3c64xx_irq_syscore_ops);
diff --git a/arch/arm/mach-s3c64xx/mach-crag6410-module.c 
b/arch/arm/mach-s3c64xx/mach-crag6410-module.c
index 9c00d83f7151..be21f06e6b3f 100644
--- a/arch/arm/mach-s3c64xx/mach-crag6410-module.c
+++ b/arch/arm/mach-s3c64xx/mach-crag6410-module.c
@@ -29,6 +29,7 @@
 
 #include 
 
+#include 
 #include "crag6410.h"
 
 static struct s3c64xx_spi_csinfo wm0010_spi_csinfo = {
@@ -399,6 +400,9 @@ static struct i2c_driver wlf_gf_module_driver = {
 
 static int __init wlf_gf_module_register(void)
 {
+   if (!soc_is_s3c64xx())
+   return 0;
+
return i2c_add_driver(&wlf_gf_module_driver);
 }
 device_initcall(wlf_gf_module_register);
diff --git a/arch/arm/mach-s3c64xx/pl080.c b/arch/arm/mach-s3c64xx/pl080.c
index 901a984bddc2..89c5a62830a7 100644
--- a/arch/arm/mach-s3c64xx/pl080.c
+++ b/arch/arm/mach-s3c64xx/pl080.c
@@ -14,6 +14,7 @@
 #include 
 #include 
 
+#include 
 #include 
 #include 
 
@@ -230,6 +231,9 @@ static AMBA_AHB_DEVICE(s3c64xx_dma1, "dma-pl080s.1", 0,
 
 static int __init s3c64xx_pl080_init(void)
 {
+   if (!soc_is_s3c64xx())
+   return 0;
+
/* Set all DMA configuration to be DMA, not SDMA */
writel(0xff, S3C64XX_SDMA_SEL);
 
diff --git a/arch/arm/mach-s3c64xx/pm.c b/arch/arm/mach-s3c64xx/pm.c
index aaf7bea4032f..1451d4cda324 100644
--- a/arch/arm/mach-s3c64xx/pm.c
+++ b/arch/arm/mach-s3c64xx/pm.c
@@ -22,6 +22,7 @@
 #include 
 #include 
 
+#include 
 #include 
 #include 
 #include 
@@ -330,6 +331,9 @@ int __init s3c64xx_pm_init(void)
 
 static __init int s3c64xx_pm_initcall(void)
 {
+   if (!soc_is_s3c64xx())
+   return 0;
+
pm_cpu_prep = s3c64xx_pm_prepare;
pm_cpu_sleep = s3c64xx_cpu_suspend;
 
diff --git a/arch/arm/mach-s3c64xx/s3c6400.c b/arch/arm/mach-s3c64xx/s3c6400.c
index 1ce48c54cd9c..0789d59e6302 100644
--- a/arch/arm/mach-s3c64xx/s3c6400.c
+++ b/arch/arm/mach-s3c64xx/s3c6400.c
@@ -8

[PATCH 03/10] gpio: samsung: move gpio-samsung driver back to platform code

2015-03-02 Thread Arnd Bergmann
The gpio-samsung driver is special in the sense that it
interacts directly in multiple ways with the legacy platform
code for the s3c24xx and s3c64xx platforms. In contrast,
all devicetree based machines for Samsung, including the
ones on those two SoC families use a different driver.

The header files that define the interface between the platform
code and the gpio driver are not visible when building a
kernel for ARCH_MULTIPLATFORM, which prevents us from
turning on this option for s3c64xx.

To work around this, we now move the driver back into platform
code, from where it was originally moved to as part of commit
1b39d5f2cc5c28 ("gpio/samsung: gpio-samsung.c to support
Samsung GPIOs").

The long-term plan for this driver would be to remove it
entirely, after all Samsung machines have been converted
over to boot from DT, but there is currently no timeline
for when that might happen.

Signed-off-by: Arnd Bergmann 
---
 arch/arm/plat-samsung/Kconfig  | 3 +++
 arch/arm/plat-samsung/Makefile | 2 ++
 {drivers/gpio => arch/arm/plat-samsung}/gpio-samsung.c | 0
 drivers/gpio/Kconfig   | 7 ---
 drivers/gpio/Makefile  | 1 -
 5 files changed, 5 insertions(+), 8 deletions(-)
 rename {drivers/gpio => arch/arm/plat-samsung}/gpio-samsung.c (100%)

diff --git a/arch/arm/plat-samsung/Kconfig b/arch/arm/plat-samsung/Kconfig
index cb8e3d655d1a..1df08180f2a5 100644
--- a/arch/arm/plat-samsung/Kconfig
+++ b/arch/arm/plat-samsung/Kconfig
@@ -311,6 +311,9 @@ config SAMSUNG_WDT_RESET
  Compile support for system restart by triggering watchdog reset.
  Used on SoCs that do not provide dedicated reset control.
 
+config GPIO_SAMSUNG
+   def_bool SAMSUNG_ATAGS
+
 config DEBUG_S3C_UART
depends on PLAT_SAMSUNG
int
diff --git a/arch/arm/plat-samsung/Makefile b/arch/arm/plat-samsung/Makefile
index 1a29ab1f446d..7896ddf63974 100644
--- a/arch/arm/plat-samsung/Makefile
+++ b/arch/arm/plat-samsung/Makefile
@@ -26,6 +26,8 @@ obj-$(CONFIG_SAMSUNG_DEV_BACKLIGHT)   += dev-backlight.o
 
 obj-$(CONFIG_S3C_SETUP_CAMIF)  += setup-camif.o
 
+obj-$(CONFIG_GPIO_SAMSUNG) += gpio-samsung.o
+
 # PM support
 
 obj-$(CONFIG_PM_SLEEP) += pm-common.o
diff --git a/drivers/gpio/gpio-samsung.c b/arch/arm/plat-samsung/gpio-samsung.c
similarity index 100%
rename from drivers/gpio/gpio-samsung.c
rename to arch/arm/plat-samsung/gpio-samsung.c
diff --git a/drivers/gpio/Kconfig b/drivers/gpio/Kconfig
index c1e2ca3d9a51..2ebc124e1217 100644
--- a/drivers/gpio/Kconfig
+++ b/drivers/gpio/Kconfig
@@ -296,13 +296,6 @@ config GPIO_RCAR
help
  Say yes here to support GPIO on Renesas R-Car SoCs.
 
-config GPIO_SAMSUNG
-   bool
-   depends on PLAT_SAMSUNG
-   help
- Legacy GPIO support. Use only for platforms without support for
- pinctrl.
-
 config GPIO_SCH311X
tristate "SMSC SCH311x SuperI/O GPIO"
help
diff --git a/drivers/gpio/Makefile b/drivers/gpio/Makefile
index bdda6a94d2cd..0e48e5d89d63 100644
--- a/drivers/gpio/Makefile
+++ b/drivers/gpio/Makefile
@@ -73,7 +73,6 @@ obj-$(CONFIG_GPIO_PXA)+= gpio-pxa.o
 obj-$(CONFIG_GPIO_RC5T583) += gpio-rc5t583.o
 obj-$(CONFIG_GPIO_RDC321X) += gpio-rdc321x.o
 obj-$(CONFIG_GPIO_RCAR)+= gpio-rcar.o
-obj-$(CONFIG_GPIO_SAMSUNG) += gpio-samsung.o
 obj-$(CONFIG_ARCH_SA1100)  += gpio-sa1100.o
 obj-$(CONFIG_GPIO_SCH) += gpio-sch.o
 obj-$(CONFIG_GPIO_SCH311X) += gpio-sch311x.o
-- 
2.1.0.rc2

--
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


[PATCH 06/10] iio: exynos-adc: add experimental touchscreen support

2015-03-02 Thread Arnd Bergmann
This adds support for the touchscreen on Samsung s3c64xx.
The driver is completely untested but shows roughly how
it could be done, following the example of the at91 driver.

compared to the old plat-samsung/adc driver, there is
no support for prioritizing ts over other clients, nor
for oversampling. From my reading of the code, the
priorities didn't actually have any effect at all, but
the oversampling might be needed.

Verifying this driver is the main issue that is currently
holding up multiplatform support for s3c64xx, so any help
in testing is very much appreciated.

The current version uses the IS_REACHABLE() that is
going to be introduced in the linux-media tree, please
comment this out for testing.

Signed-off-by: Arnd Bergmann 
Acked-by: Dmitry Torokhov 
---
 .../devicetree/bindings/arm/samsung/exynos-adc.txt |   3 +
 drivers/iio/adc/exynos_adc.c   | 222 -
 2 files changed, 218 insertions(+), 7 deletions(-)

diff --git a/Documentation/devicetree/bindings/arm/samsung/exynos-adc.txt 
b/Documentation/devicetree/bindings/arm/samsung/exynos-adc.txt
index f46ca9a316a2..ccaaec6014bd 100644
--- a/Documentation/devicetree/bindings/arm/samsung/exynos-adc.txt
+++ b/Documentation/devicetree/bindings/arm/samsung/exynos-adc.txt
@@ -47,6 +47,9 @@ Required properties:
 
 - samsung,syscon-phandle Contains the PMU system controller node
(To access the ADC_PHY register on 
Exynos5250/5420/5800/3250)
+Optional properties:
+- has-touchscreen: If present, indicates that a touchscreen is
+   connected an usable.
 
 Note: child nodes can be added for auto probing from device tree.
 
diff --git a/drivers/iio/adc/exynos_adc.c b/drivers/iio/adc/exynos_adc.c
index 3a2dbb3b4926..75cd381a8181 100644
--- a/drivers/iio/adc/exynos_adc.c
+++ b/drivers/iio/adc/exynos_adc.c
@@ -35,6 +35,7 @@
 #include 
 #include 
 #include 
+#include 
 
 #include 
 #include 
@@ -42,12 +43,18 @@
 #include 
 #include 
 
+#include 
+
 /* S3C/EXYNOS4412/5250 ADC_V1 registers definitions */
 #define ADC_V1_CON(x)  ((x) + 0x00)
+#define ADC_V1_TSC(x)  ((x) + 0x04)
 #define ADC_V1_DLY(x)  ((x) + 0x08)
 #define ADC_V1_DATX(x) ((x) + 0x0C)
+#define ADC_V1_DATY(x) ((x) + 0x10)
+#define ADC_V1_UPDN(x) ((x) + 0x14)
 #define ADC_V1_INTCLR(x)   ((x) + 0x18)
 #define ADC_V1_MUX(x)  ((x) + 0x1c)
+#define ADC_V1_CLRINTPNDNUP(x) ((x) + 0x20)
 
 /* S3C2410 ADC registers definitions */
 #define ADC_S3C2410_MUX(x) ((x) + 0x18)
@@ -71,6 +78,30 @@
 #define ADC_S3C2410_DATX_MASK  0x3FF
 #define ADC_S3C2416_CON_RES_SEL(1u << 3)
 
+/* touch screen always uses channel 0 */
+#define ADC_S3C2410_MUX_TS 0
+
+/* ADCTSC Register Bits */
+#define ADC_S3C2443_TSC_UD_SEN (1u << 8)
+#define ADC_S3C2410_TSC_YM_SEN (1u << 7)
+#define ADC_S3C2410_TSC_YP_SEN (1u << 6)
+#define ADC_S3C2410_TSC_XM_SEN (1u << 5)
+#define ADC_S3C2410_TSC_XP_SEN (1u << 4)
+#define ADC_S3C2410_TSC_PULL_UP_DISABLE(1u << 3)
+#define ADC_S3C2410_TSC_AUTO_PST   (1u << 2)
+#define ADC_S3C2410_TSC_XY_PST(x)  (((x) & 0x3) << 0)
+
+#define ADC_TSC_WAIT4INT (ADC_S3C2410_TSC_YM_SEN | \
+ADC_S3C2410_TSC_YP_SEN | \
+ADC_S3C2410_TSC_XP_SEN | \
+ADC_S3C2410_TSC_XY_PST(3))
+
+#define ADC_TSC_AUTOPST(ADC_S3C2410_TSC_YM_SEN | \
+ADC_S3C2410_TSC_YP_SEN | \
+ADC_S3C2410_TSC_XP_SEN | \
+ADC_S3C2410_TSC_AUTO_PST | \
+ADC_S3C2410_TSC_XY_PST(0))
+
 /* Bit definitions for ADC_V2 */
 #define ADC_V2_CON1_SOFT_RESET (1u << 2)
 
@@ -88,7 +119,9 @@
 /* Bit definitions common for ADC_V1 and ADC_V2 */
 #define ADC_CON_EN_START   (1u << 0)
 #define ADC_CON_EN_START_MASK  (0x3 << 0)
+#define ADC_DATX_PRESSED   (1u << 15)
 #define ADC_DATX_MASK  0xFFF
+#define ADC_DATY_MASK  0xFFF
 
 #define EXYNOS_ADC_TIMEOUT (msecs_to_jiffies(100))
 
@@ -98,17 +131,24 @@
 struct exynos_adc {
struct exynos_adc_data  *data;
struct device   *dev;
+   struct input_dev*input;
void __iomem*regs;
struct regmap   *pmu_map;
struct clk  *clk;
struct clk  *sclk;
unsigned intirq;
+   unsigned inttsirq;
+   unsigned intdelay;
struct regulator*vdd;
 
struct completion   completion;
 
u32 value;
unsigned intversion;
+
+   boolread_ts;
+   u32 ts_x;
+   u32 ts_y;
 };
 
 struct exynos_adc_data {
@@ -197,6 +237,9 @@ static void exynos_adc_v1_init_hw(struct exynos_adc *info)
/* Enable 12-bit ADC resolution */
con1 |= ADC_V1_CON_RES;
   

[PATCH 01/10] Input: s3c2410_ts: fix S3C_ADC dependency

2015-03-02 Thread Arnd Bergmann
S3C_ADC is only available on machines that don't do ARCH_MULTIPLATFORM,
so changing the 'select' into 'depends on' here helps us move to
ARCH_MULTIPLATFORM without introducing regressions.

Signed-off-by: Arnd Bergmann 
---
 drivers/input/touchscreen/Kconfig | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/input/touchscreen/Kconfig 
b/drivers/input/touchscreen/Kconfig
index 58917525126e..3b4cd9ab1af0 100644
--- a/drivers/input/touchscreen/Kconfig
+++ b/drivers/input/touchscreen/Kconfig
@@ -326,7 +326,7 @@ config TOUCHSCREEN_ILI210X
 config TOUCHSCREEN_S3C2410
tristate "Samsung S3C2410/generic touchscreen input driver"
depends on ARCH_S3C24XX || SAMSUNG_DEV_TS
-   select S3C_ADC
+   depends on S3C_ADC
help
  Say Y here if you have the s3c2410 touchscreen.
 
-- 
2.1.0.rc2

--
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


[PATCH 09/10] ARM: s3c64xx: multiplatform support

2015-03-02 Thread Arnd Bergmann
After all preparation work is done, we can finally move the Kconfig
option for s3c64xx into ARCH_MULTIPLATFORM. This implies allowing
SAMSUNG_ATAGS for multiplatform again, but now disallowing the
ADC driver below it, as that still has dependencies on header files.

Signed-off-by: Arnd Bergmann 
---
 arch/arm/Kconfig| 27 ---
 arch/arm/configs/multi_v7_defconfig |  3 +++
 arch/arm/configs/s3c6400_defconfig  |  2 ++
 arch/arm/mach-s3c64xx/Kconfig   | 22 +-
 arch/arm/mach-s3c64xx/Makefile  |  3 +++
 arch/arm/plat-samsung/Kconfig   |  2 +-
 arch/arm/plat-samsung/Makefile  |  3 ++-
 7 files changed, 32 insertions(+), 30 deletions(-)

diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
index a6f71e402b38..0f7dd89b5eee 100644
--- a/arch/arm/Kconfig
+++ b/arch/arm/Kconfig
@@ -686,33 +686,6 @@ config ARCH_S3C24XX
  (), the IPAQ 1940 or the
  Samsung SMDK2410 development board (and derivatives).
 
-config ARCH_S3C64XX
-   bool "Samsung S3C64XX"
-   select ARCH_REQUIRE_GPIOLIB
-   select ARM_AMBA
-   select ARM_VIC
-   select ATAGS
-   select CLKDEV_LOOKUP
-   select CLKSRC_SAMSUNG_PWM
-   select COMMON_CLK_SAMSUNG
-   select CPU_V6K
-   select GENERIC_CLOCKEVENTS
-   select GPIO_SAMSUNG
-   select HAVE_S3C2410_I2C if I2C
-   select HAVE_S3C2410_WATCHDOG if WATCHDOG
-   select HAVE_TCM
-   select NO_IOPORT_MAP
-   select PLAT_SAMSUNG
-   select PM_GENERIC_DOMAINS if PM
-   select S3C_DEV_NAND
-   select S3C_GPIO_TRACK
-   select SAMSUNG_ATAGS
-   select SAMSUNG_WAKEMASK
-   select SAMSUNG_WDT_RESET
-   select SPARSE_IRQ
-   help
- Samsung S3C64XX series based systems
-
 config ARCH_DAVINCI
bool "TI DaVinci"
select ARCH_HAS_HOLES_MEMORYMODEL
diff --git a/arch/arm/configs/multi_v7_defconfig 
b/arch/arm/configs/multi_v7_defconfig
index e8a4c955241b..7bd95c167f93 100644
--- a/arch/arm/configs/multi_v7_defconfig
+++ b/arch/arm/configs/multi_v7_defconfig
@@ -11,6 +11,9 @@ CONFIG_MODULES=y
 CONFIG_MODULE_UNLOAD=y
 CONFIG_PARTITION_ADVANCED=y
 CONFIG_CMDLINE_PARTITION=y
+CONFIG_ARCH_MULTI_V7=y
+# CONFIG_ARCH_MULTI_V5 is not set
+# CONFIG_ARCH_MULTI_V4 is not set
 CONFIG_ARCH_VIRT=y
 CONFIG_ARCH_MVEBU=y
 CONFIG_MACH_ARMADA_370=y
diff --git a/arch/arm/configs/s3c6400_defconfig 
b/arch/arm/configs/s3c6400_defconfig
index e2f9fa5bb54b..e0f66936ae02 100644
--- a/arch/arm/configs/s3c6400_defconfig
+++ b/arch/arm/configs/s3c6400_defconfig
@@ -5,6 +5,8 @@ CONFIG_KALLSYMS_ALL=y
 CONFIG_MODULES=y
 CONFIG_MODULE_UNLOAD=y
 # CONFIG_BLK_DEV_BSG is not set
+CONFIG_ARCH_MULTI_V6=y
+# CONFIG_ARCH_MULTI_V7 is not set
 CONFIG_ARCH_S3C64XX=y
 CONFIG_S3C_BOOT_ERROR_RESET=y
 CONFIG_MACH_SMDK6400=y
diff --git a/arch/arm/mach-s3c64xx/Kconfig b/arch/arm/mach-s3c64xx/Kconfig
index 26ca2427e53d..8bdddee61520 100644
--- a/arch/arm/mach-s3c64xx/Kconfig
+++ b/arch/arm/mach-s3c64xx/Kconfig
@@ -2,6 +2,27 @@
 #  Simtec Electronics, Ben Dooks 
 #
 # Licensed under GPLv2
+menuconfig ARCH_S3C64XX
+   bool "Samsung S3C64XX" if ARCH_MULTI_V6
+   select ARCH_REQUIRE_GPIOLIB
+   select ARM_AMBA
+   select ARM_VIC
+   select ATAGS
+   select CLKSRC_SAMSUNG_PWM
+   select COMMON_CLK_SAMSUNG
+   select GPIO_SAMSUNG
+   select HAVE_S3C2410_I2C if I2C
+   select HAVE_S3C2410_WATCHDOG if WATCHDOG
+   select HAVE_TCM
+   select PLAT_SAMSUNG
+   select PM_GENERIC_DOMAINS if PM
+   select S3C_DEV_NAND
+   select S3C_GPIO_TRACK
+   select SAMSUNG_ATAGS
+   select SAMSUNG_WAKEMASK if PM
+   select SAMSUNG_WDT_RESET
+   help
+ Samsung S3C64XX series based systems
 
 if ARCH_S3C64XX
 
@@ -302,7 +323,6 @@ config MACH_S3C64XX_DT
select CPU_S3C6410
select PINCTRL
select PINCTRL_S3C64XX
-   select USE_OF
help
  Machine support for Samsung S3C6400/S3C6410 machines with Device Tree
  enabled.
diff --git a/arch/arm/mach-s3c64xx/Makefile b/arch/arm/mach-s3c64xx/Makefile
index 12f67b61ca5f..46dcdf1584d6 100644
--- a/arch/arm/mach-s3c64xx/Makefile
+++ b/arch/arm/mach-s3c64xx/Makefile
@@ -5,6 +5,9 @@
 #
 # Licensed under GPLv2
 
+ccflags-$(CONFIG_ARCH_MULTIPLATFORM) := -I$(srctree)/$(src)/include 
-I$(srctree)/arch/arm/plat-samsung/include
+asflags-$(CONFIG_ARCH_MULTIPLATFORM) := -I$(srctree)/$(src)/include 
-I$(srctree)/arch/arm/plat-samsung/include
+
 # Core
 
 obj-y  += common.o
diff --git a/arch/arm/plat-samsung/Kconfig b/arch/arm/plat-samsung/Kconfig
index 1df08180f2a5..6744cd28459f 100644
--- a/arch/arm/plat-samsung/Kconfig
+++ b/arch/arm/plat-samsung/Kconfig
@@ -39,7 +39,6 @@ config S3C_LOWLEVEL_UART_PORT
 
 config SAMSUNG_ATAGS
def_bool n
-   depends on !ARCH_MULTIPLATFORM
depends on ATAGS
help
   This option enables ATAGS based b

[PATCH 00/10] ARM: s3c64xx multiplatform, help needed

2015-03-02 Thread Arnd Bergmann
Hi everyone,

I've had these patches in a private git tree for a while, and have
finally gotten around to clean them up some more for submission.
Hopefully we can get all of it merged into 4.1.

I've done this to the best of my knowledge, but some parts are
a bit tricky, so I expect that there are bugs. The trickiest
part is the touchscreen driver. I've sent it out for review
last year already, but I have not found anybody who could test
it, and it's basically a blind rewrite of an existing driver,
so it's unlikely that I got it all right.

The other parts may actually work, but it is possible that
I made a mistake with the ASoC driver, the sparseirq support
or something else.

Does anyone still have access to the hardware? I'm particularly
interested in seeing this patch set get tested on smartq
and on smdk6410, which have the majority of the hardware.

Arnd Bergmann (10):
  Input: s3c2410_ts: fix S3C_ADC dependency
  ASoC: samsung/smartq: use dynamic registration
  gpio: samsung: move gpio-samsung driver back to platform code
  ARM: s3c64xx: prepare initcalls for multiplatform
  ARM: s3c64xx: enable sparse IRQ support
  iio: exynos-adc: add experimental touchscreen support
  ARM: s3c64xx: use new adc/touchscreen driver
  ARM: s3c64xx: use common debug-ll implementation
  ARM: s3c64xx: multiplatform support
  ARM: s3c64xx: allow building without board support

 .../devicetree/bindings/arm/samsung/exynos-adc.txt |   3 +
 arch/arm/Kconfig   |  26 ---
 arch/arm/Kconfig.debug |  19 +-
 arch/arm/configs/multi_v7_defconfig|   3 +
 arch/arm/configs/s3c6400_defconfig |   2 +
 arch/arm/mach-s3c64xx/Kconfig  |  31 ++-
 arch/arm/mach-s3c64xx/Makefile |  23 ++-
 arch/arm/mach-s3c64xx/common.c |   5 +-
 arch/arm/mach-s3c64xx/cpuidle.c|   5 +-
 arch/arm/mach-s3c64xx/dev-uart.c   |   1 +
 arch/arm/mach-s3c64xx/include/mach/debug-macro.S   |  38 
 arch/arm/mach-s3c64xx/include/mach/gpio-samsung.h  |   3 +
 arch/arm/mach-s3c64xx/include/mach/irqs.h  |  20 +-
 arch/arm/mach-s3c64xx/include/mach/pm-core.h   |   1 +
 arch/arm/mach-s3c64xx/irq-pm.c |   2 +-
 arch/arm/mach-s3c64xx/mach-anw6410.c   |   3 +-
 arch/arm/mach-s3c64xx/mach-crag6410-module.c   |   6 +
 arch/arm/mach-s3c64xx/mach-crag6410.c  |   2 +
 arch/arm/mach-s3c64xx/mach-hmt.c   |   2 +
 arch/arm/mach-s3c64xx/mach-mini6410.c  |   5 +-
 arch/arm/mach-s3c64xx/mach-ncp.c   |   2 +
 arch/arm/mach-s3c64xx/mach-real6410.c  |   6 +-
 arch/arm/mach-s3c64xx/mach-smartq.c|  16 +-
 arch/arm/mach-s3c64xx/mach-smartq5.c   |   2 +
 arch/arm/mach-s3c64xx/mach-smartq7.c   |   2 +
 arch/arm/mach-s3c64xx/mach-smdk6400.c  |   3 +-
 arch/arm/mach-s3c64xx/mach-smdk6410.c  |   6 +-
 arch/arm/mach-s3c64xx/pl080.c  |   4 +
 arch/arm/mach-s3c64xx/pm.c |   4 +
 arch/arm/mach-s3c64xx/s3c6400.c|   2 +-
 arch/arm/mach-s3c64xx/s3c6410.c|   2 +-
 arch/arm/plat-samsung/Kconfig  |   5 +-
 arch/arm/plat-samsung/Makefile |   5 +-
 arch/arm/plat-samsung/devs.c   |  22 +-
 .../gpio => arch/arm/plat-samsung}/gpio-samsung.c  |  12 +-
 arch/arm/plat-samsung/init.c   |   5 +
 arch/arm/plat-samsung/pm.c |   4 -
 drivers/gpio/Kconfig   |   7 -
 drivers/gpio/Makefile  |   1 -
 drivers/iio/adc/exynos_adc.c   | 222 -
 drivers/input/touchscreen/Kconfig  |   2 +-
 include/linux/platform_data/touchscreen-s3c2410.h  |   1 +
 sound/soc/samsung/smartq_wm8987.c  |  77 +++
 43 files changed, 408 insertions(+), 204 deletions(-)
 delete mode 100644 arch/arm/mach-s3c64xx/include/mach/debug-macro.S
 rename {drivers/gpio => arch/arm/plat-samsung}/gpio-samsung.c (99%)

-- 
2.1.0.rc2

--
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


[PATCH 02/10] ASoC: samsung/smartq: use dynamic registration

2015-03-02 Thread Arnd Bergmann
As a prerequisite for moving s3c64xx into multiplatform configurations,
we need to change the smartq audio driver to stop using hardcoded
gpio numbers from the header file, and instead pass the gpio data
through platform_data.

In order to do that, we also move the code to use module_platform_driver
and register the platform device using platform_device_register_simple
and register the gpios through the gpiod API.

Signed-off-by: Arnd Bergmann 
---
 arch/arm/mach-s3c64xx/mach-smartq.c | 13 +++
 sound/soc/samsung/smartq_wm8987.c   | 77 +
 2 files changed, 40 insertions(+), 50 deletions(-)

diff --git a/arch/arm/mach-s3c64xx/mach-smartq.c 
b/arch/arm/mach-s3c64xx/mach-smartq.c
index b3d13537a7f0..327ec1f451e3 100644
--- a/arch/arm/mach-s3c64xx/mach-smartq.c
+++ b/arch/arm/mach-s3c64xx/mach-smartq.c
@@ -12,6 +12,7 @@
 #include 
 #include 
 #include 
+#include 
 #include 
 #include 
 #include 
@@ -379,6 +380,15 @@ void __init smartq_map_io(void)
smartq_lcd_mode_set();
 }
 
+static struct gpiod_lookup_table smartq_audio_gpios = {
+   .dev_id = "smartq-audio",
+   .table = {
+   GPIO_LOOKUP("GPL", 12, "headphone detect", 0),
+   GPIO_LOOKUP("GPK", 12, "amplifiers shutdown", 0),
+   { },
+   },
+};
+
 void __init smartq_machine_init(void)
 {
s3c_i2c0_set_platdata(NULL);
@@ -397,4 +407,7 @@ void __init smartq_machine_init(void)
WARN_ON(smartq_wifi_init());
 
platform_add_devices(smartq_devices, ARRAY_SIZE(smartq_devices));
+
+   gpiod_add_lookup_table(&smartq_audio_gpios);
+   platform_device_register_simple("smartq-audio", -1, NULL, 0);
 }
diff --git a/sound/soc/samsung/smartq_wm8987.c 
b/sound/soc/samsung/smartq_wm8987.c
index 8291d2a5f152..7b6291fb55b9 100644
--- a/sound/soc/samsung/smartq_wm8987.c
+++ b/sound/soc/samsung/smartq_wm8987.c
@@ -13,15 +13,12 @@
  *
  */
 
-#include 
+#include 
 #include 
 
 #include 
 #include 
 
-#include 
-#include 
-
 #include "i2s.h"
 #include "../codecs/wm8750.h"
 
@@ -96,7 +93,7 @@ static struct snd_soc_jack_pin smartq_jack_pins[] = {
 
 static struct snd_soc_jack_gpio smartq_jack_gpios[] = {
{
-   .gpio   = S3C64XX_GPL(12),
+   .gpio   = -1,
.name   = "headphone detect",
.report = SND_JACK_HEADPHONE,
.debounce_time  = 200,
@@ -113,7 +110,9 @@ static int smartq_speaker_event(struct snd_soc_dapm_widget 
*w,
struct snd_kcontrol *k,
int event)
 {
-   gpio_set_value(S3C64XX_GPK(12), SND_SOC_DAPM_EVENT_OFF(event));
+   struct gpio_desc *gpio = snd_soc_card_get_drvdata(&snd_soc_smartq);
+
+   gpiod_set_value(gpio, SND_SOC_DAPM_EVENT_OFF(event));
 
return 0;
 }
@@ -206,62 +205,40 @@ static struct snd_soc_card snd_soc_smartq = {
.num_controls = ARRAY_SIZE(wm8987_smartq_controls),
 };
 
-static struct platform_device *smartq_snd_device;
-
-static int __init smartq_init(void)
+static int smartq_probe(struct platform_device *pdev)
 {
+   struct gpio_desc *gpio;
int ret;
 
-   if (!machine_is_smartq7() && !machine_is_smartq5()) {
-   pr_info("Only SmartQ is supported by this ASoC driver\n");
-   return -ENODEV;
-   }
-
-   smartq_snd_device = platform_device_alloc("soc-audio", -1);
-   if (!smartq_snd_device)
-   return -ENOMEM;
-
-   platform_set_drvdata(smartq_snd_device, &snd_soc_smartq);
-
-   ret = platform_device_add(smartq_snd_device);
-   if (ret) {
-   platform_device_put(smartq_snd_device);
-   return ret;
-   }
+   platform_set_drvdata(pdev, &snd_soc_smartq);
 
/* Initialise GPIOs used by amplifiers */
-   ret = gpio_request(S3C64XX_GPK(12), "amplifiers shutdown");
-   if (ret) {
-   dev_err(&smartq_snd_device->dev, "Failed to register GPK12\n");
-   goto err_unregister_device;
+   gpio = devm_gpiod_get(&pdev->dev, "amplifiers shutdown",
+ GPIOD_OUT_HIGH);
+   if (IS_ERR(gpio)) {
+   dev_err(&pdev->dev, "Failed to register GPK12\n");
+   ret = PTR_ERR(gpio);
+   goto out;
}
+   snd_soc_card_set_drvdata(&snd_soc_smartq, gpio);
 
-   /* Disable amplifiers */
-   ret = gpio_direction_output(S3C64XX_GPK(12), 1);
-   if (ret) {
-   dev_err(&smartq_snd_device->dev, "Failed to configure GPK12\n");
-   goto err_free_gpio_amp_shut;
-   }
-
-   return 0;
-
-err_free_gpio_amp_shut:
-   gpio_free(S3C64XX_GPK(12));
-err_unregister_device:
-   platform_device_unregister(smartq_snd_device);
+   ret = devm_snd_soc_register_card(&pdev->dev, &snd_soc_smartq);
+   if (ret)
+   dev_err(&pdev->dev, "Failed to register card\n");
 
+out:
return ret;
 }
 
-static void 

[PATCH 08/10] ARM: s3c64xx: use common debug-ll implementation

2015-03-02 Thread Arnd Bergmann
The uart on s3c64xx is essentially the same as on s3c24xx,
so we can share a single assembler file. However, the addresses
are different, and we need to add the respective Kconfig magic
to get the right addresses.

Signed-off-by: Arnd Bergmann 
---
 arch/arm/Kconfig.debug   | 19 +++-
 arch/arm/mach-s3c64xx/include/mach/debug-macro.S | 38 
 2 files changed, 18 insertions(+), 39 deletions(-)
 delete mode 100644 arch/arm/mach-s3c64xx/include/mach/debug-macro.S

diff --git a/arch/arm/Kconfig.debug b/arch/arm/Kconfig.debug
index 970de7518341..7af848b0f615 100644
--- a/arch/arm/Kconfig.debug
+++ b/arch/arm/Kconfig.debug
@@ -846,6 +846,7 @@ choice
depends on PLAT_SAMSUNG
select DEBUG_EXYNOS_UART if ARCH_EXYNOS
select DEBUG_S3C24XX_UART if ARCH_S3C24XX
+   select DEBUG_S3C64XX_UART if ARCH_S3C64XX
select DEBUG_S5PV210_UART if ARCH_S5PV210
bool "Use Samsung S3C UART 0 for low-level debug"
help
@@ -857,6 +858,7 @@ choice
depends on PLAT_SAMSUNG
select DEBUG_EXYNOS_UART if ARCH_EXYNOS
select DEBUG_S3C24XX_UART if ARCH_S3C24XX
+   select DEBUG_S3C64XX_UART if ARCH_S3C64XX
select DEBUG_S5PV210_UART if ARCH_S5PV210
bool "Use Samsung S3C UART 1 for low-level debug"
help
@@ -868,6 +870,7 @@ choice
depends on PLAT_SAMSUNG
select DEBUG_EXYNOS_UART if ARCH_EXYNOS
select DEBUG_S3C24XX_UART if ARCH_S3C24XX
+   select DEBUG_S3C64XX_UART if ARCH_S3C64XX
select DEBUG_S5PV210_UART if ARCH_S5PV210
bool "Use Samsung S3C UART 2 for low-level debug"
help
@@ -878,6 +881,7 @@ choice
config DEBUG_S3C_UART3
depends on PLAT_SAMSUNG && (ARCH_EXYNOS || ARCH_S5PV210)
select DEBUG_EXYNOS_UART if ARCH_EXYNOS
+   select DEBUG_S3C64XX_UART if ARCH_S3C64XX
select DEBUG_S5PV210_UART if ARCH_S5PV210
bool "Use Samsung S3C UART 3 for low-level debug"
help
@@ -1225,6 +1229,9 @@ config DEBUG_S3C2410_UART
 config DEBUG_S3C24XX_UART
bool
 
+config DEBUG_S3C64XX_UART
+   bool
+
 config DEBUG_S5PV210_UART
bool
 
@@ -1306,7 +1313,7 @@ config DEBUG_LL_INCLUDE
default "debug/renesas-scif.S" if DEBUG_RMOBILE_SCIFA0
default "debug/renesas-scif.S" if DEBUG_RMOBILE_SCIFA1
default "debug/renesas-scif.S" if DEBUG_RMOBILE_SCIFA4
-   default "debug/s3c24xx.S" if DEBUG_S3C24XX_UART
+   default "debug/s3c24xx.S" if DEBUG_S3C24XX_UART || DEBUG_S3C64XX_UART
default "debug/s5pv210.S" if DEBUG_S5PV210_UART
default "debug/sirf.S" if DEBUG_SIRFSOC_UART
default "debug/sti.S" if DEBUG_STI_UART
@@ -1382,6 +1389,10 @@ config DEBUG_UART_PHYS
DEBUG_S3C2410_UART2)
default 0x7800 if DEBUG_CNS3XXX
default 0x7c0003f8 if FOOTBRIDGE
+   default 0x7f005000 if DEBUG_S3C64XX_UART && DEBUG_S3C_UART0
+   default 0x7f005400 if DEBUG_S3C64XX_UART && DEBUG_S3C_UART1
+   default 0x7f005800 if DEBUG_S3C64XX_UART && DEBUG_S3C_UART2
+   default 0x7f005c00 if DEBUG_S3C64XX_UART && DEBUG_S3C_UART3
default 0x8001 if DEBUG_ASM9260_UART
default 0x8007 if DEBUG_IMX23_UART
default 0x80074000 if DEBUG_IMX28_UART
@@ -1439,6 +1450,7 @@ config DEBUG_UART_PHYS
DEBUG_RCAR_GEN2_SCIF0 || DEBUG_RCAR_GEN2_SCIF2 || \
DEBUG_RMOBILE_SCIFA0 || DEBUG_RMOBILE_SCIFA1 || \
DEBUG_RMOBILE_SCIFA4 || DEBUG_S3C24XX_UART || \
+   DEBUG_S3C64XX_UART || \
DEBUG_UART_BCM63XX || DEBUG_ASM9260_UART || \
DEBUG_SIRFSOC_UART || DEBUG_DIGICOLOR_UA0
 
@@ -1464,8 +1476,12 @@ config DEBUG_UART_VIRT
default 0xf409 if ARCH_LPC32XX
default 0xf420 if ARCH_GEMINI
default 0xf700 if DEBUG_SUN9I_UART0
+   default 0xf700 if DEBUG_S3C64XX_UART && DEBUG_S3C_UART0
default 0xf700 if DEBUG_S3C24XX_UART && (DEBUG_S3C_UART0 || \
DEBUG_S3C2410_UART0)
+   default 0xf7000400 if DEBUG_S3C64XX_UART && DEBUG_S3C_UART1
+   default 0xf7000800 if DEBUG_S3C64XX_UART && DEBUG_S3C_UART2
+   default 0xf7000c00 if DEBUG_S3C64XX_UART && DEBUG_S3C_UART3
default 0xf7004000 if DEBUG_S3C24XX_UART && (DEBUG_S3C_UART1 || \
DEBUG_S3C2410_UART1)
default 0xf7008000 if DEBUG_S3C24XX_UART && (DEBUG_S3C_UART2 || \
@@ -1528,6 +1544,7 @@ config DEBUG_UART_VIRT
DEBUG_UART_8250 || DEBUG_UART_PL01X || DEBUG_MESON_UARTAO || \
DEBUG_MSM_UART || DEBUG_NETX_UART || \
DEBUG_QCOM_UARTDM || DEBUG_S3C24XX_UART || \
+   DEBUG_S3C64XX_UART || \

[PATCH 10/10] ARM: s3c64xx: allow building without board support

2015-03-02 Thread Arnd Bergmann
Most of the code for the s3c64xx platform is only used when booting
with ATAGS based board files, but not when using device-tree.

This tries to identify all the s3c64xx specific code that is
unneeded when CONFIG_ATAGS is not set, so we can build a smaller
DT-only kernel if configured that way.

All board support is still left intact but now depends on the
CONFIG_ATAGS symbol that users may intentionally disable.

Signed-off-by: Arnd Bergmann 
---
 arch/arm/mach-s3c64xx/Kconfig | 19 ++-
 arch/arm/mach-s3c64xx/Makefile| 20 
 arch/arm/mach-s3c64xx/include/mach/gpio-samsung.h |  3 +++
 arch/arm/plat-samsung/pm.c|  4 
 4 files changed, 29 insertions(+), 17 deletions(-)

diff --git a/arch/arm/mach-s3c64xx/Kconfig b/arch/arm/mach-s3c64xx/Kconfig
index 8bdddee61520..48d1fbbdef13 100644
--- a/arch/arm/mach-s3c64xx/Kconfig
+++ b/arch/arm/mach-s3c64xx/Kconfig
@@ -7,18 +7,17 @@ menuconfig ARCH_S3C64XX
select ARCH_REQUIRE_GPIOLIB
select ARM_AMBA
select ARM_VIC
-   select ATAGS
select CLKSRC_SAMSUNG_PWM
select COMMON_CLK_SAMSUNG
-   select GPIO_SAMSUNG
+   select GPIO_SAMSUNG if ATAGS
select HAVE_S3C2410_I2C if I2C
select HAVE_S3C2410_WATCHDOG if WATCHDOG
select HAVE_TCM
select PLAT_SAMSUNG
select PM_GENERIC_DOMAINS if PM
-   select S3C_DEV_NAND
-   select S3C_GPIO_TRACK
-   select SAMSUNG_ATAGS
+   select S3C_DEV_NAND if ATAGS
+   select S3C_GPIO_TRACK if ATAGS
+   select SAMSUNG_ATAGS if ATAGS
select SAMSUNG_WAKEMASK if PM
select SAMSUNG_WDT_RESET
help
@@ -105,6 +104,7 @@ config S3C64XX_SETUP_USB_PHY
 
 config MACH_SMDK6400
bool "SMDK6400"
+   depends on ATAGS
select CPU_S3C6400
select S3C64XX_SETUP_SDHCI
select S3C_DEV_HSMMC1
@@ -115,6 +115,7 @@ config MACH_SMDK6400
 
 config MACH_ANW6410
bool "A&W6410"
+   depends on ATAGS
select CPU_S3C6410
select S3C64XX_SETUP_FB_24BPP
select S3C_DEV_FB
@@ -123,6 +124,7 @@ config MACH_ANW6410
 
 config MACH_MINI6410
bool "MINI6410"
+   depends on ATAGS
select CPU_S3C6410
select S3C64XX_SETUP_FB_24BPP
select S3C64XX_SETUP_SDHCI
@@ -138,6 +140,7 @@ config MACH_MINI6410
 
 config MACH_REAL6410
bool "REAL6410"
+   depends on ATAGS
select CPU_S3C6410
select S3C64XX_SETUP_FB_24BPP
select S3C64XX_SETUP_SDHCI
@@ -153,6 +156,7 @@ config MACH_REAL6410
 
 config MACH_SMDK6410
bool "SMDK6410"
+   depends on ATAGS
select CPU_S3C6410
select HAVE_S3C2410_WATCHDOG if WATCHDOG
select S3C64XX_SETUP_FB_24BPP
@@ -238,6 +242,7 @@ config SMDK6410_WM1192_EV1
 
 config MACH_NCP
bool "NCP"
+   depends on ATAGS
select CPU_S3C6410
select S3C64XX_SETUP_I2C1
select S3C_DEV_HSMMC1
@@ -247,6 +252,7 @@ config MACH_NCP
 
 config MACH_HMT
bool "Airgoo HMT"
+   depends on ATAGS
select CPU_S3C6410
select S3C64XX_SETUP_FB_24BPP
select S3C_DEV_FB
@@ -278,18 +284,21 @@ config MACH_SMARTQ
 
 config MACH_SMARTQ5
bool "SmartQ 5"
+   depends on ATAGS
select MACH_SMARTQ
help
Machine support for the SmartQ 5
 
 config MACH_SMARTQ7
bool "SmartQ 7"
+   depends on ATAGS
select MACH_SMARTQ
help
Machine support for the SmartQ 7
 
 config MACH_WLF_CRAGG_6410
bool "Wolfson Cragganmore 6410"
+   depends on ATAGS
select CPU_S3C6410
select I2C
select LEDS_GPIO_REGISTER
diff --git a/arch/arm/mach-s3c64xx/Makefile b/arch/arm/mach-s3c64xx/Makefile
index 46dcdf1584d6..9f242dac9d6d 100644
--- a/arch/arm/mach-s3c64xx/Makefile
+++ b/arch/arm/mach-s3c64xx/Makefile
@@ -8,19 +8,21 @@
 ccflags-$(CONFIG_ARCH_MULTIPLATFORM) := -I$(srctree)/$(src)/include 
-I$(srctree)/arch/arm/plat-samsung/include
 asflags-$(CONFIG_ARCH_MULTIPLATFORM) := -I$(srctree)/$(src)/include 
-I$(srctree)/arch/arm/plat-samsung/include
 
-# Core
+# PM
 
-obj-y  += common.o
+obj-$(CONFIG_PM)   += pm.o
+obj-$(CONFIG_PM_SLEEP) += sleep.o
+obj-$(CONFIG_CPU_IDLE) += cpuidle.o
 
-# Core support
+ifdef CONFIG_SAMSUNG_ATAGS
 
-obj-$(CONFIG_CPU_S3C6400)  += s3c6400.o
-obj-$(CONFIG_CPU_S3C6410)  += s3c6410.o
+obj-$(CONFIG_PM_SLEEP)  += irq-pm.o
 
-# PM
+# Core
 
-obj-$(CONFIG_PM)   += pm.o irq-pm.o sleep.o
-obj-$(CONFIG_CPU_IDLE) += cpuidle.o
+obj-y  += common.o
+obj-$(CONFIG_CPU_S3C6400)  += s3c6400.o
+obj-$(CONFIG_CPU_S3C6410)  += s3c6410.o
 
 # DMA support
 
@@ -55,4 +57,6 @@ obj-$(CONFIG_MACH_SMARTQ7)+= mach-smartq7.o
 obj-$(CONFIG_MACH_SMDK6400)+= mach-smdk6400.o
 obj-$(CONFIG_MACH_SMDK6410)+= mach-smdk6410.o
 obj-$(CONFIG_MA

Re: [PATCH V2 0/8] [media] exynos-gsc: Fixup PM support

2015-03-02 Thread Ulf Hansson
On 19 January 2015 at 14:22, Ulf Hansson  wrote:
> Changes in v2:
> - Rebase patches.
> - Adapt to changes for the PM core. Especially, the Kconfig option for
>   CONFIG_PM_RUNTIME has been removed and the runtime PM core is now
>   build for CONFIG_PM.
>
> This patchset fixup the PM support and adds some minor improvements to
> potentially save some more power at runtime PM suspend.
>
>
> Ulf Hansson (8):
>   [media] exynos-gsc: Simplify clock management
>   [media] exynos-gsc: Convert gsc_m2m_resume() from int to void
>   [media] exynos-gsc: Make driver functional when CONFIG_PM is unset
>   [media] exynos-gsc: Make runtime PM callbacks available for CONFIG_PM
>   [media] exynos-gsc: Fixup clock management at ->remove()
>   [media] exynos-gsc: Do full clock gating at runtime PM suspend
>   [media] exynos-gsc: Make system PM callbacks available for
> CONFIG_PM_SLEEP
>   [media] exynos-gsc: Simplify system PM
>
>  drivers/media/platform/exynos-gsc/gsc-core.c | 183 
> +++
>  drivers/media/platform/exynos-gsc/gsc-core.h |   3 -
>  2 files changed, 72 insertions(+), 114 deletions(-)
>
> --
> 1.9.1
>

I guess you guys have been busy, but it would be nice to get some
feedback of these patches.

Kind regards
Uffe
--
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


Re: [PATCH] phy: exynos5-usbdrd: Fix off-by-one valid value checking for args->args[0]

2015-03-02 Thread Vivek Gautam

Hi,

On Friday, February 27, 2015 9:14 PM "Axel Lin"  wrote:

Current code uses args->args[0] as array subscript of phy_drd->phys[].
So the valid value range for args->args[0] is 0 ... EXYNOS5_DRDPHYS_NUM - 
1.


Signed-off-by: Axel Lin 


Reviewed by: Vivek Gautam 


---
drivers/phy/phy-exynos5-usbdrd.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/phy/phy-exynos5-usbdrd.c 
b/drivers/phy/phy-exynos5-usbdrd.c

index 0437401..e2a0be7 100644
--- a/drivers/phy/phy-exynos5-usbdrd.c
+++ b/drivers/phy/phy-exynos5-usbdrd.c
@@ -531,7 +531,7 @@ static struct phy *exynos5_usbdrd_phy_xlate(struct 
device *dev,

{
 struct exynos5_usbdrd_phy *phy_drd = dev_get_drvdata(dev);

- if (WARN_ON(args->args[0] > EXYNOS5_DRDPHYS_NUM))
+ if (WARN_ON(args->args[0] >= EXYNOS5_DRDPHYS_NUM))
 return ERR_PTR(-ENODEV);

 return phy_drd->phys[args->args[0]].phy;
--
1.9.1



BRs
Vivek 


--
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


Re: [PATCH 2/2] drm/exynos: decon: Add support for DECON-EXT

2015-03-02 Thread Ajay kumar
On Mon, Mar 2, 2015 at 1:38 PM, Andrzej Hajda  wrote:
> On 02/26/2015 04:24 PM, Ajay Kumar wrote:
>> * Modify DECON-INT driver to support DECON-EXT.
>> * Add a table of porch values needed to set timing registers of DECON-EXT.
>> * DECON-EXT supports only H/w Triggered COMMAND mode.
>> * DECON-EXT supports only one DMA window(window 1), so modify
>>   all window management routines to support 2 windows of DECON-INT
>>   and 1 window of DECON-EXT.
>>
>> Signed-off-by: Ajay Kumar 
>> ---
>>  .../devicetree/bindings/video/exynos7-decon.txt|8 +-
>>  drivers/gpu/drm/exynos/exynos7_drm_decon.c |  229 
>> ++--
>>  include/video/exynos7_decon.h  |   13 ++
>>  3 files changed, 230 insertions(+), 20 deletions(-)
>>
>> diff --git a/Documentation/devicetree/bindings/video/exynos7-decon.txt 
>> b/Documentation/devicetree/bindings/video/exynos7-decon.txt
>> index f5f9c8d..87350c0 100644
>> --- a/Documentation/devicetree/bindings/video/exynos7-decon.txt
>> +++ b/Documentation/devicetree/bindings/video/exynos7-decon.txt
>> @@ -2,10 +2,14 @@ Device-Tree bindings for Samsung Exynos7 SoC display 
>> controller (DECON)
>>
>>  DECON (Display and Enhancement Controller) is the Display Controller for the
>>  Exynos7 series of SoCs which transfers the image data from a video memory
>> -buffer to an external LCD interface.
>> +buffer to an external LCD/HDMI interface.
>> +
>> +Exynos7 supports DECON-INT for generating video signals for LCD.
>> +Exynos7 supports DECON-EXT for generating video signals for HDMI.
>>
>>  Required properties:
>> -- compatible: value should be "samsung,exynos7-decon";
>> +- compatible: value should be "samsung,exynos7-decon-int" for DECON-INT;
>> +   value should be "samsung,exynos7-decon-ext" for DECON-EXT;
>>
>>  - reg: physical base address and length of the DECON registers set.
>>
>> diff --git a/drivers/gpu/drm/exynos/exynos7_drm_decon.c 
>> b/drivers/gpu/drm/exynos/exynos7_drm_decon.c
>> index 63f02e2..9e2d083 100644
>> --- a/drivers/gpu/drm/exynos/exynos7_drm_decon.c
>> +++ b/drivers/gpu/drm/exynos/exynos7_drm_decon.c
>> @@ -41,6 +41,28 @@
>>
>>  #define WINDOWS_NR   2
>
> Maybe it would be better to rename it to MAX_WINDOWS_NR
Ok.
>>
>> +#define DECON_EXT_CH_MAPPING 0x432105
>
> I am not familiar with decon, could you explain what exactly
> this mapping means and why is it fixed in the driver to this value,
> not default one. By the way my specs says bits 0-3 are reserverd
> and here it seems you are using them.
I reused the value from the code which hardware team shared with me.
It tries to map a input hardware channel(IDMA or VPP channel) onto
a hardware window in DECON.
Channel_N is mapped onto window_N in case of DECON-INT.
In case of DECON-EXT, Channel 0 should be mapped to window 1 of DECON-EXT.
So, basically for the changes I have made, I should ideally set only
bits [4:6] to 0x1,
and leave other bits untouched, though modifying other bits wouldn't
affect in anyway.
>
>> +
>> +enum decon_type {
>> + DECON_INT,
>> + DECON_EXT,
>> +} decon_type;
>> +
>> +struct decon_driver_data {
>> + enum decon_type decon_type;
>> + unsigned intnr_windows;
>> +};
>> +
>> +static struct decon_driver_data exynos7_decon_int_driver_data = {
>> + .decon_type = DECON_INT,
>
> I wonder if it wouldn't be better to use different fields to describe
> each capability/property instead of decon_type. For example
> .display_type = EXYNOS_DISPLAY_TYPE_LCD,
> .map_channels = 0,
Ok, let me list down the differences between INT and EXT.
1) Only h/w triggered command mode for DECON-EXT.
2) Need to feed modified porch values(decon_ext_timings)
3) Input channel to H/w window mapping(WINCHMAP)
4) default_window - 0 for DECON-INT and 1 for DECON-EXT

Out of the above differences, the first 3 can somehow be converted
to capability/property and embedded into driver_data.
But the 4th difference is bothering me.
I tried using something like start_window, end_window and tried to make
The code common for DECON-INT and DECON-EXT, and it just doesn't work.
ex:
start_window = 0, end_window = 1 for DECON-INT
start_window = 1, end_window = 1 for DECON-EXT

When win_commit gets called for window 0 from crtc_commit/plane_commit:
Configure start_window(0  for DECON-INT and 1 for DECON-EXT)

When win_commit is called from decon_apply, it is called for window 1 also.
That time win_commit can skip updating actual window 1.
How do I take care of this ambiguity? This case happens with
win_disable routine also!


> This way the code will be cleaner (less ifs).
>
>
>> + .nr_windows = 2,
>> +};
>> +
>> +static struct decon_driver_data exynos7_decon_ext_driver_data = {
>> + .decon_type = DECON_EXT,
>> + .nr_windows = 1,
>> +};
>> +
>>  struct decon_win_data {
>>   unsigned intovl_x;
>>   unsigned intovl_y;
>> @@ -76,15 +98,28 @@ struct decon_context {
>>   atomic_t  

Re: [PATCH 1/2] drm/exynos: hdmi: Add support for Exynos7 HDMI

2015-03-02 Thread Ajay kumar
Hi Andrej,

On Fri, Feb 27, 2015 at 4:18 PM, Andrzej Hajda  wrote:
> Hi Ajay,
>
> Thanks for the patch.
Thanks for reviewing the patch.

> On 02/26/2015 04:24 PM, Ajay Kumar wrote:
>> Modify the exynos HDMI driver to support Exynos7 HDMI 1.4.
>> * Add phy configs for Exynos7.
>> * Exynos7 has a different clock structure for HDMI,
>>   so introduce the new clocks.
>> * Add sysreg support to enable HDMI SYSREG on Exynos7.
>> * Exynos7 based boards need a DCDC_EN and LS_EN pins
>>   for powering up HDMI. Add support for that too.
>>
>> Signed-off-by: Ajay Kumar 
>> ---
>>  .../devicetree/bindings/video/exynos_hdmi.txt  |   21 +-
>>  drivers/gpu/drm/exynos/exynos_hdmi.c   |  252 
>> 
>>  drivers/gpu/drm/exynos/regs-hdmi.h |4 +
>>  3 files changed, 231 insertions(+), 46 deletions(-)
>>
>> diff --git a/Documentation/devicetree/bindings/video/exynos_hdmi.txt 
>> b/Documentation/devicetree/bindings/video/exynos_hdmi.txt
>> index 1fd8cf9..bb22a60 100644
>> --- a/Documentation/devicetree/bindings/video/exynos_hdmi.txt
>> +++ b/Documentation/devicetree/bindings/video/exynos_hdmi.txt
>> @@ -6,6 +6,7 @@ Required properties:
>>   2) "samsung,exynos4210-hdmi"
>>   3) "samsung,exynos4212-hdmi"
>>   4) "samsung,exynos5420-hdmi"
>> + 5) "samsung,exynos7-hdmi"
>
> Why not "samsung,exynos7420-hdmi" ?
> What compatible will you use for Exynos7430 or higher chip number?
I will leave this decision to Inki Dae or Kukjin.

>>  - reg: physical base address of the hdmi and length of memory mapped
>>   region.
>>  - interrupts: interrupt number to the cpu.
>> @@ -15,21 +16,33 @@ Required properties:
>>   c) optional flags and pull up/down.
>>  - clocks: list of clock IDs from SoC clock driver.
>>   a) hdmi: Gate of HDMI IP bus clock.
>> - b) sclk_hdmi: Gate of HDMI special clock.
>> - c) sclk_pixel: Pixel special clock, one of the two possible inputs of
>> + HDMI clocks necessary for non exynos7:
>> +  b) sclk_hdmi: Gate of HDMI special clock.
>> +  c) sclk_pixel: Pixel special clock, one of the two possible inputs of
>>   HDMI clock mux.
>> - d) sclk_hdmiphy: HDMI PHY clock output, one of two possible inputs of
>> +  d) sclk_hdmiphy: HDMI PHY clock output, one of two possible inputs of
>>   HDMI clock mux.
>> - e) mout_hdmi: It is required by the driver to switch between the 2
>> +  e) mout_hdmi: It is required by the driver to switch between the 2
>>   parents i.e. sclk_pixel and sclk_hdmiphy. If hdmiphy is stable
>>   after configuration, parent is set to sclk_hdmiphy else
>>   sclk_pixel.
>> + HDMI clocks necessary for Exynos7:
>> +  b) pclk_hdmiphy: Gate to HDMIPHY clock.
>
> According to specs there is also pclk_hdmi, why do you specify only this
> one?
Right, I have reused "hdmi" gating clock for pclk_hdmi. That is why I have
left "hdmi" clock as common for exynos7 and non-exynos7.

>> +  c) hdmi_pixel: Gate clock of MUX output for I_PIXEL_CLK.
>> +  d) hdmi_tmds: Gate clock of MUX output for I_TMDS_CLK.
>
> According to specs these clocks should be named i_pixel_clk and
> i_tmds_clk, shouldn't they?
I actually took these changes from an "internal" code(non-DRM).
The original author used these names, and I just carried the same names. :)

>>  - clock-names: aliases as per driver requirements for above clock IDs:
>>   "hdmi", "sclk_hdmi", "sclk_pixel", "sclk_hdmiphy" and "mout_hdmi".
>>  - ddc: phandle to the hdmi ddc node
>>  - phy: phandle to the hdmi phy node
>>  - samsung,syscon-phandle: phandle for system controller node for PMU.
>>
>> +Only for Exynos7(when compatible = "samsung,exynos7-hdmi"):
>> +- samsung,sysreg-phandle: phandle for system controller node for SYSREG 
>> block.
>> +
>> +Optional properties:
>> +- dcdc-gpios: OF device-tree gpio specification for HDMI_DCDC_EN pin.
>> +- lsen-gpios: OF device-tree gpio specification for HDMI_LS_EN pin.
>
> What is purpose of these gpios?
These 2 GPIOs need to be enabled to powerup HDMI on exynos7-espresso board.
Other boards need not provide the GPIO.

>> +
>>  Example:
>>
>>   hdmi {
>> diff --git a/drivers/gpu/drm/exynos/exynos_hdmi.c 
>> b/drivers/gpu/drm/exynos/exynos_hdmi.c
>> index 229b361..1b579ea 100644
>> --- a/drivers/gpu/drm/exynos/exynos_hdmi.c
>> +++ b/drivers/gpu/drm/exynos/exynos_hdmi.c
>> @@ -67,6 +67,7 @@
>>  enum hdmi_type {
>>   HDMI_TYPE13,
>>   HDMI_TYPE14,
>> + HDMI_TYPE14_7,
>>  };
>>
>>  struct hdmi_driver_data {
>> @@ -82,6 +83,9 @@ struct hdmi_resources {
>>   struct clk  *sclk_pixel;
>>   struct clk  *sclk_hdmiphy;
>>   struct clk  *mout_hdmi;
>> + struct clk  *hdmi_pixel;
>> + struct clk  *pclk_hdmiphy;
>> + struct clk  *hdmi_tmds;
>>   struct regulator_bulk_data  *regul_bulk;
>>

Re: [PATCH 2/2] drm/exynos: decon: Add support for DECON-EXT

2015-03-02 Thread Andrzej Hajda
On 02/26/2015 04:24 PM, Ajay Kumar wrote:
> * Modify DECON-INT driver to support DECON-EXT.
> * Add a table of porch values needed to set timing registers of DECON-EXT.
> * DECON-EXT supports only H/w Triggered COMMAND mode.
> * DECON-EXT supports only one DMA window(window 1), so modify
>   all window management routines to support 2 windows of DECON-INT
>   and 1 window of DECON-EXT.
> 
> Signed-off-by: Ajay Kumar 
> ---
>  .../devicetree/bindings/video/exynos7-decon.txt|8 +-
>  drivers/gpu/drm/exynos/exynos7_drm_decon.c |  229 
> ++--
>  include/video/exynos7_decon.h  |   13 ++
>  3 files changed, 230 insertions(+), 20 deletions(-)
> 
> diff --git a/Documentation/devicetree/bindings/video/exynos7-decon.txt 
> b/Documentation/devicetree/bindings/video/exynos7-decon.txt
> index f5f9c8d..87350c0 100644
> --- a/Documentation/devicetree/bindings/video/exynos7-decon.txt
> +++ b/Documentation/devicetree/bindings/video/exynos7-decon.txt
> @@ -2,10 +2,14 @@ Device-Tree bindings for Samsung Exynos7 SoC display 
> controller (DECON)
>  
>  DECON (Display and Enhancement Controller) is the Display Controller for the
>  Exynos7 series of SoCs which transfers the image data from a video memory
> -buffer to an external LCD interface.
> +buffer to an external LCD/HDMI interface.
> +
> +Exynos7 supports DECON-INT for generating video signals for LCD.
> +Exynos7 supports DECON-EXT for generating video signals for HDMI.
>  
>  Required properties:
> -- compatible: value should be "samsung,exynos7-decon";
> +- compatible: value should be "samsung,exynos7-decon-int" for DECON-INT;
> +   value should be "samsung,exynos7-decon-ext" for DECON-EXT;
>  
>  - reg: physical base address and length of the DECON registers set.
>  
> diff --git a/drivers/gpu/drm/exynos/exynos7_drm_decon.c 
> b/drivers/gpu/drm/exynos/exynos7_drm_decon.c
> index 63f02e2..9e2d083 100644
> --- a/drivers/gpu/drm/exynos/exynos7_drm_decon.c
> +++ b/drivers/gpu/drm/exynos/exynos7_drm_decon.c
> @@ -41,6 +41,28 @@
>  
>  #define WINDOWS_NR   2

Maybe it would be better to rename it to MAX_WINDOWS_NR

>  
> +#define DECON_EXT_CH_MAPPING 0x432105

I am not familiar with decon, could you explain what exactly
this mapping means and why is it fixed in the driver to this value,
not default one. By the way my specs says bits 0-3 are reserverd
and here it seems you are using them.


> +
> +enum decon_type {
> + DECON_INT,
> + DECON_EXT,
> +} decon_type;
> +
> +struct decon_driver_data {
> + enum decon_type decon_type;
> + unsigned intnr_windows;
> +};
> +
> +static struct decon_driver_data exynos7_decon_int_driver_data = {
> + .decon_type = DECON_INT,

I wonder if it wouldn't be better to use different fields to describe
each capability/property instead of decon_type. For example
.display_type = EXYNOS_DISPLAY_TYPE_LCD,
.map_channels = 0,

This way the code will be cleaner (less ifs).


> + .nr_windows = 2,
> +};
> +
> +static struct decon_driver_data exynos7_decon_ext_driver_data = {
> + .decon_type = DECON_EXT,
> + .nr_windows = 1,
> +};
> +
>  struct decon_win_data {
>   unsigned intovl_x;
>   unsigned intovl_y;
> @@ -76,15 +98,28 @@ struct decon_context {
>   atomic_twait_vsync_event;
>  
>   struct exynos_drm_panel_info panel;
> + struct decon_driver_data *driver_data;
>   struct exynos_drm_display *display;
>  };
>  
>  static const struct of_device_id decon_driver_dt_match[] = {
> - {.compatible = "samsung,exynos7-decon"},
> + { .compatible = "samsung,exynos7-decon-int",
> +   .data = &exynos7_decon_int_driver_data },
> + { .compatible = "samsung,exynos7-decon-ext",
> +   .data = &exynos7_decon_ext_driver_data },
>   {},
>  };
>  MODULE_DEVICE_TABLE(of, decon_driver_dt_match);
>  
> +static inline struct decon_driver_data *drm_decon_get_driver_data(
> + struct platform_device *pdev)
> +{
> + const struct of_device_id *of_id =
> + of_match_device(decon_driver_dt_match, &pdev->dev);
> +
> + return (struct decon_driver_data *)of_id->data;
> +}
> +
>  static void decon_wait_for_vblank(struct exynos_drm_crtc *crtc)
>  {
>   struct decon_context *ctx = crtc->ctx;
> @@ -106,13 +141,20 @@ static void decon_wait_for_vblank(struct 
> exynos_drm_crtc *crtc)
>  
>  static void decon_clear_channel(struct decon_context *ctx)
>  {
> + struct decon_driver_data *drv_data = ctx->driver_data;
>   int win, ch_enabled = 0;
>  
>   DRM_DEBUG_KMS("%s\n", __FILE__);
>  
>   /* Check if any channel is enabled. */
> - for (win = 0; win < WINDOWS_NR; win++) {
> - u32 val = readl(ctx->regs + WINCON(win));
> + for (win = 0; win < drv_data->nr_windows; win++) {
> + u32 val;
> + /* DECON EXT sw-hw window mapping */
> + if (drv_data->decon_type == DEC