All of lore.kernel.org
 help / color / mirror / Atom feed
* [Patch v2 0/4] Introduce drivers/soc and add QCOM GSBI driver
@ 2014-04-24 16:31 ` Andy Gross
  0 siblings, 0 replies; 26+ messages in thread
From: Andy Gross @ 2014-04-24 16:31 UTC (permalink / raw)
  To: linux-kernel
  Cc: devicetree, linux-arm-kernel, linux-arm-msm, Kumar Gala,
	Santosh Shilimkar, Greg Kroah-Hartman, Andy Gross

The first patch in this set adds the drivers/soc directory and all the necessary
plumbing.  These changes were discussed at the kernel summit and also were
introduced in an earlier patch set from Santosh Shilimkar.

Reference the following set of patches:
https://lkml.org/lkml/2014/2/28/567

The remaining patches add the QCOM GSBI (General Serial Bus Interface) driver,
device tree binding information for both the GSBI and child node interaction,
and lastly a patch to fix the current MSM serial driver to work correctly with
the GSBI changes.

Before this patch series, serial drivers (UART, I2C, and SPI) were all directly
accessing the overarching mux control settings for the parent GSBI device.  This
leads to unfortunate interactions when you want a UART and I2C device which
share the same GSBI interface.  By moving the serial devices to child nodes of
the GSBI, we can get the right mode setting for the ports and keep the children
from accessing the GSBI directly.

Changes from v1:
	- Add dt-bindings file containing definitions for MUX values
	- Fix code comments
	- Removed unnecessary code

Andy Gross (4):
  soc: Placeholder files for drivers/soc
  soc: qcom: Add device tree binding for GSBI
  soc: qcom: Add GSBI driver
  tty: serial: msm: Remove direct access to GSBI

 .../devicetree/bindings/soc/qcom/qcom,gsbi.txt     |   78 ++++++++++++++++++
 drivers/Kconfig                                    |    2 +
 drivers/Makefile                                   |    4 +
 drivers/soc/Kconfig                                |    5 ++
 drivers/soc/Makefile                               |    5 ++
 drivers/soc/qcom/Kconfig                           |   11 +++
 drivers/soc/qcom/Makefile                          |    1 +
 drivers/soc/qcom/qcom_gsbi.c                       |   84 ++++++++++++++++++++
 drivers/tty/serial/msm_serial.c                    |   48 +----------
 drivers/tty/serial/msm_serial.h                    |    5 --
 include/dt-bindings/soc/qcom,gsbi.h                |   26 ++++++
 11 files changed, 218 insertions(+), 51 deletions(-)
 create mode 100644 Documentation/devicetree/bindings/soc/qcom/qcom,gsbi.txt
 create mode 100644 drivers/soc/Kconfig
 create mode 100644 drivers/soc/Makefile
 create mode 100644 drivers/soc/qcom/Kconfig
 create mode 100644 drivers/soc/qcom/Makefile
 create mode 100644 drivers/soc/qcom/qcom_gsbi.c
 create mode 100644 include/dt-bindings/soc/qcom,gsbi.h

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

^ permalink raw reply	[flat|nested] 26+ messages in thread

* [Patch v2 0/4] Introduce drivers/soc and add QCOM GSBI driver
@ 2014-04-24 16:31 ` Andy Gross
  0 siblings, 0 replies; 26+ messages in thread
From: Andy Gross @ 2014-04-24 16:31 UTC (permalink / raw)
  To: linux-arm-kernel

The first patch in this set adds the drivers/soc directory and all the necessary
plumbing.  These changes were discussed at the kernel summit and also were
introduced in an earlier patch set from Santosh Shilimkar.

Reference the following set of patches:
https://lkml.org/lkml/2014/2/28/567

The remaining patches add the QCOM GSBI (General Serial Bus Interface) driver,
device tree binding information for both the GSBI and child node interaction,
and lastly a patch to fix the current MSM serial driver to work correctly with
the GSBI changes.

Before this patch series, serial drivers (UART, I2C, and SPI) were all directly
accessing the overarching mux control settings for the parent GSBI device.  This
leads to unfortunate interactions when you want a UART and I2C device which
share the same GSBI interface.  By moving the serial devices to child nodes of
the GSBI, we can get the right mode setting for the ports and keep the children
from accessing the GSBI directly.

Changes from v1:
	- Add dt-bindings file containing definitions for MUX values
	- Fix code comments
	- Removed unnecessary code

Andy Gross (4):
  soc: Placeholder files for drivers/soc
  soc: qcom: Add device tree binding for GSBI
  soc: qcom: Add GSBI driver
  tty: serial: msm: Remove direct access to GSBI

 .../devicetree/bindings/soc/qcom/qcom,gsbi.txt     |   78 ++++++++++++++++++
 drivers/Kconfig                                    |    2 +
 drivers/Makefile                                   |    4 +
 drivers/soc/Kconfig                                |    5 ++
 drivers/soc/Makefile                               |    5 ++
 drivers/soc/qcom/Kconfig                           |   11 +++
 drivers/soc/qcom/Makefile                          |    1 +
 drivers/soc/qcom/qcom_gsbi.c                       |   84 ++++++++++++++++++++
 drivers/tty/serial/msm_serial.c                    |   48 +----------
 drivers/tty/serial/msm_serial.h                    |    5 --
 include/dt-bindings/soc/qcom,gsbi.h                |   26 ++++++
 11 files changed, 218 insertions(+), 51 deletions(-)
 create mode 100644 Documentation/devicetree/bindings/soc/qcom/qcom,gsbi.txt
 create mode 100644 drivers/soc/Kconfig
 create mode 100644 drivers/soc/Makefile
 create mode 100644 drivers/soc/qcom/Kconfig
 create mode 100644 drivers/soc/qcom/Makefile
 create mode 100644 drivers/soc/qcom/qcom_gsbi.c
 create mode 100644 include/dt-bindings/soc/qcom,gsbi.h

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

^ permalink raw reply	[flat|nested] 26+ messages in thread

* [Patch v2 1/4] soc: Placeholder files for drivers/soc
  2014-04-24 16:31 ` Andy Gross
  (?)
@ 2014-04-24 16:31   ` Andy Gross
  -1 siblings, 0 replies; 26+ messages in thread
From: Andy Gross @ 2014-04-24 16:31 UTC (permalink / raw)
  To: linux-kernel
  Cc: devicetree, Greg Kroah-Hartman, linux-arm-msm, Andy Gross,
	Santosh Shilimkar, Kumar Gala, linux-arm-kernel

Add placeholder Kconfig and linkage for driver/soc.

The first patch set that implemented this was authored by Santosh Shilimkar:
https://lkml.org/lkml/2014/2/28/567

Signed-off-by: Andy Gross <agross@codeaurora.org>
---
 drivers/Kconfig     |    2 ++
 drivers/Makefile    |    4 ++++
 drivers/soc/Kconfig |    4 ++++
 3 files changed, 10 insertions(+)
 create mode 100644 drivers/soc/Kconfig

diff --git a/drivers/Kconfig b/drivers/Kconfig
index b3138fb..37f955f 100644
--- a/drivers/Kconfig
+++ b/drivers/Kconfig
@@ -130,6 +130,8 @@ source "drivers/staging/Kconfig"
 
 source "drivers/platform/Kconfig"
 
+source "drivers/soc/Kconfig"
+
 source "drivers/clk/Kconfig"
 
 source "drivers/hwspinlock/Kconfig"
diff --git a/drivers/Makefile b/drivers/Makefile
index 8e3b8b0..ba77e7b 100644
--- a/drivers/Makefile
+++ b/drivers/Makefile
@@ -132,6 +132,10 @@ obj-$(CONFIG_VHOST_RING)	+= vhost/
 obj-$(CONFIG_VLYNQ)		+= vlynq/
 obj-$(CONFIG_STAGING)		+= staging/
 obj-y				+= platform/
+
+# soc specific drivers
+obj-y				+= soc/
+
 #common clk code
 obj-y				+= clk/
 
diff --git a/drivers/soc/Kconfig b/drivers/soc/Kconfig
new file mode 100644
index 0000000..58bd962
--- /dev/null
+++ b/drivers/soc/Kconfig
@@ -0,0 +1,4 @@
+menu "SOC specific Drivers"
+
+endmenu
+`
-- 
The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum,
hosted by The Linux Foundation

^ permalink raw reply related	[flat|nested] 26+ messages in thread

* [Patch v2 1/4] soc: Placeholder files for drivers/soc
@ 2014-04-24 16:31   ` Andy Gross
  0 siblings, 0 replies; 26+ messages in thread
From: Andy Gross @ 2014-04-24 16:31 UTC (permalink / raw)
  To: linux-kernel
  Cc: devicetree, linux-arm-kernel, linux-arm-msm, Kumar Gala,
	Santosh Shilimkar, Greg Kroah-Hartman, Andy Gross

Add placeholder Kconfig and linkage for driver/soc.

The first patch set that implemented this was authored by Santosh Shilimkar:
https://lkml.org/lkml/2014/2/28/567

Signed-off-by: Andy Gross <agross@codeaurora.org>
---
 drivers/Kconfig     |    2 ++
 drivers/Makefile    |    4 ++++
 drivers/soc/Kconfig |    4 ++++
 3 files changed, 10 insertions(+)
 create mode 100644 drivers/soc/Kconfig

diff --git a/drivers/Kconfig b/drivers/Kconfig
index b3138fb..37f955f 100644
--- a/drivers/Kconfig
+++ b/drivers/Kconfig
@@ -130,6 +130,8 @@ source "drivers/staging/Kconfig"
 
 source "drivers/platform/Kconfig"
 
+source "drivers/soc/Kconfig"
+
 source "drivers/clk/Kconfig"
 
 source "drivers/hwspinlock/Kconfig"
diff --git a/drivers/Makefile b/drivers/Makefile
index 8e3b8b0..ba77e7b 100644
--- a/drivers/Makefile
+++ b/drivers/Makefile
@@ -132,6 +132,10 @@ obj-$(CONFIG_VHOST_RING)	+= vhost/
 obj-$(CONFIG_VLYNQ)		+= vlynq/
 obj-$(CONFIG_STAGING)		+= staging/
 obj-y				+= platform/
+
+# soc specific drivers
+obj-y				+= soc/
+
 #common clk code
 obj-y				+= clk/
 
diff --git a/drivers/soc/Kconfig b/drivers/soc/Kconfig
new file mode 100644
index 0000000..58bd962
--- /dev/null
+++ b/drivers/soc/Kconfig
@@ -0,0 +1,4 @@
+menu "SOC specific Drivers"
+
+endmenu
+`
-- 
The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum,
hosted by The Linux Foundation


^ permalink raw reply related	[flat|nested] 26+ messages in thread

* [Patch v2 1/4] soc: Placeholder files for drivers/soc
@ 2014-04-24 16:31   ` Andy Gross
  0 siblings, 0 replies; 26+ messages in thread
