Re: [PATCH] dmaengine: qcom_bam_dma: Add descriptor flag APIs

2014-05-22 Thread Vinod Koul
On Thu, May 15, 2014 at 12:32:06PM -0500, Andy Gross wrote:
 On Fri, May 02, 2014 at 01:08:27PM -0500, Andy Gross wrote:
  On Fri, May 02, 2014 at 09:58:41PM +0530, Vinod Koul wrote:
   On Thu, Apr 17, 2014 at 05:04:02PM -0500, Andy Gross wrote:
This patch adds APIs that allow for BAM hardware flags to be set per
descriptor.  Each one of the new flags informs the attached peripheral 
of a
special behavior that is required.

The EOT flag requests that the peripheral assert an end of transaction 
interrupt
when that descriptor is complete.  It also results in special signaling 
protocol
that is used between the attached peripheral and the core using the DMA
controller.
   DMA_PREP_INTERRUPT ??
  
  I have 3 different IRQs that can be asserted based on the bit I set in the
  hardware descriptor.  The normal IRQ is the INT bit.  However, in some 
  cases the
  peripheral protocol requires the use of the EOT or EOB interrupt instead.  
  The
  DMA_PREP_INTERRUPT would only work if I had only 2 choices.
 
 Thinking about this more, I could use the DMA_PREP_INTERRUPT to cover the EOT
 flag.  However, I might get in a bind later if I need to support the EOB (end 
 of
 block) interrupt.
Sorry for delay in this.

I think it would make sense to use DMA_PREP_INTERRUPT for EOB interrupt. The EOT
should always be enabled for the cases where it is applicable instead of nomral
irq.

That should genrically ocvery your cases, or did we miss anything here
 
  
   

The NWD flag requests that the peripheral wait until the data has been 
fully
processed before signaling an interrupt.
   interrupt for transaction complete or DMA request?
  
  This is a special signaling mechanism that holds off the DMA interrupt 
  until the
  peripheral actually acks that the data has been processed completely.  This 
  is
  required in many cases by the peripheral.  One example is the SPI 
  controller.
  At the end of a transaction you are supposed to set the NWD so that the chip
  select is de-asserted.
 
 I'm not sure what flag I could map this to... maybe DMA_CTRL_ACK?  or maybe 
 the
 DMA_PREP_FENCE?  I don't generally like overloading the flags and slightly
 twisting their intent.  Could we add a flag to denote device ACK?
Nope lets not override these...

-- 
~Vinod
--
To unsubscribe from this list: send the line unsubscribe linux-arm-msm in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH] dmaengine: qcom_bam_dma: Add descriptor flag APIs

2014-05-22 Thread Andy Gross
On Thu, May 22, 2014 at 11:40:49AM +0530, Vinod Koul wrote:

snip

   I have 3 different IRQs that can be asserted based on the bit I set in the
   hardware descriptor.  The normal IRQ is the INT bit.  However, in some 
   cases the
   peripheral protocol requires the use of the EOT or EOB interrupt instead. 
The
   DMA_PREP_INTERRUPT would only work if I had only 2 choices.
  
  Thinking about this more, I could use the DMA_PREP_INTERRUPT to cover the 
  EOT
  flag.  However, I might get in a bind later if I need to support the EOB 
  (end of
  block) interrupt.
 Sorry for delay in this.
 
 I think it would make sense to use DMA_PREP_INTERRUPT for EOB interrupt. The 
 EOT
 should always be enabled for the cases where it is applicable instead of 
 nomral
 irq.
 
 That should genrically ocvery your cases, or did we miss anything here

The EOT is not used for every transaction.  It is part of a handshaking
protocol with the attached peripheral, much like the NWD (notify when done).  As
near as I can tell today, no peripheral depends on the EOB, so we could drop it
for now until it is needed and cross this bridge when we need to.

  
   

 
 The NWD flag requests that the peripheral wait until the data has 
 been fully
 processed before signaling an interrupt.
interrupt for transaction complete or DMA request?
   
   This is a special signaling mechanism that holds off the DMA interrupt 
   until the
   peripheral actually acks that the data has been processed completely.  
   This is
   required in many cases by the peripheral.  One example is the SPI 
   controller.
   At the end of a transaction you are supposed to set the NWD so that the 
   chip
   select is de-asserted.
  
  I'm not sure what flag I could map this to... maybe DMA_CTRL_ACK?  or maybe 
  the
  DMA_PREP_FENCE?  I don't generally like overloading the flags and slightly
  twisting their intent.  Could we add a flag to denote device ACK?
 Nope lets not override these...

Then I need to add a flag.  Something like DMA_PREP_DEVICE_ACK that denotes 
that the
attached device needs to ACK the transfer.

Also, one thing I forgot.  For crypto and some of the other blocks, we have
something called command descriptors that can be transferred to the blocks to
provide programming or direction.  The DMA controller has a flag that tells the
attached peripheral that the incoming DMA contains command descriptors.  The dma
descriptors still point to a memory region to transfer, but the contents are
interpreted differently.  This is yet another flag in the descriptor flag
section.  I'd need another flag for this as well.  Something like DMA_PREP_CMD.

We are actively working on upstreaming our crypto block and this will be
required for that to work properly.

-- 
sent by an employee of the Qualcomm Innovation Center, Inc.
The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum,
hosted by The Linux Foundation
--
To unsubscribe from this list: send the line unsubscribe linux-arm-msm in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH] dmaengine: qcom_bam_dma: Add descriptor flag APIs

2014-05-22 Thread Srinivas Kandagatla



On 22/05/14 16:09, Andy Gross wrote:

On Thu, May 22, 2014 at 11:40:49AM +0530, Vinod Koul wrote:

snip


I have 3 different IRQs that can be asserted based on the bit I set in the
hardware descriptor.  The normal IRQ is the INT bit.  However, in some cases the
peripheral protocol requires the use of the EOT or EOB interrupt instead.  The
DMA_PREP_INTERRUPT would only work if I had only 2 choices.


Thinking about this more, I could use the DMA_PREP_INTERRUPT to cover the EOT
flag.  However, I might get in a bind later if I need to support the EOB (end of
block) interrupt.

Sorry for delay in this.

I think it would make sense to use DMA_PREP_INTERRUPT for EOB interrupt. The EOT
should always be enabled for the cases where it is applicable instead of nomral
irq.

That should genrically ocvery your cases, or did we miss anything here


