Skip to contentSkip to conversation

ARM: tty: Move HVC DCC assembly to arch/arm

RFC Superseded Christopher Covington 3 participants 7 messages Oct 18, 2013 – May 22, 2014

Subsystems (4)
lore
Share & tools
lore
#0 lore raw

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

Put architecture-specific assembly code where it belongs, allowing for support of additional architectures such as arm64 in the future.

---
 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
arch/arm/include/asm/dcc.h new file +45 -0
new file mode 100644
index 0000000..306d1fc
@@ -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();
+}
drivers/tty/hvc/hvc_dcc.c +2 -46

63 lines not on this page · raw message

Signature · 2 lines
Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum,
hosted by the Linux Foundation.
#1 lore raw
Quoted 3 lines · Christopher Covington

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.

Quoted 9 lines
drivers/tty/hvc/hvc_dcc.c +0 -1
index 44fbeba..e9f0191 100644
@@ -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.
- *

drivers/tty/hvc/hvc_dcc.c line 21

Quoted 10 lines
drivers/tty/hvc/hvc_dcc.c +0 -8
- * 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

Quoted 9 lines
drivers/tty/hvc/hvc_dcc.c +1 -3
-#include <linux/moduleparam.h>
-#include <linux/types.h>
-
+#include <asm/dcc.h>
 #include <asm/processor.h>
 
 #include "hvc_console.h"
 
 
Signature · 2 lines
Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum,
hosted by The Linux Foundation
#2 lore raw

Hi Stephen,

Quoted 7 lines · Stephen Boyd
Quoted 3 lines · Christopher Covington

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.

Quoted 15 lines
Quoted 15 lines
drivers/tty/hvc/hvc_dcc.c +0 -5
index 44fbeba..e9f0191 100644
@@ -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.
  */
 
Quoted 6 lines

drivers/tty/hvc/hvc_dcc.c line 21

Quoted 4 lines
drivers/tty/hvc/hvc_dcc.c +0 -4
-#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

Signature · 3 lines
Employee of Qualcomm Innovation Center, Inc.
Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum,
hosted by the Linux Foundation.
#3 lore raw
Quoted 10 lines · Christopher Covington

Hi Stephen,

Quoted 6 lines · Stephen Boyd
Quoted 3 lines · Christopher Covington

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.

Signature · 2 lines
Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum,
hosted by The Linux Foundation
#4 lore raw
In reply to Christopher Covington
Quoted 25 lines · Christopher Covington

Put architecture-specific assembly code where it belongs, allowing for support of additional architectures such as arm64 in the future.

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

arch/arm/include/asm/dcc.h new file +8 -0
new file mode 100644
index 0000000..306d1fc
@@ -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

arch/arm/include/asm/dcc.h line 18

Quoted 10 lines
arch/arm/include/asm/dcc.h new file +10 -0
+ * 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.

Quoted 104 lines
arch/arm/include/asm/dcc.h new file +27 -0
+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();
+}
drivers/tty/hvc/hvc_dcc.c +2 -46
index 44fbeba..e9f0191 100644
@@ -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;
Signature · 7 lines
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 at vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Signature · 2 lines
Employee of Qualcomm Innovation Center, Inc.
Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum, hosted by The Linux Foundation
#5 lore raw

Hi Kumar,

Quoted 33 lines · Kumar Gala
Quoted 30 lines · Christopher Covington

Put architecture-specific assembly code where it belongs, allowing for support of additional architectures such as arm64 in the future.

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

arch/arm/include/asm/dcc.h new file +13 -0
new file mode 100644
index 0000000..306d1fc
@@ -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>
Quoted 8 lines

arch/arm/include/asm/dcc.h line 18

Quoted 5 lines
arch/arm/include/asm/dcc.h new file +5 -0
+
+/* 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

Signature · 3 lines
Employee of Qualcomm Innovation Center, Inc.
Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum,
hosted by the Linux Foundation.
#6 lore raw

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

In reply to Christopher Covington

Put architecture-specific assembly code where it belongs, allowing for support of additional architectures such as arm64 in the future.

---
 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
arch/arm/include/asm/dcc.h new file +41 -0
new file mode 100644
index 0000000..b74899d
@@ -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();
+}
drivers/tty/hvc/hvc_dcc.c +2 -40

61 lines not on this page · raw message

Signature · 2 lines
Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum,
hosted by the Linux Foundation.