From: Andy Gross @ 2014-04-24 16:31 UTC (permalink / raw)
  To: linux-arm-kernel

Add placeholder Kconfig and linkage for driver/soc.

The first patch set that implemented this was authored by Santosh Shilimkar:
https://lkml.org/lkml/2014/2/28/567

Signed-off-by: Andy Gross <agross@codeaurora.org>
---
 drivers/Kconfig     |    2 ++
 drivers/Makefile    |    4 ++++
 drivers/soc/Kconfig |    4 ++++
 3 files changed, 10 insertions(+)
 create mode 100644 drivers/soc/Kconfig

diff --git a/drivers/Kconfig b/drivers/Kconfig
index b3138fb..37f955f 100644
--- a/drivers/Kconfig
+++ b/drivers/Kconfig
@@ -130,6 +130,8 @@ source "drivers/staging/Kconfig"
 
 source "drivers/platform/Kconfig"
 
+source "drivers/soc/Kconfig"
+
 source "drivers/clk/Kconfig"
 
 source "drivers/hwspinlock/Kconfig"
diff --git a/drivers/Makefile b/drivers/Makefile
index 8e3b8b0..ba77e7b 100644
--- a/drivers/Makefile
+++ b/drivers/Makefile
@@ -132,6 +132,10 @@ obj-$(CONFIG_VHOST_RING)	+= vhost/
 obj-$(CONFIG_VLYNQ)		+= vlynq/
 obj-$(CONFIG_STAGING)		+= staging/
 obj-y				+= platform/
+
+# soc specific drivers
+obj-y				+= soc/
+
 #common clk code
 obj-y				+= clk/
 
diff --git a/drivers/soc/Kconfig b/drivers/soc/Kconfig
new file mode 100644
index 0000000..58bd962
--- /dev/null
+++ b/drivers/soc/Kconfig
@@ -0,0 +1,4 @@
+menu "SOC specific Drivers"
+
+endmenu
+`
-- 
The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum,
hosted by The Linux Foundation

^ permalink raw reply related	[flat|nested] 26+ messages in thread

* [Patch v2 2/4] soc: qcom: Add device tree binding for GSBI
  2014-04-24 16:31 ` Andy Gross
@ 2014-04-24 16:31   ` Andy Gross
  -1 siblings, 0 replies; 26+ messages in thread
From: Andy Gross @ 2014-04-24 16:31 UTC (permalink / raw)
  To: linux-kernel
  Cc: devicetree, linux-arm-kernel, linux-arm-msm, Kumar Gala,
	Santosh Shilimkar, Greg Kroah-Hartman, Andy Gross

Add device tree binding support for the QCOM GSBI driver.

Signed-off-by: Andy Gross <agross@codeaurora.org>
---
 .../devicetree/bindings/soc/qcom/qcom,gsbi.txt     |   78 ++++++++++++++++++++
 include/dt-bindings/soc/qcom,gsbi.h                |   26 +++++++
 2 files changed, 104 insertions(+)
 create mode 100644 Documentation/devicetree/bindings/soc/qcom/qcom,gsbi.txt
 create mode 100644 include/dt-bindings/soc/qcom,gsbi.h

diff --git a/Documentation/devicetree/bindings/soc/qcom/qcom,gsbi.txt b/Documentation/devicetree/bindings/soc/qcom/qcom,gsbi.txt
new file mode 100644
index 0000000..4ce24d4
--- /dev/null
+++ b/Documentation/devicetree/bindings/soc/qcom/qcom,gsbi.txt
@@ -0,0 +1,78 @@
+QCOM GSBI (General Serial Bus Interface) Driver
+
+The GSBI controller is modeled as a node with zero or more child nodes, each
+representing a serial sub-node device that is mux'd as part of the GSBI
+configuration settings.  The mode setting will govern the input/output mode of
+the 4 GSBI IOs.
+
+Required properties:
+- compatible: must contain "qcom,gsbi-v1.0.0" for APQ8064/IPQ8064
+- reg: Address range for GSBI registers
+- clocks: required clock
+- clock-names: must contain "iface" entry
+- qcom,mode : indicates MUX value for configuration of the serial interface.
+  Please reference dt-bindings/soc/qcom,gsbi.h for valid mux values.
+
+Optional properties:
+- qcom,crci : indicates CRCI MUX value for QUP CRCI ports.  Please reference
+  dt-bindings/soc/qcom,gsbi.h for valid CRCI mux values.
+
+Required properties if child node exists:
+- #address-cells: Must be 1
+- #size-cells: Must be 1
+- ranges: Must be present
+
+Properties for children:
+
+A GSBI controller node can contain 0 or more child nodes representing serial
+devices.  These serial devices can be a QCOM UART, I2C controller, spi
+controller, or some combination of aforementioned devices.
+
+See the following for child node definitions:
+Documentation/devicetree/bindings/i2c/qcom,i2c-qup.txt
+Documentation/devicetree/bindings/spi/qcom,spi-qup.txt
+Documentation/devicetree/bindings/serial/qcom,msm-uartdm.txt
+
+Example for APQ8064:
+
+#include <dt-bindings/soc/qcom,gsbi.h>
+
+	gsbi4@16300000 {
+		compatible = "qcom,gsbi-v1.0.0";
+		reg = <0x16300000 0x100>;
+		clocks = <&gcc GSBI4_H_CLK>;
+		clock-names = "iface";
+		#address-cells = <1>;
+		#size-cells = <1>;
+		ranges;
+		qcom,mode = <GSBI_PROT_I2C_UART>;
+		qcom,crci = <GSBI_CRCI_QUP>;
+
+		/* child nodes go under here */
+
+		i2c_qup4: i2c@16380000 {
+		        compatible = "qcom,i2c-qup-v1.1.1";
+		        reg = <0x16380000 0x1000>;
+		        interrupts = <0 153 0>;
+
+		        clocks = <&gcc GSBI4_QUP_CLK>, <&gcc GSBI4_H_CLK>;
+		        clock-names = "core", "iface";
+
+		        clock-frequency = <200000>;
+
+		        #address-cells = <1>;
+		        #size-cells = <0>;
+
+		 };
+
+		uart4:	serial@16340000 {
+			compatible = "qcom,msm-uartdm-v1.3", "qcom,msm-uartdm";
+			reg = <0x16340000 0x1000>,
+				<0x16300000 0x1000>;
+			interrupts = <0 152 0x0>;
+			clocks = <&gcc GSBI4_UART_CLK>, <&gcc GSBI4_H_CLK>;
+			clock-names = "core", "iface";
+			status = "ok";
+		};
+	};
+
diff --git a/include/dt-bindings/soc/qcom,gsbi.h b/include/dt-bindings/soc/qcom,gsbi.h
new file mode 100644
index 0000000..7ac4292
--- /dev/null
+++ b/include/dt-bindings/soc/qcom,gsbi.h
@@ -0,0 +1,26 @@
+/* Copyright (c) 2013, 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.
+ */
+#ifndef __DT_BINDINGS_QCOM_GSBI_H
+#define __DT_BINDINGS_QCOM_GSBI_H
+
+#define GSBI_PROT_IDLE		0
+#define GSBI_PROT_I2C_UIM	1
+#define GSBI_PROT_I2C		2
+#define GSBI_PROT_SPI		3
+#define GSBI_PROT_UART_W_FC	4
+#define GSBI_PROT_UIM		5
+#define GSBI_PROT_I2C_UART	6
+
+#define GSBI_CRCI_QUP		0
+#define GSBI_CRCI_UART		1
+
+#endif
-- 
The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum,
hosted by The Linux Foundation

^ permalink raw reply related	[flat|nested] 26+ messages in thread

* [Patch v2 2/4] soc: qcom: Add device tree binding for GSBI
@ 2014-04-24 16:31   ` Andy Gross
  0 siblings, 0 replies; 26+ messages in thread
From: Andy Gross @ 2014-04-24 16:31 UTC (permalink / raw)
  To: linux-arm-kernel

Add device tree binding support for the QCOM GSBI driver.

Signed-off-by: Andy Gross <agross@codeaurora.org>
---
 .../devicetree/bindings/soc/qcom/qcom,gsbi.txt     |   78 ++++++++++++++++++++
 include/dt-bindings/soc/qcom,gsbi.h                |   26 +++++++
 2 files changed, 104 insertions(+)
 create mode 100644 Documentation/devicetree/bindings/soc/qcom/qcom,gsbi.txt
 create mode 100644 include/dt-bindings/soc/qcom,gsbi.h