The EOT is not used for every transaction.  It is part of a handshaking
protocol with the attached peripheral, much like the NWD (notify when done).  As
near as I can tell today, no peripheral depends on the EOB, so we could drop it
for now until it is needed and cross this bridge when we need to.


As EOT behaviour is totally dependent on the attached peripheral(or 
channel), Can't we make this specific to channel by passing additional 
flags in the DT dma channel descriptors? This will be better abstraction 
for drivers as well.


I know that EOT flag is part of descriptor but still some channels 
*must* have EOT to run there state-machine correctly. So making it 
optional for those channels might be wrong.


Are there any use cases for particular *channel* where EOT requirement 
changes dynamically?




--srini











The NWD flag requests that the peripheral wait until the data has been fully
processed before signaling an interrupt.

interrupt for transaction complete or DMA request?


This is a special signaling mechanism that holds off the DMA interrupt until the
peripheral actually acks that the data has been processed completely.  This is
required in many cases by the peripheral.  One example is the SPI controller.
At the end of a transaction you are supposed to set the NWD so that the chip
select is de-asserted.


I'm not sure what flag I could map this to... maybe DMA_CTRL_ACK?  or maybe the
DMA_PREP_FENCE?  I don't generally like overloading the flags and slightly
twisting their intent.  Could we add a flag to denote device ACK?

Nope lets not override these...


Then I need to add a flag.  Something like DMA_PREP_DEVICE_ACK that denotes 
that the
attached device needs to ACK the transfer.

Also, one thing I forgot.  For crypto and some of the other blocks, we have
something called command descriptors that can be transferred to the blocks to
provide programming or direction.  The DMA controller has a flag that tells the
attached peripheral that the incoming DMA contains command descriptors.  The dma
descriptors still point to a memory region to transfer, but the contents are
interpreted differently.  This is yet another flag in the descriptor flag
section.  I'd need another flag for this as well.  Something like DMA_PREP_CMD.

We are actively working on upstreaming our crypto block and this will be
required for that to work properly.


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


Re: [PATCH] dmaengine: qcom_bam_dma: Add descriptor flag APIs

2014-05-22 Thread Andy Gross
On Thu, May 22, 2014 at 04:27:05PM +0100, Srinivas Kandagatla wrote:

snip

 
 The EOT is not used for every transaction.  It is part of a handshaking
 protocol with the attached peripheral, much like the NWD (notify when done). 
  As
 near as I can tell today, no peripheral depends on the EOB, so we could drop 
 it
 for now until it is needed and cross this bridge when we need to.
 
 As EOT behaviour is totally dependent on the attached peripheral(or
 channel), Can't we make this specific to channel by passing
 additional flags in the DT dma channel descriptors? This will be
 better abstraction for drivers as well.

Even for channels where you want to use EOT, you don't use it for every
transaction.  So a global channel flag isn't going to work.  This is the same
for NWD.  It is a per descriptor choice.

 
 I know that EOT flag is part of descriptor but still some channels
 *must* have EOT to run there state-machine correctly. So making it
 optional for those channels might be wrong.
 
 Are there any use cases for particular *channel* where EOT
 requirement changes dynamically?

I2C is one example.  You place EOT on the last transaction that makes up a
write/read transaction.  You may have multiple descriptors to send data, but the
last one has EOT.  And for read transactions, you place NWD on the last read
transaction.

snip

-- 
sent by an employee of the Qualcomm Innovation Center, Inc.
The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum,
hosted by The Linux Foundation
--
To unsubscribe from this list: send the line unsubscribe linux-arm-msm in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH] dmaengine: qcom_bam_dma: Add descriptor flag APIs

2014-05-22 Thread Srinivas Kandagatla



On 22/05/14 16:32, Andy Gross wrote:

On Thu, May 22, 2014 at 04:27:05PM +0100, Srinivas Kandagatla wrote:

snip



The EOT is not used for every transaction.  It is part of a handshaking
protocol with the attached peripheral, much like the NWD (notify when done).  As
near as I can tell today, no peripheral depends on the EOB, so we could drop it
for now until it is needed and cross this bridge when we need to.


As EOT behaviour is totally dependent on the attached peripheral(or
channel), Can't we make this specific to channel by passing
additional flags in the DT dma channel descriptors? This will be
better abstraction for drivers as well.


Even for channels where you want to use EOT, you don't use it for every
transaction.  So a global channel flag isn't going to work.  This is the same
for NWD.  It is a per descriptor choice.


Thanks Andy for explaining, I got it now.




I know that EOT flag is part of descriptor but still some channels
*must* have EOT to run there state-machine correctly. So making it
optional for those channels might be wrong.

Are there any use cases for particular *channel* where EOT
requirement changes dynamically?


I2C is one example.  You place EOT on the last transaction that makes up a
write/read transaction.  You may have multiple descriptors to send data, but the
last one has EOT.  And for read transactions, you place NWD on the last read
transaction.

snip


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


[PATCH v1 3/5] clk: gcc: Add APQ8084 Global Clock Controller support

2014-05-22 Thread Georgi Djakov
This patch adds support for the global clock controller found on
the APQ8084 based devices.

The APQ8084 and MSM8974 share a lot of clock data, so instead of
duplicating all the data, we add support to the MSM8974 code.

Signed-off-by: Georgi Djakov gdja...@mm-sol.com
---
 drivers/clk/qcom/Kconfig |4 +-
 drivers/clk/qcom/gcc-msm8974.c   |  151 +-
 include/dt-bindings/clock/qcom,gcc-msm8974.h |4 +
 3 files changed, 154 insertions(+), 5 deletions(-)

diff --git a/drivers/clk/qcom/Kconfig b/drivers/clk/qcom/Kconfig
index 7f696b7..00541e7 100644
--- a/drivers/clk/qcom/Kconfig
+++ b/drivers/clk/qcom/Kconfig
@@ -30,10 +30,10 @@ config MSM_MMCC_8960
  graphics, video encode/decode, camera, etc.
 
 config MSM_GCC_8974
-   tristate MSM8974 Global Clock Controller
+   tristate APQ8084/MSM8974 Global Clock Controller
depends on COMMON_CLK_QCOM
help
- Support for the global clock controller on msm8974 devices.
+ Support for the global clock controller on apq8084/msm8974 devices.
  Say Y if you want to use peripheral devices such as UART, SPI,
  i2c, USB, SD/eMMC, SATA, PCIe, etc.
 
