diff mbox

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

Message ID 1382120064-2459-1-git-send-email-cov@codeaurora.org (mailing list archive)
State New, archived
Headers show

Commit Message

Christopher Covington Oct. 18, 2013, 6:14 p.m. UTC
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 <cov@codeaurora.org>
---
 arch/arm/include/asm/dcc.h | 45 +++++++++++++++++++++++++++++++++++++++++++
 drivers/tty/hvc/hvc_dcc.c  | 48 ++--------------------------------------------
 2 files changed, 47 insertions(+), 46 deletions(-)
 create mode 100644 arch/arm/include/asm/dcc.h

Comments

Stephen Boyd Oct. 18, 2013, 6:34 p.m. UTC | #1
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.

> 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

> -#include <linux/moduleparam.h>
> -#include <linux/types.h>
> -
> +#include <asm/dcc.h>
>  #include <asm/processor.h>
>  
>  #include "hvc_console.h"
>  
>
Kumar Gala Oct. 23, 2013, 5:59 a.m. UTC | #2
On Oct 18, 2013, at 1:14 PM, Christopher Covington wrote:

> 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 <cov@codeaurora.org>
> ---
> arch/arm/include/asm/dcc.h | 45 +++++++++++++++++++++++++++++++++++++++++++
> drivers/tty/hvc/hvc_dcc.c  | 48 ++--------------------------------------------
> 2 files changed, 47 insertions(+), 46 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 0000000..306d1fc
> --- /dev/null
> +++ b/arch/arm/include/asm/dcc.h
> @@ -0,0 +1,45 @@
> +/* Copyright (c) 2010, 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>
> +
> +/* DCC Status Bits */
> +#define DCC_STATUS_RX		(1 << 30)
> +#define DCC_STATUS_TX		(1 << 29)
> +

Why'd you move these define's here?  They don't seem to be arch specific and I don't see them used in the asm anywhere.

> +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..e9f0191 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, 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,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>
> -#include <linux/moduleparam.h>
> -#include <linux/types.h>
> -
> +#include <asm/dcc.h>
> #include <asm/processor.h>
> 
> #include "hvc_console.h"
> 
> -/* DCC Status Bits */
> -#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 majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
Christopher Covington May 22, 2014, 10:05 p.m. UTC | #3
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
Christopher Covington May 22, 2014, 10:06 p.m. UTC | #4
Hi Kumar,

On 10/23/2013 01:59 AM, Kumar Gala wrote:
> 
> On Oct 18, 2013, at 1:14 PM, Christopher Covington wrote:
> 
>> 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 <cov@codeaurora.org>
>> ---
>> arch/arm/include/asm/dcc.h | 45 +++++++++++++++++++++++++++++++++++++++++++
>> drivers/tty/hvc/hvc_dcc.c  | 48 ++--------------------------------------------
>> 2 files changed, 47 insertions(+), 46 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 0000000..306d1fc
>> --- /dev/null
>> +++ b/arch/arm/include/asm/dcc.h
>> @@ -0,0 +1,45 @@
>> +/* Copyright (c) 2010, 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>
>> +
>> +/* DCC Status Bits */
>> +#define DCC_STATUS_RX		(1 << 30)
>> +#define DCC_STATUS_TX		(1 << 29)
>> +
> 
> Why'd you move these define's here? They don't seem to be arch specific
> and I don't see them used in the asm anywhere.

Fixed in v2.

Christopher
Stephen Boyd May 22, 2014, 10:18 p.m. UTC | #5
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.
diff mbox

Patch

diff --git a/arch/arm/include/asm/dcc.h b/arch/arm/include/asm/dcc.h
new file mode 100644
index 0000000..306d1fc
--- /dev/null
+++ b/arch/arm/include/asm/dcc.h
@@ -0,0 +1,45 @@ 
+/* Copyright (c) 2010, 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>
+
+/* DCC Status Bits */
+#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();
+}
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
@@ -1,4 +1,4 @@ 
-/* Copyright (c) 2010, Code Aurora Forum. All rights reserved.
+/* Copyright (c) 2010, 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,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>
-#include <linux/moduleparam.h>
-#include <linux/types.h>
-
+#include <asm/dcc.h>
 #include <asm/processor.h>
 
 #include "hvc_console.h"
 
-/* DCC Status Bits */
-#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;