diff --git a/Documentation/devicetree/bindings/soc/qcom/qcom,gsbi.txt b/Documentation/devicetree/bindings/soc/qcom/qcom,gsbi.txt
new file mode 100644
index 0000000..4ce24d4
--- /dev/null
+++ b/Documentation/devicetree/bindings/soc/qcom/qcom,gsbi.txt
@@ -0,0 +1,78 @@
+QCOM GSBI (General Serial Bus Interface) Driver
+
+The GSBI controller is modeled as a node with zero or more child nodes, each
+representing a serial sub-node device that is mux'd as part of the GSBI
+configuration settings.  The mode setting will govern the input/output mode of
+the 4 GSBI IOs.
+
+Required properties:
+- compatible: must contain "qcom,gsbi-v1.0.0" for APQ8064/IPQ8064
+- reg: Address range for GSBI registers
+- clocks: required clock
+- clock-names: must contain "iface" entry
+- qcom,mode : indicates MUX value for configuration of the serial interface.
+  Please reference dt-bindings/soc/qcom,gsbi.h for valid mux values.
+
+Optional properties:
+- qcom,crci : indicates CRCI MUX value for QUP CRCI ports.  Please reference
+  dt-bindings/soc/qcom,gsbi.h for valid CRCI mux values.
+
+Required properties if child node exists:
+- #address-cells: Must be 1
+- #size-cells: Must be 1
+- ranges: Must be present
+
+Properties for children:
+
+A GSBI controller node can contain 0 or more child nodes representing serial
+devices.  These serial devices can be a QCOM UART, I2C controller, spi
+controller, or some combination of aforementioned devices.
+
+See the following for child node definitions:
+Documentation/devicetree/bindings/i2c/qcom,i2c-qup.txt
+Documentation/devicetree/bindings/spi/qcom,spi-qup.txt
+Documentation/devicetree/bindings/serial/qcom,msm-uartdm.txt
+
+Example for APQ8064:
+
+#include <dt-bindings/soc/qcom,gsbi.h>
+
+	gsbi4 at 16300000 {
+		compatible = "qcom,gsbi-v1.0.0";
+		reg = <0x16300000 0x100>;
+		clocks = <&gcc GSBI4_H_CLK>;
+		clock-names = "iface";
+		#address-cells = <1>;
+		#size-cells = <1>;
+		ranges;
+		qcom,mode = <GSBI_PROT_I2C_UART>;
+		qcom,crci = <GSBI_CRCI_QUP>;
+
+		/* child nodes go under here */
+
+		i2c_qup4: i2c at 16380000 {
+		        compatible = "qcom,i2c-qup-v1.1.1";
+		        reg = <0x16380000 0x1000>;
+		        interrupts = <0 153 0>;
+
+		        clocks = <&gcc GSBI4_QUP_CLK>, <&gcc GSBI4_H_CLK>;
+		        clock-names = "core", "iface";
+
+		        clock-frequency = <200000>;
+
+		        #address-cells = <1>;
+		        #size-cells = <0>;
+
+		 };
+
+		uart4:	serial at 16340000 {
+			compatible = "qcom,msm-uartdm-v1.3", "qcom,msm-uartdm";
+			reg = <0x16340000 0x1000>,
+				<0x16300000 0x1000>;
+			interrupts = <0 152 0x0>;
+			clocks = <&gcc GSBI4_UART_CLK>, <&gcc GSBI4_H_CLK>;
+			clock-names = "core", "iface";
+			status = "ok";
+		};
+	};
+
diff --git a/include/dt-bindings/soc/qcom,gsbi.h b/include/dt-bindings/soc/qcom,gsbi.h
new file mode 100644
index 0000000..7ac4292
--- /dev/null
+++ b/include/dt-bindings/soc/qcom,gsbi.h
@@ -0,0 +1,26 @@
+/* Copyright (c) 2013, 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.
+ */
+#ifndef __DT_BINDINGS_QCOM_GSBI_H
+#define __DT_BINDINGS_QCOM_GSBI_H
+
+#define GSBI_PROT_IDLE		0
+#define GSBI_PROT_I2C_UIM	1
+#define GSBI_PROT_I2C		2
+#define GSBI_PROT_SPI		3
+#define GSBI_PROT_UART_W_FC	4
+#define GSBI_PROT_UIM		5
+#define GSBI_PROT_I2C_UART	6
+
+#define GSBI_CRCI_QUP		0
+#define GSBI_CRCI_UART		1
+
+#endif
-- 
The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum,
hosted by The Linux Foundation

^ permalink raw reply related	[flat|nested] 26+ messages in thread

* [Patch v2 3/4] soc: qcom: Add GSBI driver
  2014-04-24 16:31 ` Andy Gross
@ 2014-04-24 16:31   ` Andy Gross
  -1 siblings, 0 replies; 26+ messages in thread
From: Andy Gross @ 2014-04-24 16:31 UTC (permalink / raw)
  To: linux-kernel
  Cc: devicetree, linux-arm-kernel, linux-arm-msm, Kumar Gala,
	Santosh Shilimkar, Greg Kroah-Hartman, Andy Gross

The GSBI (General Serial Bus Interface) driver controls the overarching
configuration of the shared serial bus infrastructure on APQ8064, IPQ8064, and
earlier QCOM processors.  The GSBI supports UART, I2C, SPI, and UIM
functionality in various combinations.

Signed-off-by: Andy Gross <agross@codeaurora.org>
---
 drivers/soc/Kconfig          |    3 +-
 drivers/soc/Makefile         |    5 +++
 drivers/soc/qcom/Kconfig     |   11 ++++++
 drivers/soc/qcom/Makefile    |    1 +
 drivers/soc/qcom/qcom_gsbi.c |   84 ++++++++++++++++++++++++++++++++++++++++++
 5 files changed, 103 insertions(+), 1 deletion(-)
 create mode 100644 drivers/soc/Makefile
 create mode 100644 drivers/soc/qcom/Kconfig
 create mode 100644 drivers/soc/qcom/Makefile
 create mode 100644 drivers/soc/qcom/qcom_gsbi.c

diff --git a/drivers/soc/Kconfig b/drivers/soc/Kconfig
index 58bd962..07a11be 100644
--- a/drivers/soc/Kconfig
+++ b/drivers/soc/Kconfig
@@ -1,4 +1,5 @@
 menu "SOC specific Drivers"
 
+source "drivers/soc/qcom/Kconfig"
+
 endmenu
-`
diff --git a/drivers/soc/Makefile b/drivers/soc/Makefile
new file mode 100644
index 0000000..0f7c447
--- /dev/null
+++ b/drivers/soc/Makefile
@@ -0,0 +1,5 @@
+#
+# Makefile for the Linux Kernel SOC specific device drivers.
+#
+
+obj-$(CONFIG_ARCH_QCOM)		+= qcom/
diff --git a/drivers/soc/qcom/Kconfig b/drivers/soc/qcom/Kconfig
new file mode 100644
index 0000000..7bd2c94
--- /dev/null
+++ b/drivers/soc/qcom/Kconfig
@@ -0,0 +1,11 @@
+#
+# QCOM Soc drivers
+#
+config QCOM_GSBI
+        tristate "QCOM General Serial Bus Interface"
+        depends on ARCH_QCOM
+        help
+          Say y here to enable GSBI support.  The GSBI provides control
+          functions for connecting the underlying serial UART, SPI, and I2C
+          devices to the output pins.
+
diff --git a/drivers/soc/qcom/Makefile b/drivers/soc/qcom/Makefile
new file mode 100644
index 0000000..4389012
--- /dev/null
+++ b/drivers/soc/qcom/Makefile
@@ -0,0 +1 @@
+obj-$(CONFIG_QCOM_GSBI)	+=	qcom_gsbi.o
diff --git a/drivers/soc/qcom/qcom_gsbi.c b/drivers/soc/qcom/qcom_gsbi.c
new file mode 100644
index 0000000..061dd06
--- /dev/null
+++ b/drivers/soc/qcom/qcom_gsbi.c
@@ -0,0 +1,84 @@
+/*
+ * Copyright (c) 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 rev 2 and
+ * only rev 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 <linux/clk.h>
+#include <linux/err.h>
+#include <linux/io.h>
+#include <linux/module.h>
+#include <linux/of.h>
+#include <linux/of_platform.h>
+#include <linux/platform_device.h>
+
+#define GSBI_CTRL_REG		0x0000
+#define GSBI_PROTOCOL_SHIFT	4
+
+static int gsbi_probe(struct platform_device *pdev)
+{
+	struct device_node *node = pdev->dev.of_node;
+	struct resource *res;
+	void __iomem *base;
+	struct clk *hclk;
+	u32 mode, crci = 0;
+
+	res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
+	base = devm_ioremap_resource(&pdev->dev, res);
+	if (IS_ERR(base))
+		return PTR_ERR(base);
+
+	if (of_property_read_u32(node, "qcom,mode", &mode)) {
+		dev_err(&pdev->dev, "missing mode configuration\n");
+		return -EINVAL;
+	}
+
+	/* not required, so default to 0 if not present */
+	of_property_read_u32(node, "qcom,crci", &crci);
+
+	dev_info(&pdev->dev, "GSBI port protocol: %d crci: %d\n", mode, crci);
+
+	hclk = devm_clk_get(&pdev->dev, "iface");
+	if (IS_ERR(hclk))
+		return PTR_ERR(hclk);
+
+	clk_prepare_enable(hclk);
+
+	writel_relaxed((mode << GSBI_PROTOCOL_SHIFT) | crci,
+				base + GSBI_CTRL_REG);
+
+	/* make sure the gsbi control write is not reordered */
+	wmb();
+
+	clk_disable_unprepare(hclk);
+
+	return of_platform_populate(pdev->dev.of_node, NULL, NULL, &pdev->dev);
+}
+
+static const struct of_device_id gsbi_dt_match[] = {
+	{ .compatible = "qcom,gsbi-v1.0.0", },
+};
+
+MODULE_DEVICE_TABLE(of, gsbi_dt_match);
+
+static struct platform_driver gsbi_driver = {
+	.driver = {
+		.name		= "gsbi",
+		.owner		= THIS_MODULE,
+		.of_match_table	= gsbi_dt_match,
+	},
+	.probe = gsbi_probe,
+};
+
+module_platform_driver(gsbi_driver);
+
+MODULE_AUTHOR("Andy Gross <agross@codeaurora.org>");
+MODULE_DESCRIPTION("QCOM GSBI driver");
+MODULE_LICENSE("GPL v2");
-- 
The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum,
hosted by The Linux Foundation

^ permalink raw reply related	[flat|nested] 26+ messages in thread

* [Patch v2 3/4] soc: qcom: Add GSBI driver
@ 2014-04-24 16:31   ` Andy Gross
  0 siblings, 0 replies; 26+ messages in thread
From: Andy Gross @ 2014-04-24 16:31 UTC (permalink / raw)
  To: linux-arm-kernel

The GSBI (General Serial Bus Interface) driver controls the overarching
configuration of the shared serial bus infrastructure on APQ8064, IPQ8064, and
earlier QCOM processors.  The GSBI supports UART, I2C, SPI, and UIM
functionality in various combinations.

Signed-off-by: Andy Gross <agross@codeaurora.org>
---
 drivers/soc/Kconfig          |    3 +-
 drivers/soc/Makefile         |    5 +++
 drivers/soc/qcom/Kconfig     |   11 ++++++
 drivers/soc/qcom/Makefile    |    1 +
 drivers/soc/qcom/qcom_gsbi.c |   84 ++++++++++++++++++++++++++++++++++++++++++
 5 files changed, 103 insertions(+), 1 deletion(-)
 create mode 100644 drivers/soc/Makefile
 create mode 100644 drivers/soc/qcom/Kconfig
 create mode 100644 drivers/soc/qcom/Makefile
 create mode 100644 drivers/soc/qcom/qcom_gsbi.c

diff --git a/drivers/soc/Kconfig b/drivers/soc/Kconfig
index 58bd962..07a11be 100644
--- a/drivers/soc/Kconfig
+++ b/drivers/soc/Kconfig
@@ -1,4 +1,5 @@
 menu "SOC specific Drivers"
 
+source "drivers/soc/qcom/Kconfig"
+
 endmenu