diff --git a/drivers/clk/qcom/gcc-msm8974.c b/drivers/clk/qcom/gcc-msm8974.c
index 58cb2f5..c2a8d77 100644
--- a/drivers/clk/qcom/gcc-msm8974.c
+++ b/drivers/clk/qcom/gcc-msm8974.c
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2013, The Linux Foundation. All rights reserved.
+ * Copyright (c) 2013-2014, The Linux Foundation. All rights reserved.
  *
  * This software is licensed under the terms of the GNU General Public
  * License version 2, as published by the Free Software Foundation, and
@@ -204,6 +204,12 @@ static const struct freq_tbl 
ftbl_gcc_blsp1_2_qup1_6_i2c_apps_clk[] = {
{ }
 };
 
+static const struct freq_tbl ftbl_gcc_blsp1_2_qup1_6_i2c_apps_clk_apq8084[] = {
+   F(1920, P_XO, 1, 0, 0),
+   F(5000, P_GPLL0, 12, 0, 0),
+   { }
+};
+
 static struct clk_rcg2 blsp1_qup1_i2c_apps_clk_src = {
.cmd_rcgr = 0x0660,
.hid_width = 5,
@@ -768,6 +774,27 @@ static struct clk_rcg2 ce2_clk_src = {
},
 };
 