-`
diff --git a/drivers/soc/Makefile b/drivers/soc/Makefile
new file mode 100644
index 0000000..0f7c447
--- /dev/null
+++ b/drivers/soc/Makefile
@@ -0,0 +1,5 @@
+#
+# Makefile for the Linux Kernel SOC specific device drivers.
+#
+
+obj-$(CONFIG_ARCH_QCOM)		+= qcom/
diff --git a/drivers/soc/qcom/Kconfig b/drivers/soc/qcom/Kconfig
new file mode 100644
index 0000000..7bd2c94
--- /dev/null
+++ b/drivers/soc/qcom/Kconfig
@@ -0,0 +1,11 @@
+#
+# QCOM Soc drivers
+#
+config QCOM_GSBI
+        tristate "QCOM General Serial Bus Interface"
+        depends on ARCH_QCOM
+        help
+          Say y here to enable GSBI support.  The GSBI provides control
+          functions for connecting the underlying serial UART, SPI, and I2C
+          devices to the output pins.
+
diff --git a/drivers/soc/qcom/Makefile b/drivers/soc/qcom/Makefile
new file mode 100644
index 0000000..4389012
--- /dev/null
+++ b/drivers/soc/qcom/Makefile
@@ -0,0 +1 @@
+obj-$(CONFIG_QCOM_GSBI)	+=	qcom_gsbi.o
diff --git a/drivers/soc/qcom/qcom_gsbi.c b/drivers/soc/qcom/qcom_gsbi.c
new file mode 100644
index 0000000..061dd06
--- /dev/null
+++ b/drivers/soc/qcom/qcom_gsbi.c
@@ -0,0 +1,84 @@
+/*
+ * Copyright (c) 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 rev 2 and
+ * only rev 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 <linux/clk.h>
+#include <linux/err.h>
+#include <linux/io.h>
+#include <linux/module.h>
+#include <linux/of.h>
+#include <linux/of_platform.h>
+#include <linux/platform_device.h>
+
+#define GSBI_CTRL_REG		0x0000
+#define GSBI_PROTOCOL_SHIFT	4
+
+static int gsbi_probe(struct platform_device *pdev)
+{
+	struct device_node *node = pdev->dev.of_node;
+	struct resource *res;
+	void __iomem *base;
+	struct clk *hclk;
+	u32 mode, crci = 0;
+
+	res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
+	base = devm_ioremap_resource(&pdev->dev, res);
+	if (IS_ERR(base))
+		return PTR_ERR(base);
+
+	if (of_property_read_u32(node, "qcom,mode", &mode)) {
+		dev_err(&pdev->dev, "missing mode configuration\n");
+		return -EINVAL;
+	}
+
+	/* not required, so default to 0 if not present */
+	of_property_read_u32(node, "qcom,crci", &crci);
+
+	dev_info(&pdev->dev, "GSBI port protocol: %d crci: %d\n", mode, crci);
+
+	hclk = devm_clk_get(&pdev->dev, "iface");
+	if (IS_ERR(hclk))
+		return PTR_ERR(hclk);
+
+	clk_prepare_enable(hclk);
+
+	writel_relaxed((mode << GSBI_PROTOCOL_SHIFT) | crci,
+				base + GSBI_CTRL_REG);
+
+	/* make sure the gsbi control write is not reordered */
+	wmb();
+
+	clk_disable_unprepare(hclk);
+
+	return of_platform_populate(pdev->dev.of_node, NULL, NULL, &pdev->dev);
+}
+
+static const struct of_device_id gsbi_dt_match[] = {
+	{ .compatible = "qcom,gsbi-v1.0.0", },
+};
+
+MODULE_DEVICE_TABLE(of, gsbi_dt_match);
+
+static struct platform_driver gsbi_driver = {
+	.driver = {
+		.name		= "gsbi",
+		.owner		= THIS_MODULE,
+		.of_match_table	= gsbi_dt_match,
+	},
+	.probe = gsbi_probe,
+};
+
+module_platform_driver(gsbi_driver);
+
+MODULE_AUTHOR("Andy Gross <agross@codeaurora.org>");
+MODULE_DESCRIPTION("QCOM GSBI driver");
+MODULE_LICENSE("GPL v2");
-- 
The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum,
hosted by The Linux Foundation

^ permalink raw reply related	[flat|nested] 26+ messages in thread

* [Patch v2 4/4] tty: serial: msm: Remove direct access to GSBI
  2014-04-24 16:31 ` Andy Gross
  (?)
@ 2014-04-24 16:31   ` Andy Gross
  -1 siblings, 0 replies; 26+ messages in thread
From: Andy Gross @ 2014-04-24 16:31 UTC (permalink / raw)
  To: linux-kernel
  Cc: devicetree, Greg Kroah-Hartman, linux-arm-msm, Andy Gross,
	Santosh Shilimkar, Kumar Gala, linux-arm-kernel

This patch removes direct access of the GSBI registers.  GSBI configuration
should be done through the GSBI driver directly.

Signed-off-by: Andy Gross <agross@codeaurora.org>
---
 drivers/tty/serial/msm_serial.c |   48 ++-------------------------------------
 drivers/tty/serial/msm_serial.h |    5 ----
 2 files changed, 2 insertions(+), 51 deletions(-)

diff --git a/drivers/tty/serial/msm_serial.c b/drivers/tty/serial/msm_serial.c
index b5d779c..8901114 100644
--- a/drivers/tty/serial/msm_serial.c
+++ b/drivers/tty/serial/msm_serial.c
@@ -45,7 +45,6 @@ struct msm_port {
 	struct clk		*clk;
 	struct clk		*pclk;
 	unsigned int		imr;
-	void __iomem		*gsbi_base;
 	int			is_uartdm;
 	unsigned int		old_snap_state;
 };
@@ -586,9 +585,7 @@ static const char *msm_type(struct uart_port *port)
 static void msm_release_port(struct uart_port *port)
 {
 	struct platform_device *pdev = to_platform_device(port->dev);
-	struct msm_port *msm_port = UART_TO_MSM(port);
 	struct resource *uart_resource;
-	struct resource *gsbi_resource;
 	resource_size_t size;
 
 	uart_resource = platform_get_resource(pdev, IORESOURCE_MEM, 0);
@@ -599,28 +596,12 @@ static void msm_release_port(struct uart_port *port)
 	release_mem_region(port->mapbase, size);
 	iounmap(port->membase);
 	port->membase = NULL;
-
-	if (msm_port->gsbi_base) {
-		writel_relaxed(GSBI_PROTOCOL_IDLE,
-				msm_port->gsbi_base + GSBI_CONTROL);
-
-		gsbi_resource = platform_get_resource(pdev, IORESOURCE_MEM, 1);
-		if (unlikely(!gsbi_resource))
-			return;
-
-		size = resource_size(gsbi_resource);
-		release_mem_region(gsbi_resource->start, size);
-		iounmap(msm_port->gsbi_base);
-		msm_port->gsbi_base = NULL;
-	}
 }
 
 static int msm_request_port(struct uart_port *port)
 {
-	struct msm_port *msm_port = UART_TO_MSM(port);
 	struct platform_device *pdev = to_platform_device(port->dev);
 	struct resource *uart_resource;
-	struct resource *gsbi_resource;
 	resource_size_t size;
 	int ret;
 
@@ -639,30 +620,8 @@ static int msm_request_port(struct uart_port *port)
 		goto fail_release_port;
 	}
 
-	gsbi_resource = platform_get_resource(pdev, IORESOURCE_MEM, 1);
-	/* Is this a GSBI-based port? */
-	if (gsbi_resource) {
-		size = resource_size(gsbi_resource);
-
-		if (!request_mem_region(gsbi_resource->start, size,
-						 "msm_serial")) {
-			ret = -EBUSY;
-			goto fail_release_port_membase;
-		}
-
-		msm_port->gsbi_base = ioremap(gsbi_resource->start, size);
-		if (!msm_port->gsbi_base) {
-			ret = -EBUSY;
-			goto fail_release_gsbi;
-		}
-	}
-
 	return 0;
 
-fail_release_gsbi:
-	release_mem_region(gsbi_resource->start, size);
-fail_release_port_membase:
-	iounmap(port->membase);
 fail_release_port:
 	release_mem_region(port->mapbase, size);
 	return ret;
@@ -670,7 +629,6 @@ fail_release_port:
 
 static void msm_config_port(struct uart_port *port, int flags)
 {
-	struct msm_port *msm_port = UART_TO_MSM(port);
 	int ret;
 	if (flags & UART_CONFIG_TYPE) {
 		port->type = PORT_MSM;
@@ -678,9 +636,6 @@ static void msm_config_port(struct uart_port *port, int flags)
 		if (ret)
 			return;
 	}
-	if (msm_port->gsbi_base)
-		writel_relaxed(GSBI_PROTOCOL_UART,
-				msm_port->gsbi_base + GSBI_CONTROL);
 }
 
 static int msm_verify_port(struct uart_port *port, struct serial_struct *ser)
@@ -976,6 +931,7 @@ static struct of_device_id msm_match_table[] = {
 
 static struct platform_driver msm_platform_driver = {
 	.remove = msm_serial_remove,
+	.probe = msm_serial_probe,
 	.driver = {
 		.name = "msm_serial",
 		.owner = THIS_MODULE,
@@ -991,7 +947,7 @@ static int __init msm_serial_init(void)
 	if (unlikely(ret))
 		return ret;
 
-	ret = platform_driver_probe(&msm_platform_driver, msm_serial_probe);
+	ret = platform_driver_register(&msm_platform_driver);
 	if (unlikely(ret))
 		uart_unregister_driver(&msm_uart_driver);
 
diff --git a/drivers/tty/serial/msm_serial.h b/drivers/tty/serial/msm_serial.h
index 469fda5..a77cc76 100644
--- a/drivers/tty/serial/msm_serial.h
+++ b/drivers/tty/serial/msm_serial.h
@@ -108,11 +108,6 @@
 #define UART_ISR		0x0014
 #define UART_ISR_TX_READY	(1 << 7)
 
-#define GSBI_CONTROL		0x0
-#define GSBI_PROTOCOL_CODE	0x30
-#define GSBI_PROTOCOL_UART	0x40
-#define GSBI_PROTOCOL_IDLE	0x0
-
 #define UARTDM_DMRX		0x34
 #define UARTDM_NCF_TX		0x40
 #define UARTDM_RX_TOTAL_SNAP	0x38
-- 
The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum,
hosted by The Linux Foundation

^ permalink raw reply related	[flat|nested] 26+ messages in thread

* [Patch v2 4/4] tty: serial: msm: Remove direct access to GSBI
@ 2014-04-24 16:31   ` Andy Gross
  0 siblings, 0 replies; 26+ messages in thread
From: Andy Gross @ 2014-04-24 16:31 UTC (permalink / raw)
  To: linux-kernel
  Cc: devicetree, linux-arm-kernel, linux-arm-msm, Kumar Gala,
	Santosh Shilimkar, Greg Kroah-Hartman, Andy Gross

This patch removes direct access of the GSBI registers.  GSBI configuration
should be done through the GSBI driver directly.

Signed-off-by: Andy Gross <agross@codeaurora.org>
---
 drivers/tty/serial/msm_serial.c |   48 ++-------------------------------------
 drivers/tty/serial/msm_serial.h |    5 ----
 2 files changed, 2 insertions(+), 51 deletions(-)

diff --git a/drivers/tty/serial/msm_serial.c b/drivers/tty/serial/msm_serial.c
index b5d779c..8901114 100644
--- a/drivers/tty/serial/msm_serial.c
+++ b/drivers/tty/serial/msm_serial.c
@@ -45,7 +45,6 @@ struct msm_port {
 	struct clk		*clk;
 	struct clk		*pclk;
 	unsigned int		imr;
-	void __iomem		*gsbi_base;
 	int			is_uartdm;
 	unsigned int		old_snap_state;
 };
@@ -586,9 +585,7 @@ static const char *msm_type(struct uart_port *port)
 static void msm_release_port(struct uart_port *port)
 {
 	struct platform_device *pdev = to_platform_device(port->dev);
-	struct msm_port *msm_port = UART_TO_MSM(port);
 	struct resource *uart_resource;
-	struct resource *gsbi_resource;
 	resource_size_t size;
 
 	uart_resource = platform_get_resource(pdev, IORESOURCE_MEM, 0);
@@ -599,28 +596,12 @@ static void msm_release_port(struct uart_port *port)
 	release_mem_region(port->mapbase, size);
 	iounmap(port->membase);
 	port->membase = NULL;
-
-	if (msm_port->gsbi_base) {
-		writel_relaxed(GSBI_PROTOCOL_IDLE,
-				msm_port->gsbi_base + GSBI_CONTROL);
-
-		gsbi_resource = platform_get_resource(pdev, IORESOURCE_MEM, 1);
-		if (unlikely(!gsbi_resource))
-			return;
-
-		size = resource_size(gsbi_resource);
-		release_mem_region(gsbi_resource->start, size);
-		iounmap(msm_port->gsbi_base);
-		msm_port->gsbi_base = NULL;
-	}
 }
 
 static int msm_request_port(struct uart_port *port)
 {
-	struct msm_port *msm_port = UART_TO_MSM(port);
 	struct platform_device *pdev = to_platform_device(port->dev);
 	struct resource *uart_resource;
-	struct resource *gsbi_resource;
 	resource_size_t size;
 	int ret;
 
@@ -639,30 +620,8 @@ static int msm_request_port(struct uart_port *port)
 		goto fail_release_port;
 	}
 
-	gsbi_resource = platform_get_resource(pdev, IORESOURCE_MEM, 1);
-	/* Is this a GSBI-based port? */
-	if (gsbi_resource) {
-		size = resource_size(gsbi_resource);
-
-		if (!request_mem_region(gsbi_resource->start, size,
-						 "msm_serial")) {
-			ret = -EBUSY;
-			goto fail_release_port_membase;
-		}
-
-		msm_port->gsbi_base = ioremap(gsbi_resource->start, size);
-		if (!msm_port->gsbi_base) {
-			ret = -EBUSY;
-			goto fail_release_gsbi;
-		}
-	}
-
 	return 0;
 
-fail_release_gsbi:
-	release_mem_region(gsbi_resource->start, size);
-fail_release_port_membase:
-	iounmap(port->membase);
 fail_release_port:
 	release_mem_region(port->mapbase, size);
 	return ret;
@@ -670,7 +629,6 @@ fail_release_port:
 
 static void msm_config_port(struct uart_port *port, int flags)
 {
-	struct msm_port *msm_port = UART_TO_MSM(port);
 	int ret;
 	if (flags & UART_CONFIG_TYPE) {
 		port->type = PORT_MSM;
@@ -678,9 +636,6 @@ static void msm_config_port(struct uart_port *port, int flags)
 		if (ret)
 			return;
 	}
-	if (msm_port->gsbi_base)
-		writel_relaxed(GSBI_PROTOCOL_UART,
-				msm_port->gsbi_base + GSBI_CONTROL);
 }
 
 static int msm_verify_port(struct uart_port *port, struct serial_struct *ser)