+static const struct freq_tbl ftbl_gcc_ce3_clk_apq8084[] = {
+   F(5000, P_GPLL0, 12, 0, 0),
+   F(8571, P_GPLL0, 7, 0, 0),
+   F(1, P_GPLL0, 6, 0, 0),
+   F(17143, P_GPLL0, 3.5, 0, 0),
+   { }
+};
+
+static struct clk_rcg2 ce3_clk_src_apq8084 = {
+   .cmd_rcgr = 0x1d10,
+   .hid_width = 5,
+   .parent_map = gcc_xo_gpll0_map,
+   .freq_tbl = ftbl_gcc_ce3_clk_apq8084,
+   .clkr.hw.init = (struct clk_init_data){
+   .name = ce3_clk_src,
+   .parent_names = gcc_xo_gpll0,
+   .num_parents = 2,
+   .ops = clk_rcg2_ops,
+   },
+};
+
 static const struct freq_tbl ftbl_gcc_gp_clk[] = {
F(480, P_XO, 4, 0, 0),
F(600, P_GPLL0, 10, 1, 10),
@@ -780,6 +807,12 @@ static const struct freq_tbl ftbl_gcc_gp_clk[] = {
{ }
 };
 
+static const struct freq_tbl ftbl_gcc_gp_clk_apq8084[] = {
+   F(1920, P_XO, 1, 0, 0),
+   F(1, P_GPLL0, 6, 0, 0),
+   F(2, P_GPLL0, 3, 0, 0),
+   { }
+};
 
 static struct clk_rcg2 gp1_clk_src = {
.cmd_rcgr = 0x1904,
@@ -966,6 +999,11 @@ static const struct freq_tbl ftbl_gcc_usb_hs_system_clk[] 
= {
{ }
 };
 
+static const struct freq_tbl ftbl_gcc_usb_hs_system_clk_apq8084[] = {
+   F(7500, P_GPLL0, 8, 0, 0),
+   { }
+};
+
 static struct clk_rcg2 usb_hs_system_clk_src = {
.cmd_rcgr = 0x0490,
.hid_width = 5,
@@ -1029,6 +1067,11 @@ static const struct freq_tbl 
ftbl_gcc_usb_hsic_system_clk[] = {
{ }
 };
 
+static const struct freq_tbl ftbl_gcc_usb_hsic_system_clk_apq8084[] = {
+   F(7500, P_GPLL0, 8, 0, 0),
+   { }
+};
+
 static struct clk_rcg2 usb_hsic_system_clk_src = {
.cmd_rcgr = 0x041c,
.hid_width = 5,
@@ -1838,6 +1881,58 @@ static struct clk_branch gcc_ce2_clk = {
},
 };
 
+static struct clk_branch gcc_ce3_ahb_clk_apq8084 = {
+   .halt_reg = 0x1d0c,
+   .halt_check = BRANCH_HALT_VOTED,
+   .clkr = {
+   .enable_reg = 0x1d0c,
+   .enable_mask = BIT(0),
+   .hw.init = (struct clk_init_data){
+   .name = gcc_ce3_ahb_clk,
+   .parent_names = (const char *[]){
+   config_noc_clk_src,
+   },
+   .num_parents = 1,
+   .ops = clk_branch2_ops,
+   },
+   },
+};
+
+static struct clk_branch gcc_ce3_axi_clk_apq8084 = {
+   .halt_reg = 0x1088,
+   .halt_check = BRANCH_HALT_VOTED,
+   .clkr = {
+   .enable_reg = 0x1d08,
+   .enable_mask = BIT(0),
+   .hw.init = (struct clk_init_data){
+   .name = gcc_ce3_axi_clk,
+   .parent_names = (const 

[PATCH v1 5/5] ARM: dts: qcom: Add APQ8084 serial port DT node

2014-05-22 Thread Georgi Djakov
Add the necessary DT node to probe the serial driver on
APQ8084 platforms.

Signed-off-by: Georgi Djakov gdja...@mm-sol.com
---
 arch/arm/boot/dts/qcom-apq8084.dtsi |7 +++
 1 file changed, 7 insertions(+)

diff --git a/arch/arm/boot/dts/qcom-apq8084.dtsi 
b/arch/arm/boot/dts/qcom-apq8084.dtsi
index 2dcd11e..c346549 100644
--- a/arch/arm/boot/dts/qcom-apq8084.dtsi
+++ b/arch/arm/boot/dts/qcom-apq8084.dtsi
@@ -185,5 +185,12 @@
reg = 0xfc40 0x4000;
};
 
+   serial@f995e000 {
+   compatible = qcom,msm-uartdm-v1.4, qcom,msm-uartdm;
+   reg = 0xf995e000 0x1000;
+   interrupts = 0 114 0x0;
+   clocks = gcc GCC_BLSP2_UART2_APPS_CLK, gcc 
GCC_BLSP2_AHB_CLK;
+   clock-names = core, iface;
+   };
};
 };
-- 
1.7.9.5

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


[PATCH v1 0/5] clk: gcc: Add APQ8084 Global Clock Controller support

2014-05-22 Thread Georgi Djakov
This patchset adds support for the global clock controller found on the
APQ8084 based platforms.

It applies to the clk-next tree and the following patchset on top of it:
https://lkml.org/lkml/2014/5/16/666

Georgi Djakov (5):
  clk: qcom: Add APQ8084 Global Clock Controller documentation
  clk: qcom: Allow an override function to be passed as data
  clk: gcc: Add APQ8084 Global Clock Controller support
  ARM: dts: qcom: Add APQ8084 Global Clock Controller DT node
  ARM: dts: qcom: Add APQ8084 serial port DT node

 .../devicetree/bindings/clock/qcom,gcc.txt |1 +
 arch/arm/boot/dts/qcom-apq8084.dtsi|   17 ++
 drivers/clk/qcom/Kconfig   |4 +-
 drivers/clk/qcom/gcc-msm8974.c |  174 ++--
 include/dt-bindings/clock/qcom,gcc-msm8974.h   |4 +
 5 files changed, 185 insertions(+), 15 deletions(-)

-- 
1.7.9.5

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


[PATCH v1 1/5] clk: qcom: Add APQ8084 Global Clock Controller documentation

2014-05-22 Thread Georgi Djakov
Add the compatible string for the APQ8084 global clock controller
to the clock binding documentation.

Signed-off-by: Georgi Djakov gdja...@mm-sol.com
---
 .../devicetree/bindings/clock/qcom,gcc.txt |1 +
 1 file changed, 1 insertion(+)

diff --git a/Documentation/devicetree/bindings/clock/qcom,gcc.txt 
b/Documentation/devicetree/bindings/clock/qcom,gcc.txt
index 9cfcb4f..4f35042 100644
--- a/Documentation/devicetree/bindings/clock/qcom,gcc.txt
+++ b/Documentation/devicetree/bindings/clock/qcom,gcc.txt
@@ -5,6 +5,7 @@ Required properties :
 - compatible : shall contain only one of the following:
 
qcom,gcc-apq8064
+   qcom,gcc-apq8084
qcom,gcc-msm8660
qcom,gcc-msm8960
qcom,gcc-msm8974
-- 
1.7.9.5

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


[PATCH v1 4/5] ARM: dts: qcom: Add APQ8084 Global Clock Controller DT node

2014-05-22 Thread Georgi Djakov
This patch adds the necessary node to probe the global clock
controller on APQ8084 platforms.

Signed-off-by: Georgi Djakov gdja...@mm-sol.com
---
 arch/arm/boot/dts/qcom-apq8084.dtsi |   10 ++
 1 file changed, 10 insertions(+)

diff --git a/arch/arm/boot/dts/qcom-apq8084.dtsi 
b/arch/arm/boot/dts/qcom-apq8084.dtsi
index e3e009a..2dcd11e 100644
--- a/arch/arm/boot/dts/qcom-apq8084.dtsi
+++ b/arch/arm/boot/dts/qcom-apq8084.dtsi
@@ -2,6 +2,8 @@
 
 #include skeleton.dtsi
 
+#include dt-bindings/clock/qcom,gcc-msm8974.h
+
 / {
model = Qualcomm APQ 8084;
compatible = qcom,apq8084;
@@ -175,5 +177,13 @@
compatible = qcom,pshold;
reg = 0xfc4ab000 0x4;
};
+
+   gcc: clock-controller@fc40 {
+   compatible = qcom,gcc-apq8084;
+   #clock-cells = 1;
+   #reset-cells = 1;
+   reg = 0xfc40 0x4000;
+   };
+
};
 };
-- 
1.7.9.5

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


[PATCH v1 2/5] clk: qcom: Allow an override function to be passed as data

2014-05-22 Thread Georgi Djakov
The APQ8084 and MSM8974 SoCs share a lot of clock data. Instead of
duplicating all the data, we can add the support for APQ8084 into
the MSM8974 code and just describe the differences by using an
override function.

This patch applies to the clk-next tree and the following patchset
on top of it: https://lkml.org/lkml/2014/5/16/666

Signed-off-by: Georgi Djakov gdja...@mm-sol.com
---
 drivers/clk/qcom/gcc-msm8974.c |   27 +++
 1 file changed, 15 insertions(+), 12 deletions(-)

diff --git a/drivers/clk/qcom/gcc-msm8974.c b/drivers/clk/qcom/gcc-msm8974.c
index 33eb051..58cb2f5 100644
--- a/drivers/clk/qcom/gcc-msm8974.c
+++ b/drivers/clk/qcom/gcc-msm8974.c
@@ -2674,14 +2674,6 @@ static const struct qcom_cc_desc gcc_msm8974_desc = {
.num_resets = ARRAY_SIZE(gcc_msm8974_resets),
 };
 
-static const struct of_device_id gcc_msm8974_match_table[] = {
-   { .compatible = qcom,gcc-msm8974 },
-   { .compatible = qcom,gcc-msm8974pro , .data = (void *)1UL },
-   { .compatible = qcom,gcc-msm8974pro-ac, .data = (void *)1UL },
-   { }
-};
-MODULE_DEVICE_TABLE(of, gcc_msm8974_match_table);
-
 static void msm8974_pro_clock_override(void)
 {
sdcc1_apps_clk_src_init.parent_names = gcc_xo_gpll0_gpll4;
@@ -2697,20 +2689,31 @@ static void msm8974_pro_clock_override(void)
gcc_sdcc1_cdccal_ff_clk.clkr;
 }
 
+static const struct of_device_id gcc_msm8974_match_table[] = {
+   { .compatible = qcom,gcc-msm8974 },
+   { .compatible = qcom,gcc-msm8974pro,
+   .data = msm8974_pro_clock_override },
+   { .compatible = qcom,gcc-msm8974pro-ac,
+   .data = msm8974_pro_clock_override },
+   { }
+};
+MODULE_DEVICE_TABLE(of, gcc_msm8974_match_table);
+
 static int gcc_msm8974_probe(struct platform_device *pdev)
 {
struct clk *clk;
struct device *dev = pdev-dev;
-   bool pro;
const struct of_device_id *id;
+   void (*overrides)(void);
 
id = of_match_device(gcc_msm8974_match_table, dev);
if (!id)
return -ENODEV;
-   pro = !!(id-data);
 
-   if (pro)
-   msm8974_pro_clock_override();
+   if (id-data) {
+   overrides = id-data;
+   overrides();
+   }
 
/* Temporary until RPM clocks supported */
clk = clk_register_fixed_rate(dev, xo, NULL, CLK_IS_ROOT, 1920);
-- 
1.7.9.5

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


Re: [PATCH v1 3/5] clk: gcc: Add APQ8084 Global Clock Controller support

2014-05-22 Thread Kumar Gala

On May 22, 2014, at 11:24 AM, Georgi Djakov gdja...@mm-sol.com wrote:

 This patch adds support for the global clock controller found on
 the APQ8084 based devices.
 
 The APQ8084 and MSM8974 share a lot of clock data, so instead of
 duplicating all the data, we add support to the MSM8974 code.
 
 Signed-off-by: Georgi Djakov gdja...@mm-sol.com
 ---
 drivers/clk/qcom/Kconfig |4 +-
 drivers/clk/qcom/gcc-msm8974.c   |  151 +-
 include/dt-bindings/clock/qcom,gcc-msm8974.h |4 +
 3 files changed, 154 insertions(+), 5 deletions(-)

What about differences in reset?

- k

-- 
Employee of Qualcomm Innovation Center, Inc.
Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum, hosted by 
The Linux Foundation

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


Re: [PATCH v1 3/5] clk: gcc: Add APQ8084 Global Clock Controller support

2014-05-22 Thread Stephen Boyd
On 05/22/14 09:24, Georgi Djakov wrote:
 diff --git a/drivers/clk/qcom/gcc-msm8974.c b/drivers/clk/qcom/gcc-msm8974.c
 index 58cb2f5..c2a8d77 100644
 --- a/drivers/clk/qcom/gcc-msm8974.c
 +++ b/drivers/clk/qcom/gcc-msm8974.c
 @@ -204,6 +204,12 @@ static const struct freq_tbl 
 ftbl_gcc_blsp1_2_qup1_6_i2c_apps_clk[] = {
   { }
  };
  
 +static const struct freq_tbl ftbl_gcc_blsp1_2_qup1_6_i2c_apps_clk_apq8084[] 
 = {
 + F(1920, P_XO, 1, 0, 0),
 + F(5000, P_GPLL0, 12, 0, 0),
 + { }
 +};
 +

Just merge this with the other blsp1_2_qup table.

  static struct clk_rcg2 blsp1_qup1_i2c_apps_clk_src = {
   .cmd_rcgr = 0x0660,
   .hid_width = 5,
 @@ -768,6 +774,27 @@ static struct clk_rcg2 ce2_clk_src = {
   },
  };
  
 +static const struct freq_tbl ftbl_gcc_ce3_clk_apq8084[] = {
 + F(5000, P_GPLL0, 12, 0, 0),
 + F(8571, P_GPLL0, 7, 0, 0),
 + F(1, P_GPLL0, 6, 0, 0),
 + F(17143, P_GPLL0, 3.5, 0, 0),
 + { }
 +};
 +

Ditto.

 +static struct clk_rcg2 ce3_clk_src_apq8084 = {

Please drop all the _apq8084 stuff. I imagine if we support other chips
in this same driver this won't make any sense.

 + .cmd_rcgr = 0x1d10,
 + .hid_width = 5,
 + .parent_map = gcc_xo_gpll0_map,
 + .freq_tbl = ftbl_gcc_ce3_clk_apq8084,
 + .clkr.hw.init = (struct clk_init_data){
 + .name = ce3_clk_src,
 + .parent_names = gcc_xo_gpll0,
 + .num_parents = 2,
 + .ops = clk_rcg2_ops,
 + },
 +};
 +
  static const struct freq_tbl ftbl_gcc_gp_clk[] = {
   F(480, P_XO, 4, 0, 0),
   F(600, P_GPLL0, 10, 1, 10),
 @@ -780,6 +807,12 @@ static const struct freq_tbl ftbl_gcc_gp_clk[] = {
   { }
  };
  
 +static const struct freq_tbl ftbl_gcc_gp_clk_apq8084[] = {
 + F(1920, P_XO, 1, 0, 0),
 + F(1, P_GPLL0, 6, 0, 0),
 + F(2, P_GPLL0, 3, 0, 0),
 + { }
 +};

Merge with other GP table?

  
  static struct clk_rcg2 gp1_clk_src = {
   .cmd_rcgr = 0x1904,
 @@ -966,6 +999,11 @@ static const struct freq_tbl 
 ftbl_gcc_usb_hs_system_clk[] = {
   { }
  };
  
 +static const struct freq_tbl ftbl_gcc_usb_hs_system_clk_apq8084[] = {
 + F(7500, P_GPLL0, 8, 0, 0),
 + { }
 +};
 +

ditto.

  static struct clk_rcg2 usb_hs_system_clk_src = {
   .cmd_rcgr = 0x0490,
   .hid_width = 5,
 @@ -1029,6 +1067,11 @@ static const struct freq_tbl 
 ftbl_gcc_usb_hsic_system_clk[] = {
   { }
  };
  
 +static const struct freq_tbl ftbl_gcc_usb_hsic_system_clk_apq8084[] = {
 + F(7500, P_GPLL0, 8, 0, 0),
 + { }
 +};
 +

ditto.

-- 
Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum,
hosted by The Linux Foundation

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


[PATCH 0/5] ks8851 DT updates

2014-05-22 Thread Stephen Boyd
This set of patches properly documents the micrel ks8851 spi ethernet
controller, converts to devm_regulator_get_optional() to make error
paths slightly simpler, and finally adds supports for another
optional regulator and a reset gpio.

Stephen Boyd (5):
  devicetree: bindings: Document micrel vendor prefix
  devicetree: bindings: Properly document micrel ks8851 SPI chips
  net: ks8851: Use devm_regulator_get_optional()
  net: ks8851: Add optional vdd_io regulator and reset gpio
  net: ks8851: Add of match table

 .../devicetree/bindings/net/micrel-ks8851.txt  | 15 -
 .../devicetree/bindings/vendor-prefixes.txt|  1 +
 drivers/net/ethernet/micrel/ks8851.c   | 71 +++---
 3 files changed, 75 insertions(+), 12 deletions(-)

-- 
The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum,
hosted by The Linux Foundation

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


[PATCH 1/5] devicetree: bindings: Document micrel vendor prefix

2014-05-22 Thread Stephen Boyd
There's one existing use of 'micrel' in the documentation so use
'micrel' instead of the company's ticker symbol 'mcrl'.

Cc: devicet...@vger.kernel.org
Signed-off-by: Stephen Boyd sb...@codeaurora.org
---

This is mostly here as the first patch to make checkpatch quiet. I expect DT
maintainers to pick this one up.

 Documentation/devicetree/bindings/vendor-prefixes.txt | 1 +
 1 file changed, 1 insertion(+)

diff --git a/Documentation/devicetree/bindings/vendor-prefixes.txt 
b/Documentation/devicetree/bindings/vendor-prefixes.txt
index 1bc2174e1a05..2fe06ad1d248 100644
--- a/Documentation/devicetree/bindings/vendor-prefixes.txt
+++ b/Documentation/devicetree/bindings/vendor-prefixes.txt
@@ -76,6 +76,7 @@ linux Linux-specific binding
 lsiLSI Corp. (LSI Logic)
 marvellMarvell Technology Group Ltd.
 maxim  Maxim Integrated Products
+micrel Micrel Inc.
 microchip  Microchip Technology Inc.
 mosaixtech Mosaix Technologies, Inc.
 moxa   Moxa
-- 
The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum,
hosted by The Linux Foundation

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


[PATCH 3/5] net: ks8851: Use devm_regulator_get_optional()

2014-05-22 Thread Stephen Boyd
This simplifies error paths and removes the need to
regulator_put().

Cc: Nishanth Menon n...@ti.com
Signed-off-by: Stephen Boyd sb...@codeaurora.org
---
 drivers/net/ethernet/micrel/ks8851.c | 11 +++
 1 file changed, 3 insertions(+), 8 deletions(-)

diff --git a/drivers/net/ethernet/micrel/ks8851.c 
b/drivers/net/ethernet/micrel/ks8851.c
index 13767eb36a48..f2bfc708880c 100644
--- a/drivers/net/ethernet/micrel/ks8851.c
+++ b/drivers/net/ethernet/micrel/ks8851.c
@@ -1417,7 +1417,7 @@ static int ks8851_probe(struct spi_device *spi)
ks-spidev = spi;
ks-tx_space = 6144;
 
-   ks-vdd_reg = regulator_get_optional(spi-dev, vdd);
+   ks-vdd_reg = devm_regulator_get_optional(spi-dev, vdd);
if (IS_ERR(ks-vdd_reg)) {
ret = PTR_ERR(ks-vdd_reg);
if (ret == -EPROBE_DEFER)
@@ -1427,7 +1427,7 @@ static int ks8851_probe(struct spi_device *spi)
if (ret) {
dev_err(spi-dev, regulator enable fail: %d\n,
ret);
-   goto err_reg_en;
+   goto err_reg;
}
}
 
@@ -1530,9 +1530,6 @@ err_irq:
 err_id:
if (!IS_ERR(ks-vdd_reg))
regulator_disable(ks-vdd_reg);
-err_reg_en:
-   if (!IS_ERR(ks-vdd_reg))
-   regulator_put(ks-vdd_reg);
 err_reg:
free_netdev(ndev);
return ret;
@@ -1547,10 +1544,8 @@ static int ks8851_remove(struct spi_device *spi)
 
unregister_netdev(priv-netdev);
free_irq(spi-irq, priv);
-   if (!IS_ERR(priv-vdd_reg)) {
+   if (!IS_ERR(priv-vdd_reg))
regulator_disable(priv-vdd_reg);
-   regulator_put(priv-vdd_reg);
-   }
free_netdev(priv-netdev);
 
return 0;
-- 
The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum,
hosted by The Linux Foundation

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


[PATCH 5/5] net: ks8851: Add of match table

2014-05-22 Thread Stephen Boyd
Users are currently just providing ks8851 as the compatible for
this driver in device tree. Add a compatible string that provides
the vendor name along with the driver name to be more explicit.

Signed-off-by: Stephen Boyd sb...@codeaurora.org
---
 drivers/net/ethernet/micrel/ks8851.c | 6 ++
 1 file changed, 6 insertions(+)

diff --git a/drivers/net/ethernet/micrel/ks8851.c 
b/drivers/net/ethernet/micrel/ks8851.c
index 3a322daba5ff..e72918970a58 100644
--- a/drivers/net/ethernet/micrel/ks8851.c
+++ b/drivers/net/ethernet/micrel/ks8851.c
@@ -1603,9 +1603,15 @@ static int ks8851_remove(struct spi_device *spi)
return 0;
 }
 
+static const struct of_device_id ks8851_match_table[] = {
+   { .compatible = micrel,ks8851 },
+   { }
+};
+
 static struct spi_driver ks8851_driver = {
.driver = {
.name = ks8851,
+   .of_match_table = ks8851_match_table,
.owner = THIS_MODULE,
.pm = ks8851_pm_ops,
},
-- 
The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum,
hosted by The Linux Foundation

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


[PATCH 4/5] net: ks8851: Add optional vdd_io regulator and reset gpio

2014-05-22 Thread Stephen Boyd
Allow the ks8851 driver to enable an optional 1.8V vdd_io
regulator and assert the reset pin to the phy if a reset gpio is
present in device tree.

Cc: Nishanth Menon n...@ti.com
Signed-off-by: Stephen Boyd sb...@codeaurora.org
---
 drivers/net/ethernet/micrel/ks8851.c | 54 +++-
 1 file changed, 53 insertions(+), 1 deletion(-)

diff --git a/drivers/net/ethernet/micrel/ks8851.c 
b/drivers/net/ethernet/micrel/ks8851.c
index f2bfc708880c..3a322daba5ff 100644
--- a/drivers/net/ethernet/micrel/ks8851.c
+++ b/drivers/net/ethernet/micrel/ks8851.c
@@ -26,6 +26,8 @@
 #include linux/regulator/consumer.h
 
 #include linux/spi/spi.h
+#include linux/gpio.h
+#include linux/of_gpio.h
 
 #include ks8851.h
 
@@ -85,6 +87,8 @@ union ks8851_tx_hdr {
  * @eeprom_size: Companion eeprom size in Bytes, 0 if no eeprom
  * @eeprom: 93CX6 EEPROM state for accessing on-board EEPROM.
  * @vdd_reg:   Optional regulator supplying the chip
+ * @vdd_io: Optional digital power supply for IO
+ * @gpio: Optional reset_n gpio
  *
  * The @lock ensures that the chip is protected when certain operations are
  * in progress. When the read or write packet transfer is in progress, most
@@ -133,6 +137,8 @@ struct ks8851_net {
 
struct eeprom_93cx6 eeprom;
struct regulator*vdd_reg;
+   struct regulator*vdd_io;
+   int gpio;
 };
 
 static int msg_enable;
@@ -1404,6 +1410,7 @@ static int ks8851_probe(struct spi_device *spi)
struct ks8851_net *ks;
int ret;
unsigned cider;
+   int gpio;
 
ndev = alloc_etherdev(sizeof(struct ks8851_net));
if (!ndev)
@@ -1417,6 +1424,37 @@ static int ks8851_probe(struct spi_device *spi)
ks-spidev = spi;
ks-tx_space = 6144;
 
+   gpio = of_get_named_gpio_flags(spi-dev.of_node, reset-gpios,
+  0, NULL);
+   if (gpio == -EPROBE_DEFER) {
+   ret = gpio;
+   goto err_gpio;
+   }
+
+   ks-gpio = gpio;
+   if (gpio_is_valid(gpio)) {
+   ret = devm_gpio_request_one(spi-dev, gpio,
+   GPIOF_OUT_INIT_LOW, ks8851_rst_n);
+   if (ret) {
+   dev_err(spi-dev, reset gpio request failed\n);
+   goto err_gpio;
+   }
+   }
+
+   ks-vdd_io = devm_regulator_get_optional(spi-dev, vdd-io);
+   if (IS_ERR(ks-vdd_io)) {
+   ret = PTR_ERR(ks-vdd_io);
+   if (ret == -EPROBE_DEFER)
+   goto err_reg_io;
+   } else {
+   ret = regulator_enable(ks-vdd_io);
+   if (ret) {
+   dev_err(spi-dev, regulator vdd_io enable fail: %d\n,
+   ret);
+   goto err_reg_io;
+   }
+   }
+
ks-vdd_reg = devm_regulator_get_optional(spi-dev, vdd);
if (IS_ERR(ks-vdd_reg)) {
ret = PTR_ERR(ks-vdd_reg);
@@ -1425,12 +1463,16 @@ static int ks8851_probe(struct spi_device *spi)
} else {
ret = regulator_enable(ks-vdd_reg);
if (ret) {
-   dev_err(spi-dev, regulator enable fail: %d\n,
+   dev_err(spi-dev, regulator vdd enable fail: %d\n,
ret);
goto err_reg;
}
}
 
+   if (gpio_is_valid(gpio)) {
+   usleep_range(1, 11000);
+   gpio_set_value(gpio, 1);
+   }
 
mutex_init(ks-lock);
spin_lock_init(ks-statelock);
@@ -1527,10 +1569,16 @@ err_netdev:
free_irq(ndev-irq, ks);
 
 err_irq:
+   if (gpio_is_valid(gpio))
+   gpio_set_value(gpio, 0);
 err_id:
if (!IS_ERR(ks-vdd_reg))
regulator_disable(ks-vdd_reg);
 err_reg:
+   if (!IS_ERR(ks-vdd_io))
+   regulator_disable(ks-vdd_io);
+err_reg_io:
+err_gpio:
free_netdev(ndev);
return ret;
 }
@@ -1544,8 +1592,12 @@ static int ks8851_remove(struct spi_device *spi)
 
unregister_netdev(priv-netdev);
free_irq(spi-irq, priv);
+   if (gpio_is_valid(priv-gpio))
+   gpio_set_value(priv-gpio, 0);
if (!IS_ERR(priv-vdd_reg))
regulator_disable(priv-vdd_reg);
+   if (!IS_ERR(priv-vdd_io))
+   regulator_disable(priv-vdd_io);
free_netdev(priv-netdev);
 
return 0;
-- 
The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum,
hosted by The Linux Foundation

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


[PATCH 2/5] devicetree: bindings: Properly document micrel ks8851 SPI chips

2014-05-22 Thread Stephen Boyd
The ks8851 SPI ethernet wasn't documented, but we documented the
optional regulator supply for it under the mll based ethernet
chip. Furthermore, that compatible string needed another 'l'. Fix
all of this and document the newly added optional vdd-io and
reset-gpios properties.

Cc: Nishanth Menon n...@ti.com
Cc: Rob Herring robh...@kernel.org
Cc: Pawel Moll pawel.m...@arm.com
Cc: Mark Rutland mark.rutl...@arm.com
Cc: Ian Campbell ijc+devicet...@hellion.org.uk
Cc: Kumar Gala ga...@codeaurora.org
Cc: devicet...@vger.kernel.org
Signed-off-by: Stephen Boyd sb...@codeaurora.org
---
 Documentation/devicetree/bindings/net/micrel-ks8851.txt | 15 ---
 1 file changed, 12 insertions(+), 3 deletions(-)

diff --git a/Documentation/devicetree/bindings/net/micrel-ks8851.txt 
b/Documentation/devicetree/bindings/net/micrel-ks8851.txt
index d54d0cc79487..bbdf9a7359a2 100644
--- a/Documentation/devicetree/bindings/net/micrel-ks8851.txt
+++ b/Documentation/devicetree/bindings/net/micrel-ks8851.txt
@@ -1,9 +1,18 @@
-Micrel KS8851 Ethernet mac
+Micrel KS8851 Ethernet mac (MLL)
 
 Required properties:
-- compatible = micrel,ks8851-ml of parallel interface
+- compatible = micrel,ks8851-mll of parallel interface
 - reg : 2 physical address and size of registers for data and command
 - interrupts : interrupt connection
 
+Micrel KS8851 Ethernet mac (SPI)
+
+Required properties:
+- compatible = micrel,ks8851 or the deprecated ks8851
+- reg : chip select number
+- interrupts : interrupt connection
+
 Optional properties:
-- vdd-supply:  supply for Ethernet mac
+- vdd-supply: analog 3.3V supply for Ethernet mac
+- vdd-io-supply: digital 1.8V IO supply for Ethernet mac
+- reset-gpios: reset_n input pin
-- 
The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum,
hosted by The Linux Foundation

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


Re: [PATCH v1 01/11] ARM: amba: Add Qualcomm vendor ID.

2014-05-22 Thread Linus Walleij
On Fri, May 16, 2014 at 6:43 PM, Stephen Boyd sb...@codeaurora.org wrote:
 On 05/16/14 09:24, Linus Walleij wrote:
 On Wed, May 14, 2014 at 12:13 AM, Stephen Boyd sb...@codeaurora.org wrote:

 Please add a note that this id is fake in the commit text or in
 the code as well.
 You just need one of your hardware engineers to add is to one instance
 of some test chip round so it exists in any hardware whatsoever and it
 is not fake anymore...

 This is a bit like device tree, it's defined by the kernel community as much
 as by the hardware engineers and it's a little bit of back-and-forth.


 Sure, but hardware teams have moved on from this IP so I doubt we can
 even get them to put it into a test chip. In fact, the devices a
 generation before the ones Srini is working on (msm8660 for example)
 have a periph ID of 0x41180 so we need to override that ID in DT with
 this fake ID for things to even work.

Hehe I wasn't really suggesting doing that.

The point was to illustrate how fragile the border between real
and fake is in these cases.

Yours,
Linus Walleij
--
To unsubscribe from this list: send the line unsubscribe linux-arm-msm in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [RFC] ARM: tty: Move HVC DCC assembly to arch/arm

2014-05-22 Thread Christopher Covington
Hi Stephen,

On 10/18/2013 02:34 PM, Stephen Boyd wrote:
 On 10/18/13 11:14, Christopher Covington wrote:
 Put architecture-specific assembly code where it belongs,
 allowing for support of additional architectures such as arm64 in
 the future.
 
 Do you have that patch too? There was also a patch a year ago to add
 armv5/v4 support to this driver. Maybe we can resurrect that too.

I still haven't gotten around to testing that one.

 diff --git a/drivers/tty/hvc/hvc_dcc.c b/drivers/tty/hvc/hvc_dcc.c
 index 44fbeba..e9f0191 100644
 --- a/drivers/tty/hvc/hvc_dcc.c
 +++ b/drivers/tty/hvc/hvc_dcc.c
 @@ -8,57 +8,13 @@
   * but WITHOUT ANY WARRANTY; without even the implied warranty of
   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
   * GNU General Public License for more details.
 - *
 - * You should have received a copy of the GNU General Public License
 - * along with this program; if not, write to the Free Software
 - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
 - * 02110-1301, USA.
   */
  
 -#include linux/console.h
 -#include linux/delay.h
 -#include linux/err.h
 -#include linux/init.h
 
 We still need init.h

Fixed in v2.

Christopher

-- 
Employee of Qualcomm Innovation Center, Inc.
Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum,
hosted by the Linux Foundation.
--
To unsubscribe from this list: send the line unsubscribe linux-arm-msm in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[PATCH v2] ARM: tty: Move HVC DCC assembly to arch/arm

2014-05-22 Thread Christopher Covington
Put architecture-specific assembly code where it belongs,
allowing for support of additional architectures such as arm64 in
the future.

Signed-off-by: Christopher Covington c...@codeaurora.org
---
 arch/arm/include/asm/dcc.h | 41 +
 drivers/tty/hvc/hvc_dcc.c  | 42 ++
 2 files changed, 43 insertions(+), 40 deletions(-)
 create mode 100644 arch/arm/include/asm/dcc.h

diff --git a/arch/arm/include/asm/dcc.h b/arch/arm/include/asm/dcc.h
new file mode 100644
index 000..b74899d
--- /dev/null
+++ b/arch/arm/include/asm/dcc.h
@@ -0,0 +1,41 @@
+/* Copyright (c) 2010, 2014 The Linux Foundation. All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 and
+ * only version 2 as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ */
+
+#include asm/barrier.h
+
+static inline u32 __dcc_getstatus(void)
+{
+   u32 __ret;
+   asm volatile(mrc p14, 0, %0, c0, c1, 0 @ read comms ctrl reg
+   : =r (__ret) : : cc);
+
+   return __ret;
+}
+
+static inline char __dcc_getchar(void)
+{
+   char __c;
+
+   asm volatile(mrc p14, 0, %0, c0, c5, 0 @ read comms data reg
+   : =r (__c));
+   isb();
+
+   return __c;
+}
+
+static inline void __dcc_putchar(char c)
+{
+   asm volatile(mcr p14, 0, %0, c0, c5, 0 @ write a char
+   : /* no output register */
+   : r (c));
+   isb();
+}
diff --git a/drivers/tty/hvc/hvc_dcc.c b/drivers/tty/hvc/hvc_dcc.c
index 44fbeba..c3357b7 100644
--- a/drivers/tty/hvc/hvc_dcc.c
+++ b/drivers/tty/hvc/hvc_dcc.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2010, Code Aurora Forum. All rights reserved.
+/* Copyright (c) 2010, 2014 The Linux Foundation. All rights reserved.
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License version 2 and
@@ -8,20 +8,11 @@
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
- * 02110-1301, USA.
  */
 
-#include linux/console.h
-#include linux/delay.h
-#include linux/err.h
 #include linux/init.h
-#include linux/moduleparam.h
-#include linux/types.h
 
+#include asm/dcc.h
 #include asm/processor.h
 
 #include hvc_console.h
@@ -30,35 +21,6 @@
 #define DCC_STATUS_RX  (1  30)
 #define DCC_STATUS_TX  (1  29)
 
-static inline u32 __dcc_getstatus(void)
-{
-   u32 __ret;
-   asm volatile(mrc p14, 0, %0, c0, c1, 0 @ read comms ctrl reg
-   : =r (__ret) : : cc);
-
-   return __ret;
-}
-
-
-static inline char __dcc_getchar(void)
-{
-   char __c;
-
-   asm volatile(mrc p14, 0, %0, c0, c5, 0 @ read comms data reg
-   : =r (__c));
-   isb();
-
-   return __c;
-}
-
-static inline void __dcc_putchar(char c)
-{
-   asm volatile(mcr p14, 0, %0, c0, c5, 0 @ write a char
-   : /* no output register */
-   : r (c));
-   isb();
-}
-
 static int hvc_dcc_put_chars(uint32_t vt, const char *buf, int count)
 {
int i;
-- 
Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum,
hosted by the Linux Foundation.

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


Re: [RFC] ARM: tty: Move HVC DCC assembly to arch/arm

2014-05-22 Thread Stephen Boyd
On 05/22/14 15:05, Christopher Covington wrote:
 Hi Stephen,

 On 10/18/2013 02:34 PM, Stephen Boyd wrote:
 On 10/18/13 11:14, Christopher Covington wrote:
 Put architecture-specific assembly code where it belongs,
 allowing for support of additional architectures such as arm64 in
 the future.
 Do you have that patch too? There was also a patch a year ago to add
 armv5/v4 support to this driver. Maybe we can resurrect that too.
 I still haven't gotten around to testing that one.

It would be nice if that patch was sent along with this one, or if you
have some armv8 patch that works too. This patch by itself doesn't seem
too useful because we're just moving code around in preparation for
supporting this driver on multiple arches.

-- 
Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum,
hosted by The Linux Foundation

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