@@ -976,6 +931,7 @@ static struct of_device_id msm_match_table[] = {
 
 static struct platform_driver msm_platform_driver = {
 	.remove = msm_serial_remove,
+	.probe = msm_serial_probe,
 	.driver = {
 		.name = "msm_serial",
 		.owner = THIS_MODULE,
@@ -991,7 +947,7 @@ static int __init msm_serial_init(void)
 	if (unlikely(ret))
 		return ret;
 
-	ret = platform_driver_probe(&msm_platform_driver, msm_serial_probe);
+	ret = platform_driver_register(&msm_platform_driver);
 	if (unlikely(ret))
 		uart_unregister_driver(&msm_uart_driver);
 
diff --git a/drivers/tty/serial/msm_serial.h b/drivers/tty/serial/msm_serial.h
index 469fda5..a77cc76 100644
--- a/drivers/tty/serial/msm_serial.h
+++ b/drivers/tty/serial/msm_serial.h
@@ -108,11 +108,6 @@
 #define UART_ISR		0x0014
 #define UART_ISR_TX_READY	(1 << 7)
 
-#define GSBI_CONTROL		0x0
-#define GSBI_PROTOCOL_CODE	0x30
-#define GSBI_PROTOCOL_UART	0x40
-#define GSBI_PROTOCOL_IDLE	0x0
-
 #define UARTDM_DMRX		0x34
 #define UARTDM_NCF_TX		0x40
 #define UARTDM_RX_TOTAL_SNAP	0x38
-- 
The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum,
hosted by The Linux Foundation


^ permalink raw reply related	[flat|nested] 26+ messages in thread

* [Patch v2 4/4] tty: serial: msm: Remove direct access to GSBI
@ 2014-04-24 16:31   ` Andy Gross
  0 siblings, 0 replies; 26+ messages in thread
From: Andy Gross @ 2014-04-24 16:31 UTC (permalink / raw)
  To: linux-arm-kernel

This patch removes direct access of the GSBI registers.  GSBI configuration
should be done through the GSBI driver directly.

Signed-off-by: Andy Gross <agross@codeaurora.org>
---
 drivers/tty/serial/msm_serial.c |   48 ++-------------------------------------
 drivers/tty/serial/msm_serial.h |    5 ----
 2 files changed, 2 insertions(+), 51 deletions(-)

diff --git a/drivers/tty/serial/msm_serial.c b/drivers/tty/serial/msm_serial.c
index b5d779c..8901114 100644
--- a/drivers/tty/serial/msm_serial.c
+++ b/drivers/tty/serial/msm_serial.c
@@ -45,7 +45,6 @@ struct msm_port {
 	struct clk		*clk;
 	struct clk		*pclk;
 	unsigned int		imr;
-	void __iomem		*gsbi_base;
 	int			is_uartdm;
 	unsigned int		old_snap_state;
 };
@@ -586,9 +585,7 @@ static const char *msm_type(struct uart_port *port)
 static void msm_release_port(struct uart_port *port)
 {
 	struct platform_device *pdev = to_platform_device(port->dev);
-	struct msm_port *msm_port = UART_TO_MSM(port);
 	struct resource *uart_resource;
-	struct resource *gsbi_resource;
 	resource_size_t size;
 
 	uart_resource = platform_get_resource(pdev, IORESOURCE_MEM, 0);
@@ -599,28 +596,12 @@ static void msm_release_port(struct uart_port *port)
 	release_mem_region(port->mapbase, size);
 	iounmap(port->membase);
 	port->membase = NULL;
-
-	if (msm_port->gsbi_base) {
-		writel_relaxed(GSBI_PROTOCOL_IDLE,
-				msm_port->gsbi_base + GSBI_CONTROL);
-
-		gsbi_resource = platform_get_resource(pdev, IORESOURCE_MEM, 1);
-		if (unlikely(!gsbi_resource))
-			return;
-
-		size = resource_size(gsbi_resource);
-		release_mem_region(gsbi_resource->start, size);
-		iounmap(msm_port->gsbi_base);
-		msm_port->gsbi_base = NULL;
-	}
 }
 
 static int msm_request_port(struct uart_port *port)
 {
-	struct msm_port *msm_port = UART_TO_MSM(port);
 	struct platform_device *pdev = to_platform_device(port->dev);
 	struct resource *uart_resource;
-	struct resource *gsbi_resource;
 	resource_size_t size;
 	int ret;
 
@@ -639,30 +620,8 @@ static int msm_request_port(struct uart_port *port)
 		goto fail_release_port;
 	}
 
-	gsbi_resource = platform_get_resource(pdev, IORESOURCE_MEM, 1);
-	/* Is this a GSBI-based port? */
-	if (gsbi_resource) {
-		size = resource_size(gsbi_resource);
-
-		if (!request_mem_region(gsbi_resource->start, size,
-						 "msm_serial")) {
-			ret = -EBUSY;
-			goto fail_release_port_membase;
-		}
-
-		msm_port->gsbi_base = ioremap(gsbi_resource->start, size);
-		if (!msm_port->gsbi_base) {
-			ret = -EBUSY;
-			goto fail_release_gsbi;
-		}
-	}
-
 	return 0;
 
-fail_release_gsbi:
-	release_mem_region(gsbi_resource->start, size);
-fail_release_port_membase:
-	iounmap(port->membase);
 fail_release_port:
 	release_mem_region(port->mapbase, size);
 	return ret;
@@ -670,7 +629,6 @@ fail_release_port:
 
 static void msm_config_port(struct uart_port *port, int flags)
 {
-	struct msm_port *msm_port = UART_TO_MSM(port);
 	int ret;
 	if (flags & UART_CONFIG_TYPE) {
 		port->type = PORT_MSM;
@@ -678,9 +636,6 @@ static void msm_config_port(struct uart_port *port, int flags)
 		if (ret)
 			return;
 	}
-	if (msm_port->gsbi_base)
-		writel_relaxed(GSBI_PROTOCOL_UART,
-				msm_port->gsbi_base + GSBI_CONTROL);
 }
 
 static int msm_verify_port(struct uart_port *port, struct serial_struct *ser)
@@ -976,6 +931,7 @@ static struct of_device_id msm_match_table[] = {
 
 static struct platform_driver msm_platform_driver = {
 	.remove = msm_serial_remove,
+	.probe = msm_serial_probe,
 	.driver = {
 		.name = "msm_serial",
 		.owner = THIS_MODULE,
@@ -991,7 +947,7 @@ static int __init msm_serial_init(void)
 	if (unlikely(ret))
 		return ret;
 
-	ret = platform_driver_probe(&msm_platform_driver, msm_serial_probe);
+	ret = platform_driver_register(&msm_platform_driver);
 	if (unlikely(ret))
 		uart_unregister_driver(&msm_uart_driver);
 
diff --git a/drivers/tty/serial/msm_serial.h b/drivers/tty/serial/msm_serial.h
index 469fda5..a77cc76 100644
--- a/drivers/tty/serial/msm_serial.h
+++ b/drivers/tty/serial/msm_serial.h
@@ -108,11 +108,6 @@
 #define UART_ISR		0x0014
 #define UART_ISR_TX_READY	(1 << 7)
 
-#define GSBI_CONTROL		0x0
-#define GSBI_PROTOCOL_CODE	0x30
-#define GSBI_PROTOCOL_UART	0x40
-#define GSBI_PROTOCOL_IDLE	0x0
-
 #define UARTDM_DMRX		0x34
 #define UARTDM_NCF_TX		0x40
 #define UARTDM_RX_TOTAL_SNAP	0x38
-- 
The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum,
hosted by The Linux Foundation

^ permalink raw reply related	[flat|nested] 26+ messages in thread

* Re: [Patch v2 1/4] soc: Placeholder files for drivers/soc
  2014-04-24 16:31   ` Andy Gross
  (?)
@ 2014-04-24 16:36     ` Santosh Shilimkar
  -1 siblings, 0 replies; 26+ messages in thread
From: Santosh Shilimkar @ 2014-04-24 16:36 UTC (permalink / raw)
  To: Andy Gross, linux-kernel
  Cc: devicetree, linux-arm-kernel, linux-arm-msm, Kumar Gala,
	Greg Kroah-Hartman

On Thursday 24 April 2014 12:31 PM, Andy Gross wrote:
> Add placeholder Kconfig and linkage for driver/soc.
> 
> The first patch set that implemented this was authored by Santosh Shilimkar:
> https://lkml.org/lkml/2014/2/28/567
> 
> Signed-off-by: Andy Gross <agross@codeaurora.org>
> ---
Good to see these patches on the list. Me and Kumar spoke about it
many times before.

BTW, I just posted updated version. Feel free to use the from it instead
of 4subject one.

Regards,
Santosh

^ permalink raw reply	[flat|nested] 26+ messages in thread

* Re: [Patch v2 1/4] soc: Placeholder files for drivers/soc
@ 2014-04-24 16:36     ` Santosh Shilimkar
  0 siblings, 0 replies; 26+ messages in thread
From: Santosh Shilimkar @ 2014-04-24 16:36 UTC (permalink / raw)
  To: Andy Gross, linux-kernel
  Cc: devicetree, linux-arm-kernel, linux-arm-msm, Kumar Gala,
	Greg Kroah-Hartman

On Thursday 24 April 2014 12:31 PM, Andy Gross wrote:
> Add placeholder Kconfig and linkage for driver/soc.
> 
> The first patch set that implemented this was authored by Santosh Shilimkar:
> https://lkml.org/lkml/2014/2/28/567
> 
> Signed-off-by: Andy Gross <agross@codeaurora.org>
> ---
Good to see these patches on the list. Me and Kumar spoke about it
many times before.

BTW, I just posted updated version. Feel free to use the from it instead
of 4subject one.

Regards,
Santosh

^ permalink raw reply	[flat|nested] 26+ messages in thread

* [Patch v2 1/4] soc: Placeholder files for drivers/soc
@ 2014-04-24 16:36     ` Santosh Shilimkar
  0 siblings, 0 replies; 26+ messages in thread
From: Santosh Shilimkar @ 2014-04-24 16:36 UTC (permalink / raw)
  To: linux-arm-kernel

On Thursday 24 April 2014 12:31 PM, Andy Gross wrote:
> Add placeholder Kconfig and linkage for driver/soc.
> 
> The first patch set that implemented this was authored by Santosh Shilimkar:
> https://lkml.org/lkml/2014/2/28/567
> 
> Signed-off-by: Andy Gross <agross@codeaurora.org>
> ---
Good to see these patches on the list. Me and Kumar spoke about it
many times before.

BTW, I just posted updated version. Feel free to use the from it instead
of 4subject one.

Regards,
Santosh

^ permalink raw reply	[flat|nested] 26+ messages in thread

* Re: [Patch v2 1/4] soc: Placeholder files for drivers/soc
  2014-04-24 16:36     ` Santosh Shilimkar
@ 2014-05-06 17:06       ` Kumar Gala
  -1 siblings, 0 replies; 26+ messages in thread
From: Kumar Gala @ 2014-05-06 17:06 UTC (permalink / raw)
  To: Paul Walmsley
  Cc: Andy Gross, linux-kernel, devicetree, linux-arm-kernel,
	linux-arm-msm, Greg Kroah-Hartman, Santosh Shilimkar


On Apr 24, 2014, at 9:36 AM, Santosh Shilimkar <santosh.shilimkar@ti.com> wrote:

> On Thursday 24 April 2014 12:31 PM, Andy Gross wrote:
>> Add placeholder Kconfig and linkage for driver/soc.
>> 
>> The first patch set that implemented this was authored by Santosh Shilimkar:
>> https://lkml.org/lkml/2014/2/28/567
>> 
>> Signed-off-by: Andy Gross <agross@codeaurora.org>
>> ---
> Good to see these patches on the list. Me and Kumar spoke about it
> many times before.
> 
> BTW, I just posted updated version. Feel free to use the from it instead
> of 4subject one.
> 
> Regards,
> Santosh
> --
> 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

Paul,

Did you have any other thoughts on this, do we want to add more to Santosh’s patch w/regards to comments or MAINTAINERs?

- k

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

^ permalink raw reply	[flat|nested] 26+ messages in thread

* [Patch v2 1/4] soc: Placeholder files for drivers/soc
@ 2014-05-06 17:06       ` Kumar Gala
  0 siblings, 0 replies; 26+ messages in thread
From: Kumar Gala @ 2014-05-06 17:06 UTC (permalink / raw)
  To: linux-arm-kernel


On Apr 24, 2014, at 9:36 AM, Santosh Shilimkar <santosh.shilimkar@ti.com> wrote:

> On Thursday 24 April 2014 12:31 PM, Andy Gross wrote:
>> Add placeholder Kconfig and linkage for driver/soc.
>> 
>> The first patch set that implemented this was authored by Santosh Shilimkar:
>> https://lkml.org/lkml/2014/2/28/567
>> 
>> Signed-off-by: Andy Gross <agross@codeaurora.org>
>> ---
> Good to see these patches on the list. Me and Kumar spoke about it
> many times before.
> 
> BTW, I just posted updated version. Feel free to use the from it instead
> of 4subject one.
> 
> Regards,
> Santosh
> --
> 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

Paul,

Did you have any other thoughts on this, do we want to add more to Santosh?s patch w/regards to comments or MAINTAINERs?

- k

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

^ permalink raw reply	[flat|nested] 26+ messages in thread

* Re: [Patch v2 3/4] soc: qcom: Add GSBI driver
  2014-04-24 16:31   ` Andy Gross
@ 2014-05-23 18:52     ` Stephen Boyd
  -1 siblings, 0 replies; 26+ messages in thread
From: Stephen Boyd @ 2014-05-23 18:52 UTC (permalink / raw)
  To: Andy Gross, Kumar Gala
  Cc: linux-kernel, devicetree, linux-arm-kernel, linux-arm-msm,
	Santosh Shilimkar, Greg Kroah-Hartman

On 04/24/14 09:31, Andy Gross wrote:
> +
> +static const struct of_device_id gsbi_dt_match[] = {
> +	{ .compatible = "qcom,gsbi-v1.0.0", },
> +};

Eek. This isn't NULL terminated.


-----8<---

From: Stephen Boyd <sboyd@codeaurora.org>
Subject: [PATCH] soc: qcom: Terminate gsbi of match table

Failure to terminate this match table can lead to boot failures
depending on where the compiler places the match table.

Signed-off-by: Stephen Boyd <sboyd@codeaurora.org>
---
 drivers/soc/qcom/qcom_gsbi.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/drivers/soc/qcom/qcom_gsbi.c b/drivers/soc/qcom/qcom_gsbi.c
index 061dd0632dbd..ab7b441c9980 100644
--- a/drivers/soc/qcom/qcom_gsbi.c
+++ b/drivers/soc/qcom/qcom_gsbi.c
@@ -64,6 +64,7 @@ static int gsbi_probe(struct platform_device *pdev)
 
 static const struct of_device_id gsbi_dt_match[] = {
 	{ .compatible = "qcom,gsbi-v1.0.0", },
+	{ }
 };
 
 MODULE_DEVICE_TABLE(of, gsbi_dt_match);

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

^ permalink raw reply related	[flat|nested] 26+ messages in thread

* [Patch v2 3/4] soc: qcom: Add GSBI driver
@ 2014-05-23 18:52     ` Stephen Boyd
  0 siblings, 0 replies; 26+ messages in thread
From: Stephen Boyd @ 2014-05-23 18:52 UTC (permalink / raw)
  To: linux-arm-kernel

On 04/24/14 09:31, Andy Gross wrote:
> +
> +static const struct of_device_id gsbi_dt_match[] = {
> +	{ .compatible = "qcom,gsbi-v1.0.0", },
> +};

Eek. This isn't NULL terminated.


-----8<---

From: Stephen Boyd <sboyd@codeaurora.org>
Subject: [PATCH] soc: qcom: Terminate gsbi of match table

Failure to terminate this match table can lead to boot failures
depending on where the compiler places the match table.

Signed-off-by: Stephen Boyd <sboyd@codeaurora.org>
---
 drivers/soc/qcom/qcom_gsbi.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/drivers/soc/qcom/qcom_gsbi.c b/drivers/soc/qcom/qcom_gsbi.c
index 061dd0632dbd..ab7b441c9980 100644
--- a/drivers/soc/qcom/qcom_gsbi.c
+++ b/drivers/soc/qcom/qcom_gsbi.c
@@ -64,6 +64,7 @@ static int gsbi_probe(struct platform_device *pdev)
 
 static const struct of_device_id gsbi_dt_match[] = {
 	{ .compatible = "qcom,gsbi-v1.0.0", },
+	{ }
 };
 
 MODULE_DEVICE_TABLE(of, gsbi_dt_match);

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

^ permalink raw reply related	[flat|nested] 26+ messages in thread

* Re: [Patch v2 4/4] tty: serial: msm: Remove direct access to GSBI
  2014-04-24 16:31   ` Andy Gross
@ 2014-05-29 15:14     ` Kumar Gala
  -1 siblings, 0 replies; 26+ messages in thread
From: Kumar Gala @ 2014-05-29 15:14 UTC (permalink / raw)
  To: Greg Kroah-Hartman
  Cc: Andy Gross, linux-kernel, devicetree, linux-arm-kernel,
	linux-arm-msm, Santosh Shilimkar


On Apr 24, 2014, at 11:31 AM, Andy Gross <agross@codeaurora.org> wrote:

> This patch removes direct access of the GSBI registers.  GSBI configuration
> should be done through the GSBI driver directly.
> 
> Signed-off-by: Andy Gross <agross@codeaurora.org>
> ---
> drivers/tty/serial/msm_serial.c |   48 ++-------------------------------------
> drivers/tty/serial/msm_serial.h |    5 ----
> 2 files changed, 2 insertions(+), 51 deletions(-)

Greg,

Any update on pulling this is for next?

- k

> 
> diff --git a/drivers/tty/serial/msm_serial.c b/drivers/tty/serial/msm_serial.c
> index b5d779c..8901114 100644
> --- a/drivers/tty/serial/msm_serial.c
> +++ b/drivers/tty/serial/msm_serial.c
> @@ -45,7 +45,6 @@ struct msm_port {
> 	struct clk		*clk;
> 	struct clk		*pclk;
> 	unsigned int		imr;
> -	void __iomem		*gsbi_base;
> 	int			is_uartdm;
> 	unsigned int		old_snap_state;
> };
> @@ -586,9 +585,7 @@ static const char *msm_type(struct uart_port *port)
> static void msm_release_port(struct uart_port *port)
> {
> 	struct platform_device *pdev = to_platform_device(port->dev);
> -	struct msm_port *msm_port = UART_TO_MSM(port);
> 	struct resource *uart_resource;
> -	struct resource *gsbi_resource;
> 	resource_size_t size;
> 
> 	uart_resource = platform_get_resource(pdev, IORESOURCE_MEM, 0);
> @@ -599,28 +596,12 @@ static void msm_release_port(struct uart_port *port)
> 	release_mem_region(port->mapbase, size);
> 	iounmap(port->membase);
> 	port->membase = NULL;
> -
> -	if (msm_port->gsbi_base) {
> -		writel_relaxed(GSBI_PROTOCOL_IDLE,
> -				msm_port->gsbi_base + GSBI_CONTROL);
> -
> -		gsbi_resource = platform_get_resource(pdev, IORESOURCE_MEM, 1);
> -		if (unlikely(!gsbi_resource))
> -			return;
> -
> -		size = resource_size(gsbi_resource);
> -		release_mem_region(gsbi_resource->start, size);
> -		iounmap(msm_port->gsbi_base);
> -		msm_port->gsbi_base = NULL;
> -	}
> }
> 
> static int msm_request_port(struct uart_port *port)
> {
> -	struct msm_port *msm_port = UART_TO_MSM(port);
> 	struct platform_device *pdev = to_platform_device(port->dev);
> 	struct resource *uart_resource;
> -	struct resource *gsbi_resource;
> 	resource_size_t size;
> 	int ret;
> 
> @@ -639,30 +620,8 @@ static int msm_request_port(struct uart_port *port)
> 		goto fail_release_port;
> 	}
> 
> -	gsbi_resource = platform_get_resource(pdev, IORESOURCE_MEM, 1);
> -	/* Is this a GSBI-based port? */
> -	if (gsbi_resource) {
> -		size = resource_size(gsbi_resource);
> -
> -		if (!request_mem_region(gsbi_resource->start, size,
> -						 "msm_serial")) {
> -			ret = -EBUSY;
> -			goto fail_release_port_membase;
> -		}
> -
> -		msm_port->gsbi_base = ioremap(gsbi_resource->start, size);
> -		if (!msm_port->gsbi_base) {
> -			ret = -EBUSY;
> -			goto fail_release_gsbi;
> -		}
> -	}
> -
> 	return 0;
> 
> -fail_release_gsbi:
> -	release_mem_region(gsbi_resource->start, size);
> -fail_release_port_membase:
> -	iounmap(port->membase);
> fail_release_port:
> 	release_mem_region(port->mapbase, size);
> 	return ret;
> @@ -670,7 +629,6 @@ fail_release_port:
> 
> static void msm_config_port(struct uart_port *port, int flags)
> {
> -	struct msm_port *msm_port = UART_TO_MSM(port);
> 	int ret;
> 	if (flags & UART_CONFIG_TYPE) {
> 		port->type = PORT_MSM;
> @@ -678,9 +636,6 @@ static void msm_config_port(struct uart_port *port, int flags)
> 		if (ret)
> 			return;
> 	}
> -	if (msm_port->gsbi_base)
> -		writel_relaxed(GSBI_PROTOCOL_UART,
> -				msm_port->gsbi_base + GSBI_CONTROL);
> }
> 
> static int msm_verify_port(struct uart_port *port, struct serial_struct *ser)
> @@ -976,6 +931,7 @@ static struct of_device_id msm_match_table[] = {
> 
> static struct platform_driver msm_platform_driver = {
> 	.remove = msm_serial_remove,
> +	.probe = msm_serial_probe,
> 	.driver = {
> 		.name = "msm_serial",
> 		.owner = THIS_MODULE,
> @@ -991,7 +947,7 @@ static int __init msm_serial_init(void)
> 	if (unlikely(ret))
> 		return ret;
> 
> -	ret = platform_driver_probe(&msm_platform_driver, msm_serial_probe);
> +	ret = platform_driver_register(&msm_platform_driver);
> 	if (unlikely(ret))
> 		uart_unregister_driver(&msm_uart_driver);
> 
> diff --git a/drivers/tty/serial/msm_serial.h b/drivers/tty/serial/msm_serial.h
> index 469fda5..a77cc76 100644
> --- a/drivers/tty/serial/msm_serial.h
> +++ b/drivers/tty/serial/msm_serial.h
> @@ -108,11 +108,6 @@
> #define UART_ISR		0x0014
> #define UART_ISR_TX_READY	(1 << 7)
> 
> -#define GSBI_CONTROL		0x0
> -#define GSBI_PROTOCOL_CODE	0x30
> -#define GSBI_PROTOCOL_UART	0x40
> -#define GSBI_PROTOCOL_IDLE	0x0
> -
> #define UARTDM_DMRX		0x34
> #define UARTDM_NCF_TX		0x40
> #define UARTDM_RX_TOTAL_SNAP	0x38
> -- 
> 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 majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html

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

^ permalink raw reply	[flat|nested] 26+ messages in thread

* [Patch v2 4/4] tty: serial: msm: Remove direct access to GSBI
@ 2014-05-29 15:14     ` Kumar Gala
  0 siblings, 0 replies; 26+ messages in thread
From: Kumar Gala @ 2014-05-29 15:14 UTC (permalink / raw)
  To: linux-arm-kernel


On Apr 24, 2014, at 11:31 AM, Andy Gross <agross@codeaurora.org> wrote:

> This patch removes direct access of the GSBI registers.  GSBI configuration
> should be done through the GSBI driver directly.
> 
> Signed-off-by: Andy Gross <agross@codeaurora.org>
> ---
> drivers/tty/serial/msm_serial.c |   48 ++-------------------------------------
> drivers/tty/serial/msm_serial.h |    5 ----
> 2 files changed, 2 insertions(+), 51 deletions(-)

Greg,

Any update on pulling this is for next?

- k

> 
> diff --git a/drivers/tty/serial/msm_serial.c b/drivers/tty/serial/msm_serial.c
> index b5d779c..8901114 100644
> --- a/drivers/tty/serial/msm_serial.c
> +++ b/drivers/tty/serial/msm_serial.c
> @@ -45,7 +45,6 @@ struct msm_port {
> 	struct clk		*clk;
> 	struct clk		*pclk;
> 	unsigned int		imr;
> -	void __iomem		*gsbi_base;
> 	int			is_uartdm;
> 	unsigned int		old_snap_state;
> };
> @@ -586,9 +585,7 @@ static const char *msm_type(struct uart_port *port)
> static void msm_release_port(struct uart_port *port)
> {
> 	struct platform_device *pdev = to_platform_device(port->dev);
> -	struct msm_port *msm_port = UART_TO_MSM(port);
> 	struct resource *uart_resource;
> -	struct resource *gsbi_resource;
> 	resource_size_t size;
> 
> 	uart_resource = platform_get_resource(pdev, IORESOURCE_MEM, 0);
> @@ -599,28 +596,12 @@ static void msm_release_port(struct uart_port *port)
> 	release_mem_region(port->mapbase, size);
> 	iounmap(port->membase);
> 	port->membase = NULL;
> -
> -	if (msm_port->gsbi_base) {
> -		writel_relaxed(GSBI_PROTOCOL_IDLE,
> -				msm_port->gsbi_base + GSBI_CONTROL);
> -
> -		gsbi_resource = platform_get_resource(pdev, IORESOURCE_MEM, 1);
> -		if (unlikely(!gsbi_resource))
> -			return;
> -
> -		size = resource_size(gsbi_resource);
> -		release_mem_region(gsbi_resource->start, size);
> -		iounmap(msm_port->gsbi_base);
> -		msm_port->gsbi_base = NULL;
> -	}
> }
> 
> static int msm_request_port(struct uart_port *port)
> {
> -	struct msm_port *msm_port = UART_TO_MSM(port);
> 	struct platform_device *pdev = to_platform_device(port->dev);
> 	struct resource *uart_resource;
> -	struct resource *gsbi_resource;
> 	resource_size_t size;
> 	int ret;
> 
> @@ -639,30 +620,8 @@ static int msm_request_port(struct uart_port *port)
> 		goto fail_release_port;
> 	}
> 
> -	gsbi_resource = platform_get_resource(pdev, IORESOURCE_MEM, 1);
> -	/* Is this a GSBI-based port? */
> -	if (gsbi_resource) {
> -		size = resource_size(gsbi_resource);
> -
> -		if (!request_mem_region(gsbi_resource->start, size,
> -						 "msm_serial")) {
> -			ret = -EBUSY;
> -			goto fail_release_port_membase;
> -		}
> -
> -		msm_port->gsbi_base = ioremap(gsbi_resource->start, size);
> -		if (!msm_port->gsbi_base) {
> -			ret = -EBUSY;
> -			goto fail_release_gsbi;
> -		}
> -	}
> -
> 	return 0;
> 
> -fail_release_gsbi:
> -	release_mem_region(gsbi_resource->start, size);
> -fail_release_port_membase:
> -	iounmap(port->membase);
> fail_release_port:
> 	release_mem_region(port->mapbase, size);
> 	return ret;
> @@ -670,7 +629,6 @@ fail_release_port:
> 
> static void msm_config_port(struct uart_port *port, int flags)
> {
> -	struct msm_port *msm_port = UART_TO_MSM(port);
> 	int ret;
> 	if (flags & UART_CONFIG_TYPE) {
> 		port->type = PORT_MSM;
> @@ -678,9 +636,6 @@ static void msm_config_port(struct uart_port *port, int flags)
> 		if (ret)
> 			return;
> 	}
> -	if (msm_port->gsbi_base)
> -		writel_relaxed(GSBI_PROTOCOL_UART,
> -				msm_port->gsbi_base + GSBI_CONTROL);
> }
> 
> static int msm_verify_port(struct uart_port *port, struct serial_struct *ser)
> @@ -976,6 +931,7 @@ static struct of_device_id msm_match_table[] = {
> 
> static struct platform_driver msm_platform_driver = {
> 	.remove = msm_serial_remove,
> +	.probe = msm_serial_probe,
> 	.driver = {
> 		.name = "msm_serial",
> 		.owner = THIS_MODULE,
> @@ -991,7 +947,7 @@ static int __init msm_serial_init(void)
> 	if (unlikely(ret))
> 		return ret;
> 
> -	ret = platform_driver_probe(&msm_platform_driver, msm_serial_probe);
> +	ret = platform_driver_register(&msm_platform_driver);
> 	if (unlikely(ret))
> 		uart_unregister_driver(&msm_uart_driver);
> 
> diff --git a/drivers/tty/serial/msm_serial.h b/drivers/tty/serial/msm_serial.h
> index 469fda5..a77cc76 100644
> --- a/drivers/tty/serial/msm_serial.h
> +++ b/drivers/tty/serial/msm_serial.h
> @@ -108,11 +108,6 @@
> #define UART_ISR		0x0014
> #define UART_ISR_TX_READY	(1 << 7)
> 
> -#define GSBI_CONTROL		0x0
> -#define GSBI_PROTOCOL_CODE	0x30
> -#define GSBI_PROTOCOL_UART	0x40
> -#define GSBI_PROTOCOL_IDLE	0x0
> -
> #define UARTDM_DMRX		0x34
> #define UARTDM_NCF_TX		0x40
> #define UARTDM_RX_TOTAL_SNAP	0x38
> -- 
> 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 majordomo at vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html

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

^ permalink raw reply	[flat|nested] 26+ messages in thread

* Re: [Patch v2 4/4] tty: serial: msm: Remove direct access to GSBI
  2014-05-29 15:14     ` Kumar Gala
  (?)
@ 2014-05-29 15:43         ` Greg Kroah-Hartman
  -1 siblings, 0 replies; 26+ messages in thread
From: Greg Kroah-Hartman @ 2014-05-29 15:43 UTC (permalink / raw)
  To: Kumar Gala
  Cc: Andy Gross, linux-kernel-u79uwXL29TY76Z2rM5mHXA, devicetree,
	linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r, linux-arm-msm,
	Santosh Shilimkar

On Thu, May 29, 2014 at 10:14:35AM -0500, Kumar Gala wrote:
> 
> On Apr 24, 2014, at 11:31 AM, Andy Gross <agross-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org> wrote:
> 
> > This patch removes direct access of the GSBI registers.  GSBI configuration
> > should be done through the GSBI driver directly.
> > 
> > Signed-off-by: Andy Gross <agross-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org>
> > ---
> > drivers/tty/serial/msm_serial.c |   48 ++-------------------------------------
> > drivers/tty/serial/msm_serial.h |    5 ----
> > 2 files changed, 2 insertions(+), 51 deletions(-)
> 
> Greg,
> 
> Any update on pulling this is for next?

I thought this was going through someone else's tree, sorry.  And, there
seemd to be a second set of patches for this, which I don't have
anywhere :(

If you want me to take all of these, or just this one, Andy, can you
please resend?

thanks,

greg k-h
--
To unsubscribe from this list: send the line "unsubscribe devicetree" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

^ permalink raw reply	[flat|nested] 26+ messages in thread

* Re: [Patch v2 4/4] tty: serial: msm: Remove direct access to GSBI
@ 2014-05-29 15:43         ` Greg Kroah-Hartman
  0 siblings, 0 replies; 26+ messages in thread
From: Greg Kroah-Hartman @ 2014-05-29 15:43 UTC (permalink / raw)
  To: Kumar Gala
  Cc: Andy Gross, linux-kernel, devicetree, linux-arm-kernel,
	linux-arm-msm, Santosh Shilimkar

On Thu, May 29, 2014 at 10:14:35AM -0500, Kumar Gala wrote:
> 
> On Apr 24, 2014, at 11:31 AM, Andy Gross <agross@codeaurora.org> wrote:
> 
> > This patch removes direct access of the GSBI registers.  GSBI configuration
> > should be done through the GSBI driver directly.
> > 
> > Signed-off-by: Andy Gross <agross@codeaurora.org>
> > ---
> > drivers/tty/serial/msm_serial.c |   48 ++-------------------------------------
> > drivers/tty/serial/msm_serial.h |    5 ----
> > 2 files changed, 2 insertions(+), 51 deletions(-)
> 
> Greg,
> 
> Any update on pulling this is for next?

I thought this was going through someone else's tree, sorry.  And, there
seemd to be a second set of patches for this, which I don't have
anywhere :(

If you want me to take all of these, or just this one, Andy, can you
please resend?

thanks,

greg k-h

^ permalink raw reply	[flat|nested] 26+ messages in thread

* [Patch v2 4/4] tty: serial: msm: Remove direct access to GSBI
@ 2014-05-29 15:43         ` Greg Kroah-Hartman
  0 siblings, 0 replies; 26+ messages in thread
From: Greg Kroah-Hartman @ 2014-05-29 15:43 UTC (permalink / raw)
  To: linux-arm-kernel

On Thu, May 29, 2014 at 10:14:35AM -0500, Kumar Gala wrote:
> 
> On Apr 24, 2014, at 11:31 AM, Andy Gross <agross@codeaurora.org> wrote:
> 
> > This patch removes direct access of the GSBI registers.  GSBI configuration
> > should be done through the GSBI driver directly.
> > 
> > Signed-off-by: Andy Gross <agross@codeaurora.org>
> > ---
> > drivers/tty/serial/msm_serial.c |   48 ++-------------------------------------
> > drivers/tty/serial/msm_serial.h |    5 ----
> > 2 files changed, 2 insertions(+), 51 deletions(-)
> 
> Greg,
> 
> Any update on pulling this is for next?

I thought this was going through someone else's tree, sorry.  And, there
seemd to be a second set of patches for this, which I don't have
anywhere :(

If you want me to take all of these, or just this one, Andy, can you
please resend?

thanks,

greg k-h

^ permalink raw reply	[flat|nested] 26+ messages in thread

* Re: [Patch v2 4/4] tty: serial: msm: Remove direct access to GSBI
  2014-05-29 15:14     ` Kumar Gala
@ 2014-05-29 16:05       ` Kumar Gala
  -1 siblings, 0 replies; 26+ messages in thread
From: Kumar Gala @ 2014-05-29 16:05 UTC (permalink / raw)
  To: Greg Kroah-Hartman
  Cc: Andy Gross, linux-kernel, devicetree, linux-arm-kernel,
	linux-arm-msm, Santosh Shilimkar


On May 29, 2014, at 10:14 AM, Kumar Gala <galak@codeaurora.org> wrote:

> 
> On Apr 24, 2014, at 11:31 AM, Andy Gross <agross@codeaurora.org> wrote:
> 
>> This patch removes direct access of the GSBI registers.  GSBI configuration
>> should be done through the GSBI driver directly.
>> 
>> Signed-off-by: Andy Gross <agross@codeaurora.org>
>> ---
>> drivers/tty/serial/msm_serial.c |   48 ++-------------------------------------
>> drivers/tty/serial/msm_serial.h |    5 ----
>> 2 files changed, 2 insertions(+), 51 deletions(-)
> 
> Greg,
> 
> Any update on pulling this is for next?
> 
> - k

I’ll send it via arm-soc as the related patches are going via that path.

- k

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

^ permalink raw reply	[flat|nested] 26+ messages in thread

* [Patch v2 4/4] tty: serial: msm: Remove direct access to GSBI
@ 2014-05-29 16:05       ` Kumar Gala
  0 siblings, 0 replies; 26+ messages in thread
From: Kumar Gala @ 2014-05-29 16:05 UTC (permalink / raw)
  To: linux-arm-kernel


On May 29, 2014, at 10:14 AM, Kumar Gala <galak@codeaurora.org> wrote:

> 
> On Apr 24, 2014, at 11:31 AM, Andy Gross <agross@codeaurora.org> wrote:
> 
>> This patch removes direct access of the GSBI registers.  GSBI configuration
>> should be done through the GSBI driver directly.
>> 
>> Signed-off-by: Andy Gross <agross@codeaurora.org>
>> ---
>> drivers/tty/serial/msm_serial.c |   48 ++-------------------------------------
>> drivers/tty/serial/msm_serial.h |    5 ----
>> 2 files changed, 2 insertions(+), 51 deletions(-)
> 
> Greg,
> 
> Any update on pulling this is for next?
> 
> - k

I?ll send it via arm-soc as the related patches are going via that path.

- k

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

^ permalink raw reply	[flat|nested] 26+ messages in thread

end of thread, other threads:[~2014-05-29 16:05 UTC | newest]

Thread overview: 26+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2014-04-24 16:31 [Patch v2 0/4] Introduce drivers/soc and add QCOM GSBI driver Andy Gross
2014-04-24 16:31 ` Andy Gross
2014-04-24 16:31 ` [Patch v2 1/4] soc: Placeholder files for drivers/soc Andy Gross
2014-04-24 16:31   ` Andy Gross
2014-04-24 16:31   ` Andy Gross
2014-04-24 16:36   ` Santosh Shilimkar
2014-04-24 16:36     ` Santosh Shilimkar
2014-04-24 16:36     ` Santosh Shilimkar
2014-05-06 17:06     ` Kumar Gala
2014-05-06 17:06       ` Kumar Gala
2014-04-24 16:31 ` [Patch v2 2/4] soc: qcom: Add device tree binding for GSBI Andy Gross
2014-04-24 16:31   ` Andy Gross
2014-04-24 16:31 ` [Patch v2 3/4] soc: qcom: Add GSBI driver Andy Gross
2014-04-24 16:31   ` Andy Gross
2014-05-23 18:52   ` Stephen Boyd
2014-05-23 18:52     ` Stephen Boyd
2014-04-24 16:31 ` [Patch v2 4/4] tty: serial: msm: Remove direct access to GSBI Andy Gross
2014-04-24 16:31   ` Andy Gross
2014-04-24 16:31   ` Andy Gross
2014-05-29 15:14   ` Kumar Gala
2014-05-29 15:14     ` Kumar Gala
     [not found]     ` <A56B810D-869A-4E4F-BC29-C9B0F6CDCE79-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org>
2014-05-29 15:43       ` Greg Kroah-Hartman
2014-05-29 15:43         ` Greg Kroah-Hartman
2014-05-29 15:43         ` Greg Kroah-Hartman
2014-05-29 16:05     ` Kumar Gala
2014-05-29 16:05       ` Kumar Gala

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.