2019-01-17 16:56:07

by Loys Ollivier

[permalink] [raw]
Subject: [PATCH v2 0/4] Add driver for Mediatek-based GNSS receivers

Hi,

This patch series adds a new GNSS driver for the Mediatek-based GNSS receivers.
These receivers transmits NMEA output sequence after boot.
Power management can be done via the main supply and optional backup supply
as defined in the device tree.

The driver has been tested using a GlobalTop pa6h chipset on a Libretech-cc
board using the expansion header. Changes made in the board device tree can
be found below for reference and testing.

Loys

Sorry it took so long for the v2. Rebased that serie on 5.0-rc1 and had to send
some fixes for the board before testing.

Version 2 changes:
- driver: Renamed driver from Globaltop/gtop to Mediatek/mtk
- driver: Added "mediatek,mt3339" compatible
- dt: Renamed bindings from Globaltop to Mediatek
- dt: Moved the current-speed property as optional
- dt: removed the status line in example
- cover-letter: removed the alias that is not needed anymore

Loys Ollivier (4):
dt-bindings: Add vendor prefix for "GlobalTop Technology, Inc."
dt-bindings: gnss: add mediatek binding
gnss: add mtk receiver type support
gnss: add driver for mediatek receivers

.../devicetree/bindings/gnss/mediatek.txt | 39 ++++++
.../devicetree/bindings/vendor-prefixes.txt | 1 +
drivers/gnss/Kconfig | 13 ++
drivers/gnss/Makefile | 3 +
drivers/gnss/core.c | 1 +
drivers/gnss/mtk.c | 153 +++++++++++++++++++++
include/linux/gnss.h | 1 +
7 files changed, 211 insertions(+)
create mode 100644 Documentation/devicetree/bindings/gnss/mediatek.txt
create mode 100644 drivers/gnss/mtk.c

---
diff --git a/arch/arm64/boot/dts/amlogic/meson-gxl-s905x-libretech-cc.dts b/arch/arm64/boot/dts/amlogic/meson-gxl-s905x-libretech-cc.dts
index 90a56af967a7..3b3d4dcc47aa 100644
--- a/arch/arm64/boot/dts/amlogic/meson-gxl-s905x-libretech-cc.dts
+++ b/arch/arm64/boot/dts/amlogic/meson-gxl-s905x-libretech-cc.dts
@@ -17,6 +17,7 @@

aliases {
serial0 = &uart_AO;
ethernet0 = &ethmac;
};

@@ -269,7 +270,20 @@
pinctrl-names = "default";
};

+/* This is brought out on the UART_A_TX (8) and UART_A_RX (10) pins: */
+&uart_A {
+ status = "okay";
+ pinctrl-0 = <&uart_a_pins>;
+ pinctrl-names = "default";
+
+ gnss {
+ compatible = "globaltop,pa6h";
+ v-bckp-supply = <&vcc_3v3>;
+ vcc-supply = <&vcc_3v3>;
+ current-speed = <9600>;
+ };
+};
+
&usb0 {
status = "okay";
};

--
2.7.4



2019-01-17 16:56:18

by Loys Ollivier

[permalink] [raw]
Subject: [PATCH v2 4/4] gnss: add driver for mediatek receivers

Add driver for serial-connected Mediatek-based GNSS receivers.

These devices typically boot transmitting vendor specific NMEA output
sequences. The serial port bit rate is read from the device tree
"current-speed".

Note that the driver uses the generic GNSS serial implementation and
therefore essentially only manages power abstracted into three power
states: ACTIVE, STANDBY, and OFF.

For mediatek receivers with a main supply and no enable-gpios, this simply
means that the main supply is disabled in STANDBY and OFF (the optional
backup supply is kept enabled while the driver is bound).

Note that the timepulse-support is left unimplemented.

Signed-off-by: Loys Ollivier <[email protected]>
---

v2:
Renamed from gtop/Globaltop to mtk/Mediatek.
Added "mediatek,mt3339" compatible.

drivers/gnss/Kconfig | 13 +++++
drivers/gnss/Makefile | 3 +
drivers/gnss/core.c | 1 +
drivers/gnss/mtk.c | 153 ++++++++++++++++++++++++++++++++++++++++++++++++++
4 files changed, 170 insertions(+)
create mode 100644 drivers/gnss/mtk.c

diff --git a/drivers/gnss/Kconfig b/drivers/gnss/Kconfig
index 6abc88514512..51e6282d092a 100644
--- a/drivers/gnss/Kconfig
+++ b/drivers/gnss/Kconfig
@@ -40,4 +40,17 @@ config GNSS_UBX_SERIAL

If unsure, say N.

+config GNSS_MTK_SERIAL
+ tristate "Mediatek GNSS receiver support"
+ depends on SERIAL_DEV_BUS
+ select GNSS_SERIAL
+ help
+ Say Y here if you have a Mediatek-based GNSS receiver which uses a
+ serial interface.
+
+ To compile this driver as a module, choose M here: the module will
+ be called gnss-mtk.
+
+ If unsure, say N.
+
endif # GNSS
diff --git a/drivers/gnss/Makefile b/drivers/gnss/Makefile
index 5cf0ebe0330a..43318375aa51 100644
--- a/drivers/gnss/Makefile
+++ b/drivers/gnss/Makefile
@@ -14,3 +14,6 @@ gnss-sirf-y := sirf.o

obj-$(CONFIG_GNSS_UBX_SERIAL) += gnss-ubx.o
gnss-ubx-y := ubx.o
+
+obj-$(CONFIG_GNSS_MTK_SERIAL) += gnss-mtk.o
+gnss-mtk-y := mtk.o
diff --git a/drivers/gnss/core.c b/drivers/gnss/core.c
index 4291a0dd22aa..320cfca80d5f 100644
--- a/drivers/gnss/core.c
+++ b/drivers/gnss/core.c
@@ -334,6 +334,7 @@ static const char * const gnss_type_names[GNSS_TYPE_COUNT] = {
[GNSS_TYPE_NMEA] = "NMEA",
[GNSS_TYPE_SIRF] = "SiRF",
[GNSS_TYPE_UBX] = "UBX",
+ [GNSS_TYPE_MTK] = "MTK",
};

static const char *gnss_type_name(struct gnss_device *gdev)
diff --git a/drivers/gnss/mtk.c b/drivers/gnss/mtk.c
new file mode 100644
index 000000000000..c91d4d251098
--- /dev/null
+++ b/drivers/gnss/mtk.c
@@ -0,0 +1,153 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * Mediatek GNSS receiver driver
+ *
+ * Copyright (C) 2018 Loys Ollivier <[email protected]>
+ */
+
+#include <linux/errno.h>
+#include <linux/gnss.h>
+#include <linux/init.h>
+#include <linux/kernel.h>
+#include <linux/module.h>
+#include <linux/of.h>
+#include <linux/regulator/consumer.h>
+#include <linux/serdev.h>
+
+#include "serial.h"
+
+struct mtk_data {
+ struct regulator *v_bckp;
+ struct regulator *vcc;
+};
+
+static int mtk_set_active(struct gnss_serial *gserial)
+{
+ struct mtk_data *data = gnss_serial_get_drvdata(gserial);
+ int ret;
+
+ ret = regulator_enable(data->vcc);
+ if (ret)
+ return ret;
+
+ return 0;
+}
+
+static int mtk_set_standby(struct gnss_serial *gserial)
+{
+ struct mtk_data *data = gnss_serial_get_drvdata(gserial);
+ int ret;
+
+ ret = regulator_disable(data->vcc);
+ if (ret)
+ return ret;
+
+ return 0;
+}
+
+static int mtk_set_power(struct gnss_serial *gserial,
+ enum gnss_serial_pm_state state)
+{
+ switch (state) {
+ case GNSS_SERIAL_ACTIVE:
+ return mtk_set_active(gserial);
+ case GNSS_SERIAL_OFF:
+ case GNSS_SERIAL_STANDBY:
+ return mtk_set_standby(gserial);
+ }
+
+ return -EINVAL;
+}
+
+static const struct gnss_serial_ops mtk_gserial_ops = {
+ .set_power = mtk_set_power,
+};
+
+static int mtk_probe(struct serdev_device *serdev)
+{
+ struct gnss_serial *gserial;
+ struct mtk_data *data;
+ int ret;
+
+ gserial = gnss_serial_allocate(serdev, sizeof(*data));
+ if (IS_ERR(gserial)) {
+ ret = PTR_ERR(gserial);
+ return ret;
+ }
+
+ gserial->ops = &mtk_gserial_ops;
+
+ gserial->gdev->type = GNSS_TYPE_MTK;
+
+ data = gnss_serial_get_drvdata(gserial);
+
+ data->vcc = devm_regulator_get(&serdev->dev, "vcc");
+ if (IS_ERR(data->vcc)) {
+ ret = PTR_ERR(data->vcc);
+ goto err_free_gserial;
+ }
+
+ data->v_bckp = devm_regulator_get_optional(&serdev->dev, "v-bckp");
+ if (IS_ERR(data->v_bckp)) {
+ ret = PTR_ERR(data->v_bckp);
+ if (ret == -ENODEV)
+ data->v_bckp = NULL;
+ else
+ goto err_free_gserial;
+ }
+
+ if (data->v_bckp) {
+ ret = regulator_enable(data->v_bckp);
+ if (ret)
+ goto err_free_gserial;
+ }
+
+ ret = gnss_serial_register(gserial);
+ if (ret)
+ goto err_disable_v_bckp;
+
+ return 0;
+
+err_disable_v_bckp:
+ if (data->v_bckp)
+ regulator_disable(data->v_bckp);
+err_free_gserial:
+ gnss_serial_free(gserial);
+
+ return ret;
+}
+
+static void mtk_remove(struct serdev_device *serdev)
+{
+ struct gnss_serial *gserial = serdev_device_get_drvdata(serdev);
+ struct mtk_data *data = gnss_serial_get_drvdata(gserial);
+
+ gnss_serial_deregister(gserial);
+ if (data->v_bckp)
+ regulator_disable(data->v_bckp);
+ gnss_serial_free(gserial);
+};
+
+#ifdef CONFIG_OF
+static const struct of_device_id mtk_of_match[] = {
+ { .compatible = "globaltop,pa6h" },
+ { .compatible = "mediatek,mt3339" },
+ {},
+};
+MODULE_DEVICE_TABLE(of, mtk_of_match);
+#endif
+
+static struct serdev_device_driver mtk_driver = {
+ .driver = {
+ .name = "gnss-mtk",
+ .of_match_table = of_match_ptr(mtk_of_match),
+ .pm = &gnss_serial_pm_ops,
+ },
+ .probe = mtk_probe,
+ .remove = mtk_remove,
+};
+module_serdev_device_driver(mtk_driver);
+
+MODULE_AUTHOR("Loys Ollivier <[email protected]>");
+MODULE_DESCRIPTION("Mediatek GNSS receiver driver");
+MODULE_LICENSE("GPL v2");
--
2.7.4


2019-01-17 16:56:57

by Loys Ollivier

[permalink] [raw]
Subject: [PATCH v2 2/4] dt-bindings: gnss: add mediatek binding

Add binding for Mediatek-based GNSS receivers.

Signed-off-by: Loys Ollivier <[email protected]>
---

v2:
Renamed bindings from Globaltop/gtop to Mediatek/mtk.
Moved current-speed as an optional propertie.
Removed the status line in the example.
Added "mediatek,mt3339" compatible.

.../devicetree/bindings/gnss/mediatek.txt | 39 ++++++++++++++++++++++
1 file changed, 39 insertions(+)
create mode 100644 Documentation/devicetree/bindings/gnss/mediatek.txt

diff --git a/Documentation/devicetree/bindings/gnss/mediatek.txt b/Documentation/devicetree/bindings/gnss/mediatek.txt
new file mode 100644
index 000000000000..fd984b4a9a6d
--- /dev/null
+++ b/Documentation/devicetree/bindings/gnss/mediatek.txt
@@ -0,0 +1,39 @@
+Mediatek-based GNSS Receiver DT binding
+
+Mediatek chipsets are used in GNSS-receiver modules produced by several
+vendors and can use UART, SPI or I2C interfaces.
+
+Please see Documentation/devicetree/bindings/gnss/gnss.txt for generic
+properties.
+
+Required properties:
+
+- compatible : Must be one of
+
+ "globaltop,pa6h"
+ "mediatek,mt3339"
+
+- vcc-supply : Main voltage regulator (pin name: 3V3_IN, VCC, VDD)
+
+Required properties (I2C):
+- reg : I2C slave address
+
+Required properties (SPI):
+- reg : SPI chip select address
+
+Optional properties:
+
+- timepulse-gpios : Time pulse GPIO
+- v-bckp-supply : Backup voltage regulator
+- current-speed : Default UART baud rate
+
+Example:
+
+serial@1234 {
+ compatible = "ns16550a";
+
+ gnss {
+ compatible = "globaltop,pa6h";
+ vcc-supply = <&vcc_3v3>;
+ };
+};
--
2.7.4


2019-01-17 16:57:21

by Loys Ollivier

[permalink] [raw]
Subject: [PATCH v2 1/4] dt-bindings: Add vendor prefix for "GlobalTop Technology, Inc."

Add globaltop vendor definition.

Signed-off-by: Loys Ollivier <[email protected]>
---

v2: Alphabetical order

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

diff --git a/Documentation/devicetree/bindings/vendor-prefixes.txt b/Documentation/devicetree/bindings/vendor-prefixes.txt
index 389508584f48..d80a70343b36 100644
--- a/Documentation/devicetree/bindings/vendor-prefixes.txt
+++ b/Documentation/devicetree/bindings/vendor-prefixes.txt
@@ -150,6 +150,7 @@ geniatech Geniatech, Inc.
giantec Giantec Semiconductor, Inc.
giantplus Giantplus Technology Co., Ltd.
globalscale Globalscale Technologies, Inc.
+globaltop GlobalTop Technology, Inc.
gmt Global Mixed-mode Technology, Inc.
goodix Shenzhen Huiding Technology Co., Ltd.
google Google, Inc.
--
2.7.4


2019-01-17 16:57:27

by Loys Ollivier

[permalink] [raw]
Subject: [PATCH v2 3/4] gnss: add mtk receiver type support

Add an MTK (Mediatek) type to the "GNSS_TYPE" attribute.

Note that MTK receivers support a subset of NMEA 0183 with vendor
extensions (e.g. to allow switching to the vendor protocol).

Signed-off-by: Loys Ollivier <[email protected]>
---

v2: renamed from GTOP to MTK.

include/linux/gnss.h | 1 +
1 file changed, 1 insertion(+)

diff --git a/include/linux/gnss.h b/include/linux/gnss.h
index 43546977098c..36968a0f33e8 100644
--- a/include/linux/gnss.h
+++ b/include/linux/gnss.h
@@ -22,6 +22,7 @@ enum gnss_type {
GNSS_TYPE_NMEA = 0,
GNSS_TYPE_SIRF,
GNSS_TYPE_UBX,
+ GNSS_TYPE_MTK,

GNSS_TYPE_COUNT
};
--
2.7.4


2019-01-21 17:11:34

by Rob Herring (Arm)

[permalink] [raw]
Subject: Re: [PATCH v2 1/4] dt-bindings: Add vendor prefix for "GlobalTop Technology, Inc."

On Thu, 17 Jan 2019 17:54:31 +0100, Loys Ollivier wrote:
> Add globaltop vendor definition.
>
> Signed-off-by: Loys Ollivier <[email protected]>
> ---
>
> v2: Alphabetical order
>
> Documentation/devicetree/bindings/vendor-prefixes.txt | 1 +
> 1 file changed, 1 insertion(+)
>

Reviewed-by: Rob Herring <[email protected]>

2019-01-21 17:12:26

by Rob Herring (Arm)

[permalink] [raw]
Subject: Re: [PATCH v2 2/4] dt-bindings: gnss: add mediatek binding

On Thu, 17 Jan 2019 17:54:32 +0100, Loys Ollivier wrote:
> Add binding for Mediatek-based GNSS receivers.
>
> Signed-off-by: Loys Ollivier <[email protected]>
> ---
>
> v2:
> Renamed bindings from Globaltop/gtop to Mediatek/mtk.
> Moved current-speed as an optional propertie.
> Removed the status line in the example.
> Added "mediatek,mt3339" compatible.
>
> .../devicetree/bindings/gnss/mediatek.txt | 39 ++++++++++++++++++++++
> 1 file changed, 39 insertions(+)
> create mode 100644 Documentation/devicetree/bindings/gnss/mediatek.txt
>

Reviewed-by: Rob Herring <[email protected]>

2019-01-21 17:43:53

by Loys Ollivier

[permalink] [raw]
Subject: Re: [PATCH v2 2/4] dt-bindings: gnss: add mediatek binding


On Mon 21 Jan 2019 at 17:10, Rob Herring wrote:

> On Thu, 17 Jan 2019 17:54:32 +0100, Loys Ollivier wrote:
>> Add binding for Mediatek-based GNSS receivers.
>>
>> Signed-off-by: Loys Ollivier <[email protected]>
>> ---
>>
>> v2:
>> Renamed bindings from Globaltop/gtop to Mediatek/mtk.
>> Moved current-speed as an optional propertie.
>> Removed the status line in the example.
>> Added "mediatek,mt3339" compatible.
>>
>> .../devicetree/bindings/gnss/mediatek.txt | 39
>> ++++++++++++++++++++++
>> 1 file changed, 39 insertions(+)
>> create mode 100644 Documentation/devicetree/bindings/gnss/mediatek.txt
>>
>
> Reviewed-by: Rob Herring <[email protected]>

Thanks Rob,
If there are no objections by others, I'll stop sending these two patch
(1/4 and 2/4) and reference any new patch serie for 3 and 4 as depending
on those two.

--
-L

2019-01-21 18:47:05

by Sean Wang

[permalink] [raw]
Subject: Re: [PATCH v2 2/4] dt-bindings: gnss: add mediatek binding

On Mon, Jan 21, 2019 at 9:29 AM Loys Ollivier <[email protected]> wrote:
>
>
> On Mon 21 Jan 2019 at 17:10, Rob Herring wrote:
>
> > On Thu, 17 Jan 2019 17:54:32 +0100, Loys Ollivier wrote:
> >> Add binding for Mediatek-based GNSS receivers.
> >>
> >> Signed-off-by: Loys Ollivier <[email protected]>
> >> ---
> >>
> >> v2:
> >> Renamed bindings from Globaltop/gtop to Mediatek/mtk.
> >> Moved current-speed as an optional propertie.
> >> Removed the status line in the example.
> >> Added "mediatek,mt3339" compatible.
> >>
> >> .../devicetree/bindings/gnss/mediatek.txt | 39
> >> ++++++++++++++++++++++
> >> 1 file changed, 39 insertions(+)
> >> create mode 100644 Documentation/devicetree/bindings/gnss/mediatek.txt
> >>
> >
> > Reviewed-by: Rob Herring <[email protected]>
>
> Thanks Rob,
> If there are no objections by others, I'll stop sending these two patch
> (1/4 and 2/4) and reference any new patch serie for 3 and 4 as depending
> on those two.
>

Hi Loys,

Thanks for adding the first GPS device driver. It's really nice to see
more device drivers added to upstream support.

Do you mind send the series again with Cc [email protected] ?

Sean

> --
> -L
>
> _______________________________________________
> Linux-mediatek mailing list
> [email protected]
> http://lists.infradead.org/mailman/listinfo/linux-mediatek

2019-01-21 21:53:15

by Rob Herring (Arm)

[permalink] [raw]
Subject: Re: [PATCH v2 2/4] dt-bindings: gnss: add mediatek binding

On Mon, Jan 21, 2019 at 11:29 AM Loys Ollivier <[email protected]> wrote:
>
>
> On Mon 21 Jan 2019 at 17:10, Rob Herring wrote:
>
> > On Thu, 17 Jan 2019 17:54:32 +0100, Loys Ollivier wrote:
> >> Add binding for Mediatek-based GNSS receivers.
> >>
> >> Signed-off-by: Loys Ollivier <[email protected]>
> >> ---
> >>
> >> v2:
> >> Renamed bindings from Globaltop/gtop to Mediatek/mtk.
> >> Moved current-speed as an optional propertie.
> >> Removed the status line in the example.
> >> Added "mediatek,mt3339" compatible.
> >>
> >> .../devicetree/bindings/gnss/mediatek.txt | 39
> >> ++++++++++++++++++++++
> >> 1 file changed, 39 insertions(+)
> >> create mode 100644 Documentation/devicetree/bindings/gnss/mediatek.txt
> >>
> >
> > Reviewed-by: Rob Herring <[email protected]>
>
> Thanks Rob,
> If there are no objections by others, I'll stop sending these two patch
> (1/4 and 2/4) and reference any new patch serie for 3 and 4 as depending
> on those two.

Generally, you should just resend the whole series unless the
maintainer has applied some of the patches. I could apply this but
usually the whole series goes in together.

Rob

2019-01-22 08:50:01

by Loys Ollivier

[permalink] [raw]
Subject: Re: [PATCH v2 2/4] dt-bindings: gnss: add mediatek binding


On Mon 21 Jan 2019 at 18:44, Sean Wang wrote:

> On Mon, Jan 21, 2019 at 9:29 AM Loys Ollivier <[email protected]>
> wrote:
>>
>>
>> On Mon 21 Jan 2019 at 17:10, Rob Herring wrote:
>>
>> > On Thu, 17 Jan 2019 17:54:32 +0100, Loys Ollivier wrote:
>> >> Add binding for Mediatek-based GNSS receivers.
>> >>
>> >> Signed-off-by: Loys Ollivier <[email protected]>
>> >> ---
>> >>
>> >> v2:
>> >> Renamed bindings from Globaltop/gtop to Mediatek/mtk.
>> >> Moved current-speed as an optional propertie.
>> >> Removed the status line in the example.
>> >> Added "mediatek,mt3339" compatible.
>> >>
>> >> .../devicetree/bindings/gnss/mediatek.txt | 39
>> >> ++++++++++++++++++++++
>> >> 1 file changed, 39 insertions(+)
>> >> create mode 100644 Documentation/devicetree/bindings/gnss/mediatek.txt
>> >>
>> >
>> > Reviewed-by: Rob Herring <[email protected]>
>>
>> Thanks Rob,
>> If there are no objections by others, I'll stop sending these two patch
>> (1/4 and 2/4) and reference any new patch serie for 3 and 4 as depending
>> on those two.
>>
>
> Hi Loys,
>
> Thanks for adding the first GPS device driver. It's really nice to see
> more device drivers added to upstream support.
>
Hi Sean,

Glad to know you're supporting this initiative.

> Do you mind send the series again with Cc [email protected]
> ?
>
The series already has [email protected] in Cc. Does it
need a resend ?

> Sean
>
>> --
>> -L
>>
>> _______________________________________________
>> Linux-mediatek mailing list
>> [email protected]
>> http://lists.infradead.org/mailman/listinfo/linux-mediatek


--
-L

2019-01-22 08:50:42

by Loys Ollivier

[permalink] [raw]
Subject: Re: [PATCH v2 2/4] dt-bindings: gnss: add mediatek binding


On Mon 21 Jan 2019 at 21:51, Rob Herring wrote:

> On Mon, Jan 21, 2019 at 11:29 AM Loys Ollivier <[email protected]>
> wrote:
>>
>>
>> On Mon 21 Jan 2019 at 17:10, Rob Herring wrote:
>>
>> > On Thu, 17 Jan 2019 17:54:32 +0100, Loys Ollivier wrote:
>> >> Add binding for Mediatek-based GNSS receivers.
>> >>
>> >> Signed-off-by: Loys Ollivier <[email protected]>
>> >> ---
>> >>
>> >> v2:
>> >> Renamed bindings from Globaltop/gtop to Mediatek/mtk.
>> >> Moved current-speed as an optional propertie.
>> >> Removed the status line in the example.
>> >> Added "mediatek,mt3339" compatible.
>> >>
>> >> .../devicetree/bindings/gnss/mediatek.txt | 39
>> >> ++++++++++++++++++++++
>> >> 1 file changed, 39 insertions(+)
>> >> create mode 100644 Documentation/devicetree/bindings/gnss/mediatek.txt
>> >>
>> >
>> > Reviewed-by: Rob Herring <[email protected]>
>>
>> Thanks Rob,
>> If there are no objections by others, I'll stop sending these two patch
>> (1/4 and 2/4) and reference any new patch serie for 3 and 4 as depending
>> on those two.
>
> Generally, you should just resend the whole series unless the
> maintainer has applied some of the patches. I could apply this but
> usually the whole series goes in together.
>
> Rob

OK understood, I'll resend the whole series if needed then.

Loys

--
-L

2019-01-22 10:28:30

by Sean Wang

[permalink] [raw]
Subject: Re: [PATCH v2 2/4] dt-bindings: gnss: add mediatek binding

On Tue, 2019-01-22 at 09:47 +0100, Loys Ollivier wrote:
> On Mon 21 Jan 2019 at 18:44, Sean Wang wrote:
>
> > On Mon, Jan 21, 2019 at 9:29 AM Loys Ollivier <[email protected]>
> > wrote:
> >>
> >>
> >> On Mon 21 Jan 2019 at 17:10, Rob Herring wrote:
> >>
> >> > On Thu, 17 Jan 2019 17:54:32 +0100, Loys Ollivier wrote:
> >> >> Add binding for Mediatek-based GNSS receivers.
> >> >>
> >> >> Signed-off-by: Loys Ollivier <[email protected]>
> >> >> ---
> >> >>
> >> >> v2:
> >> >> Renamed bindings from Globaltop/gtop to Mediatek/mtk.
> >> >> Moved current-speed as an optional propertie.
> >> >> Removed the status line in the example.
> >> >> Added "mediatek,mt3339" compatible.
> >> >>
> >> >> .../devicetree/bindings/gnss/mediatek.txt | 39
> >> >> ++++++++++++++++++++++
> >> >> 1 file changed, 39 insertions(+)
> >> >> create mode 100644 Documentation/devicetree/bindings/gnss/mediatek.txt
> >> >>
> >> >
> >> > Reviewed-by: Rob Herring <[email protected]>
> >>
> >> Thanks Rob,
> >> If there are no objections by others, I'll stop sending these two patch
> >> (1/4 and 2/4) and reference any new patch serie for 3 and 4 as depending
> >> on those two.
> >>
> >
> > Hi Loys,
> >
> > Thanks for adding the first GPS device driver. It's really nice to see
> > more device drivers added to upstream support.
> >
> Hi Sean,
>
> Glad to know you're supporting this initiative.
>
> > Do you mind send the series again with Cc [email protected]
> > ?
> >
> The series already has [email protected] in Cc. Does it
> need a resend ?
>

It doesn't need a resend, it's my mistake. thanks for clarifying soon.

> > Sean
> >
> >> --
> >> -L
> >>
> >> _______________________________________________
> >> Linux-mediatek mailing list
> >> [email protected]
> >> http://lists.infradead.org/mailman/listinfo/linux-mediatek
>
>



2019-01-25 09:08:24

by Johan Hovold

[permalink] [raw]
Subject: Re: [PATCH v2 2/4] dt-bindings: gnss: add mediatek binding

On Thu, Jan 17, 2019 at 05:54:32PM +0100, Loys Ollivier wrote:
> Add binding for Mediatek-based GNSS receivers.
>
> Signed-off-by: Loys Ollivier <[email protected]>
> ---
>
> v2:
> Renamed bindings from Globaltop/gtop to Mediatek/mtk.
> Moved current-speed as an optional propertie.
> Removed the status line in the example.
> Added "mediatek,mt3339" compatible.
>
> .../devicetree/bindings/gnss/mediatek.txt | 39 ++++++++++++++++++++++
> 1 file changed, 39 insertions(+)
> create mode 100644 Documentation/devicetree/bindings/gnss/mediatek.txt
>
> diff --git a/Documentation/devicetree/bindings/gnss/mediatek.txt b/Documentation/devicetree/bindings/gnss/mediatek.txt
> new file mode 100644
> index 000000000000..fd984b4a9a6d
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/gnss/mediatek.txt
> @@ -0,0 +1,39 @@
> +Mediatek-based GNSS Receiver DT binding
> +
> +Mediatek chipsets are used in GNSS-receiver modules produced by several
> +vendors and can use UART, SPI or I2C interfaces.
> +
> +Please see Documentation/devicetree/bindings/gnss/gnss.txt for generic
> +properties.
> +
> +Required properties:
> +
> +- compatible : Must be one of
> +
> + "globaltop,pa6h"
> + "mediatek,mt3339"

I'm not sure it makes sense to add the GPS chip itself as it cannot be
used stand-alone AFAIU, and either not way would require a lot more
resources to be defined than what you add to this binding.

> +
> +- vcc-supply : Main voltage regulator (pin name: 3V3_IN, VCC, VDD)

The pin names in parenthesis were copied from the sirf-star binding and
were used to capture the various names given to this supply by different
vendors. Please drop as it doesn't apply here.

> +
> +Required properties (I2C):
> +- reg : I2C slave address
> +
> +Required properties (SPI):
> +- reg : SPI chip select address

While the mt3339 appears to support these interfaces, the globaltop one
does not.

Have you looked around for a small sample of mt3339-based receivers, to
see whether anyone actually provides these?

> +Optional properties:
> +
> +- timepulse-gpios : Time pulse GPIO
> +- v-bckp-supply : Backup voltage regulator
> +- current-speed : Default UART baud rate

Looks like you forgot the optional NRESET input and 3D-FIX output (even
if the latter might be of limited use).

> +
> +Example:
> +
> +serial@1234 {
> + compatible = "ns16550a";
> +
> + gnss {
> + compatible = "globaltop,pa6h";
> + vcc-supply = <&vcc_3v3>;
> + };
> +};

Johan

2019-01-25 09:13:35

by Johan Hovold

[permalink] [raw]
Subject: Re: [PATCH v2 3/4] gnss: add mtk receiver type support

On Thu, Jan 17, 2019 at 05:54:33PM +0100, Loys Ollivier wrote:
> Add an MTK (Mediatek) type to the "GNSS_TYPE" attribute.
>
> Note that MTK receivers support a subset of NMEA 0183 with vendor
> extensions (e.g. to allow switching to the vendor protocol).

Copy paste error? AFAICT there is no Mediatek vendor protocol, only the
extensions to NMEA.

> Signed-off-by: Loys Ollivier <[email protected]>
> ---
>
> v2: renamed from GTOP to MTK.
>
> include/linux/gnss.h | 1 +
> 1 file changed, 1 insertion(+)
>
> diff --git a/include/linux/gnss.h b/include/linux/gnss.h
> index 43546977098c..36968a0f33e8 100644
> --- a/include/linux/gnss.h
> +++ b/include/linux/gnss.h
> @@ -22,6 +22,7 @@ enum gnss_type {
> GNSS_TYPE_NMEA = 0,
> GNSS_TYPE_SIRF,
> GNSS_TYPE_UBX,
> + GNSS_TYPE_MTK,
>
> GNSS_TYPE_COUNT
> };

Add the gnss_type_names string in this patch along with the define.

Johan

2019-01-25 09:31:04

by Johan Hovold

[permalink] [raw]
Subject: Re: [PATCH v2 4/4] gnss: add driver for mediatek receivers

On Thu, Jan 17, 2019 at 05:54:34PM +0100, Loys Ollivier wrote:
> Add driver for serial-connected Mediatek-based GNSS receivers.
>
> These devices typically boot transmitting vendor specific NMEA output
> sequences. The serial port bit rate is read from the device tree
> "current-speed".
>
> Note that the driver uses the generic GNSS serial implementation and
> therefore essentially only manages power abstracted into three power
> states: ACTIVE, STANDBY, and OFF.
>
> For mediatek receivers with a main supply and no enable-gpios, this simply
> means that the main supply is disabled in STANDBY and OFF (the optional
> backup supply is kept enabled while the driver is bound).
>
> Note that the timepulse-support is left unimplemented.
>
> Signed-off-by: Loys Ollivier <[email protected]>
> ---
>
> v2:
> Renamed from gtop/Globaltop to mtk/Mediatek.
> Added "mediatek,mt3339" compatible.
>
> drivers/gnss/Kconfig | 13 +++++
> drivers/gnss/Makefile | 3 +
> drivers/gnss/core.c | 1 +
> drivers/gnss/mtk.c | 153 ++++++++++++++++++++++++++++++++++++++++++++++++++
> 4 files changed, 170 insertions(+)
> create mode 100644 drivers/gnss/mtk.c
>
> diff --git a/drivers/gnss/Kconfig b/drivers/gnss/Kconfig
> index 6abc88514512..51e6282d092a 100644
> --- a/drivers/gnss/Kconfig
> +++ b/drivers/gnss/Kconfig
> @@ -40,4 +40,17 @@ config GNSS_UBX_SERIAL
>
> If unsure, say N.
>
> +config GNSS_MTK_SERIAL
> + tristate "Mediatek GNSS receiver support"
> + depends on SERIAL_DEV_BUS
> + select GNSS_SERIAL
> + help
> + Say Y here if you have a Mediatek-based GNSS receiver which uses a
> + serial interface.
> +
> + To compile this driver as a module, choose M here: the module will
> + be called gnss-mtk.
> +
> + If unsure, say N.

Add before the SiRF entry too keep the entries sorted.

> +
> endif # GNSS
> diff --git a/drivers/gnss/Makefile b/drivers/gnss/Makefile
> index 5cf0ebe0330a..43318375aa51 100644
> --- a/drivers/gnss/Makefile
> +++ b/drivers/gnss/Makefile
> @@ -14,3 +14,6 @@ gnss-sirf-y := sirf.o
>
> obj-$(CONFIG_GNSS_UBX_SERIAL) += gnss-ubx.o
> gnss-ubx-y := ubx.o
> +
> +obj-$(CONFIG_GNSS_MTK_SERIAL) += gnss-mtk.o
> +gnss-mtk-y := mtk.o

Ditto.

> diff --git a/drivers/gnss/core.c b/drivers/gnss/core.c
> index 4291a0dd22aa..320cfca80d5f 100644
> --- a/drivers/gnss/core.c
> +++ b/drivers/gnss/core.c
> @@ -334,6 +334,7 @@ static const char * const gnss_type_names[GNSS_TYPE_COUNT] = {
> [GNSS_TYPE_NMEA] = "NMEA",
> [GNSS_TYPE_SIRF] = "SiRF",
> [GNSS_TYPE_UBX] = "UBX",
> + [GNSS_TYPE_MTK] = "MTK",
> };
>
> static const char *gnss_type_name(struct gnss_device *gdev)

So this should go in the previous patch.

> diff --git a/drivers/gnss/mtk.c b/drivers/gnss/mtk.c
> new file mode 100644
> index 000000000000..c91d4d251098
> --- /dev/null
> +++ b/drivers/gnss/mtk.c
> @@ -0,0 +1,153 @@
> +// SPDX-License-Identifier: GPL-2.0
> +/*
> + * Mediatek GNSS receiver driver
> + *
> + * Copyright (C) 2018 Loys Ollivier <[email protected]>

As this just a copy of the ubx driver with the "ubx" prefix replaced
with "mtk", you need to retain the original copyright statement.

I'm not even sure the search and replace work is copyrightable at all...

I see now why you wanted merge this with the ubx driver, but I still
think they should be kept apart for now. Maybe we can move common bits
into the generic implementation (library) when we get a third "copy".

The rest of the driver obviously looks fine. ;) Possibly with the
exception of the added mediatek compatible as mentioned before.

> +#ifdef CONFIG_OF
> +static const struct of_device_id mtk_of_match[] = {
> + { .compatible = "globaltop,pa6h" },
> + { .compatible = "mediatek,mt3339" },
> + {},
> +};
> +MODULE_DEVICE_TABLE(of, mtk_of_match);
> +#endif
> +
> +static struct serdev_device_driver mtk_driver = {
> + .driver = {
> + .name = "gnss-mtk",
> + .of_match_table = of_match_ptr(mtk_of_match),
> + .pm = &gnss_serial_pm_ops,
> + },
> + .probe = mtk_probe,
> + .remove = mtk_remove,
> +};
> +module_serdev_device_driver(mtk_driver);
> +
> +MODULE_AUTHOR("Loys Ollivier <[email protected]>");
> +MODULE_DESCRIPTION("Mediatek GNSS receiver driver");
> +MODULE_LICENSE("GPL v2");

Johan

2019-01-28 15:48:12

by Loys Ollivier

[permalink] [raw]
Subject: Re: [PATCH v2 2/4] dt-bindings: gnss: add mediatek binding


On Fri 25 Jan 2019 at 09:07, Johan Hovold wrote:

> On Thu, Jan 17, 2019 at 05:54:32PM +0100, Loys Ollivier wrote:
>> Add binding for Mediatek-based GNSS receivers.
>>
>> Signed-off-by: Loys Ollivier <[email protected]>
>> ---
>>
>> v2:
>> Renamed bindings from Globaltop/gtop to Mediatek/mtk.
>> Moved current-speed as an optional propertie.
>> Removed the status line in the example.
>> Added "mediatek,mt3339" compatible.
>>
>> .../devicetree/bindings/gnss/mediatek.txt | 39
>> ++++++++++++++++++++++
>> 1 file changed, 39 insertions(+)
>> create mode 100644 Documentation/devicetree/bindings/gnss/mediatek.txt
>>
>> diff --git a/Documentation/devicetree/bindings/gnss/mediatek.txt
>> b/Documentation/devicetree/bindings/gnss/mediatek.txt
>> new file mode 100644
>> index 000000000000..fd984b4a9a6d
>> --- /dev/null
>> +++ b/Documentation/devicetree/bindings/gnss/mediatek.txt
>> @@ -0,0 +1,39 @@
>> +Mediatek-based GNSS Receiver DT binding
>> +
>> +Mediatek chipsets are used in GNSS-receiver modules produced by several
>> +vendors and can use UART, SPI or I2C interfaces.
>> +
>> +Please see Documentation/devicetree/bindings/gnss/gnss.txt for generic
>> +properties.
>> +
>> +Required properties:
>> +
>> +- compatible : Must be one of
>> +
>> + "globaltop,pa6h"
>> + "mediatek,mt3339"
>
> I'm not sure it makes sense to add the GPS chip itself as it cannot be
> used stand-alone AFAIU, and either not way would require a lot more
> resources to be defined than what you add to this binding.
>

OK, I find it a bit confusing to have Mediatek bindings but no
compatible Mediatek SoCs.
But it is true that it can't be used stand-alone. I will remove this
reference and also remove it from the mtk.c driver code from this patch
serie.

>> +
>> +- vcc-supply : Main voltage regulator (pin name: 3V3_IN, VCC, VDD)
>
> The pin names in parenthesis were copied from the sirf-star binding and
> were used to capture the various names given to this supply by different
> vendors. Please drop as it doesn't apply here.
>
>> +
>> +Required properties (I2C):
>> +- reg : I2C slave address
>> +
>> +Required properties (SPI):
>> +- reg : SPI chip select address
>
> While the mt3339 appears to support these interfaces, the globaltop one
> does not.
>
> Have you looked around for a small sample of mt3339-based receivers, to
> see whether anyone actually provides these?
>

Again I'm confused by the fact that it is the Mediatek bindings.
Hence why I have added it and why it was not present in the v1 that was
only for Globaltop.
I find it odd mentionning the chipset but not all its interfaces.
I will remove these sections and only list supported interfaces (i.e.
UART). Other interfaces can be added afterward if one finds a board that
provides them.

>> +Optional properties:
>> +
>> +- timepulse-gpios : Time pulse GPIO
>> +- v-bckp-supply : Backup voltage regulator
>> +- current-speed : Default UART baud rate
>
> Looks like you forgot the optional NRESET input and 3D-FIX output (even
> if the latter might be of limited use).
>

Thanks I will clean this section.

>> +
>> +Example:
>> +
>> +serial@1234 {
>> + compatible = "ns16550a";
>> +
>> + gnss {
>> + compatible = "globaltop,pa6h";
>> + vcc-supply = <&vcc_3v3>;
>> + };
>> +};
>
> Johan


--
-L

2019-02-11 08:34:43

by Johan Hovold

[permalink] [raw]
Subject: Re: [PATCH v2 2/4] dt-bindings: gnss: add mediatek binding

On Mon, Jan 28, 2019 at 04:46:53PM +0100, Loys Ollivier wrote:
>
> On Fri 25 Jan 2019 at 09:07, Johan Hovold wrote:
>
> > On Thu, Jan 17, 2019 at 05:54:32PM +0100, Loys Ollivier wrote:
> >> Add binding for Mediatek-based GNSS receivers.
> >>
> >> Signed-off-by: Loys Ollivier <[email protected]>
> >> ---
> >>
> >> v2:
> >> Renamed bindings from Globaltop/gtop to Mediatek/mtk.
> >> Moved current-speed as an optional propertie.
> >> Removed the status line in the example.
> >> Added "mediatek,mt3339" compatible.

> >> +++ b/Documentation/devicetree/bindings/gnss/mediatek.txt
> >> @@ -0,0 +1,39 @@
> >> +Mediatek-based GNSS Receiver DT binding
> >> +
> >> +Mediatek chipsets are used in GNSS-receiver modules produced by several
> >> +vendors and can use UART, SPI or I2C interfaces.
> >> +
> >> +Please see Documentation/devicetree/bindings/gnss/gnss.txt for generic
> >> +properties.
> >> +
> >> +Required properties:
> >> +
> >> +- compatible : Must be one of
> >> +
> >> + "globaltop,pa6h"
> >> + "mediatek,mt3339"
> >
> > I'm not sure it makes sense to add the GPS chip itself as it cannot be
> > used stand-alone AFAIU, and either not way would require a lot more
> > resources to be defined than what you add to this binding.
>
> OK, I find it a bit confusing to have Mediatek bindings but no
> compatible Mediatek SoCs.
> But it is true that it can't be used stand-alone. I will remove this
> reference and also remove it from the mtk.c driver code from this patch
> serie.

> >> +Required properties (I2C):
> >> +- reg : I2C slave address
> >> +
> >> +Required properties (SPI):
> >> +- reg : SPI chip select address
> >
> > While the mt3339 appears to support these interfaces, the globaltop one
> > does not.
> >
> > Have you looked around for a small sample of mt3339-based receivers, to
> > see whether anyone actually provides these?
>
> Again I'm confused by the fact that it is the Mediatek bindings.
> Hence why I have added it and why it was not present in the v1 that was
> only for Globaltop.

This is no different from the sirfstar driver for receivers based on
those chipsets but manufactured by various other vendors.

> I find it odd mentionning the chipset but not all its interfaces.
> I will remove these sections and only list supported interfaces (i.e.
> UART). Other interfaces can be added afterward if one finds a board that
> provides them.

Right, but please do look around for other receivers using this chipset
so that we can make the binding generic enough to cover those as well
(e.g. by choosing representative resource names).

Johan

2019-02-11 14:26:18

by Loys Ollivier

[permalink] [raw]
Subject: Re: [PATCH v2 2/4] dt-bindings: gnss: add mediatek binding


On Mon 11 Feb 2019 at 08:33, Johan Hovold <[email protected]> wrote:

> On Mon, Jan 28, 2019 at 04:46:53PM +0100, Loys Ollivier wrote:
>>
>> On Fri 25 Jan 2019 at 09:07, Johan Hovold wrote:
>>
>> > On Thu, Jan 17, 2019 at 05:54:32PM +0100, Loys Ollivier wrote:
>> >> Add binding for Mediatek-based GNSS receivers.
>> >>
>> >> Signed-off-by: Loys Ollivier <[email protected]>
>> >> ---
>> >>
>> >> v2:
>> >> Renamed bindings from Globaltop/gtop to Mediatek/mtk.
>> >> Moved current-speed as an optional propertie.
>> >> Removed the status line in the example.
>> >> Added "mediatek,mt3339" compatible.
>
>> >> +++ b/Documentation/devicetree/bindings/gnss/mediatek.txt
>> >> @@ -0,0 +1,39 @@
>> >> +Mediatek-based GNSS Receiver DT binding
>> >> +
>> >> +Mediatek chipsets are used in GNSS-receiver modules produced by several
>> >> +vendors and can use UART, SPI or I2C interfaces.
>> >> +
>> >> +Please see Documentation/devicetree/bindings/gnss/gnss.txt for generic
>> >> +properties.
>> >> +
>> >> +Required properties:
>> >> +
>> >> +- compatible : Must be one of
>> >> +
>> >> + "globaltop,pa6h"
>> >> + "mediatek,mt3339"
>> >
>> > I'm not sure it makes sense to add the GPS chip itself as it cannot be
>> > used stand-alone AFAIU, and either not way would require a lot more
>> > resources to be defined than what you add to this binding.
>>
>> OK, I find it a bit confusing to have Mediatek bindings but no
>> compatible Mediatek SoCs.
>> But it is true that it can't be used stand-alone. I will remove this
>> reference and also remove it from the mtk.c driver code from this patch
>> serie.
>
>> >> +Required properties (I2C):
>> >> +- reg : I2C slave address
>> >> +
>> >> +Required properties (SPI):
>> >> +- reg : SPI chip select address
>> >
>> > While the mt3339 appears to support these interfaces, the globaltop one
>> > does not.
>> >
>> > Have you looked around for a small sample of mt3339-based receivers, to
>> > see whether anyone actually provides these?
>>
>> Again I'm confused by the fact that it is the Mediatek bindings.
>> Hence why I have added it and why it was not present in the v1 that was
>> only for Globaltop.
>
> This is no different from the sirfstar driver for receivers based on
> those chipsets but manufactured by various other vendors.
>
Indeed.

>> I find it odd mentionning the chipset but not all its interfaces.
>> I will remove these sections and only list supported interfaces (i.e.
>> UART). Other interfaces can be added afterward if one finds a board that
>> provides them.
>
> Right, but please do look around for other receivers using this chipset
> so that we can make the binding generic enough to cover those as well
> (e.g. by choosing representative resource names).
>
OK will have a look.

> Johan


--
-L

2019-02-13 15:56:26

by Loys Ollivier

[permalink] [raw]
Subject: Re: [PATCH v2 2/4] dt-bindings: gnss: add mediatek binding


On Mon 11 Feb 2019 at 14:17, Loys Ollivier <[email protected]> wrote:

> On Mon 11 Feb 2019 at 08:33, Johan Hovold <[email protected]> wrote:
>
>> On Mon, Jan 28, 2019 at 04:46:53PM +0100, Loys Ollivier wrote:
>>>
>>> On Fri 25 Jan 2019 at 09:07, Johan Hovold wrote:
>>>
>>> > On Thu, Jan 17, 2019 at 05:54:32PM +0100, Loys Ollivier wrote:
>>> >> +Required properties (I2C):
>>> >> +- reg : I2C slave address
>>> >> +
>>> >> +Required properties (SPI):
>>> >> +- reg : SPI chip select address
>>> >
>>> > While the mt3339 appears to support these interfaces, the globaltop one
>>> > does not.
>>> >
>>> > Have you looked around for a small sample of mt3339-based receivers, to
>>> > see whether anyone actually provides these?
>>>
>>> Again I'm confused by the fact that it is the Mediatek bindings.
>>> Hence why I have added it and why it was not present in the v1 that was
>>> only for Globaltop.
>>
>> This is no different from the sirfstar driver for receivers based on
>> those chipsets but manufactured by various other vendors.
>>
> Indeed.
>
>>> I find it odd mentionning the chipset but not all its interfaces.
>>> I will remove these sections and only list supported interfaces (i.e.
>>> UART). Other interfaces can be added afterward if one finds a board that
>>> provides them.
>>
>> Right, but please do look around for other receivers using this chipset
>> so that we can make the binding generic enough to cover those as well
>> (e.g. by choosing representative resource names).
>>
> OK will have a look.

The only mt3339-based receivers I have found are:
- [0] Globaltop
- [1] Locosys / Pololu
They both only provide the UART interface and do not list the I2C/SPI
interfaces.

[0] https://cdn-shop.adafruit.com/datasheets/GlobalTop-FGPMMOPA6H-Datasheet-V0A.pdf
[1] https://www.pololu.com/file/0J641/LS20030~3_datasheet_v1.3.pdf

Loys
>
>> Johan


--
-L

2019-02-13 15:57:45

by Loys Ollivier

[permalink] [raw]
Subject: Re: [PATCH v2 2/4] dt-bindings: gnss: add mediatek binding

On Mon 11 Feb 2019 at 14:17, Loys Ollivier <[email protected]> wrote:

> On Mon 11 Feb 2019 at 08:33, Johan Hovold <[email protected]> wrote:
>
>> On Mon, Jan 28, 2019 at 04:46:53PM +0100, Loys Ollivier wrote:
>>>
>>> On Fri 25 Jan 2019 at 09:07, Johan Hovold wrote:
>>>
>>> > On Thu, Jan 17, 2019 at 05:54:32PM +0100, Loys Ollivier wrote:
>>> >> Add binding for Mediatek-based GNSS receivers.
>>> >>
>>> >> Signed-off-by: Loys Ollivier <[email protected]>
>>> >> ---
>>> >>
>>> >> v2:
>>> >> Renamed bindings from Globaltop/gtop to Mediatek/mtk.
>>> >> Moved current-speed as an optional propertie.
>>> >> Removed the status line in the example.
>>> >> Added "mediatek,mt3339" compatible.
>>
>>> >> +++ b/Documentation/devicetree/bindings/gnss/mediatek.txt
>>> >> @@ -0,0 +1,39 @@
>>> >> +Mediatek-based GNSS Receiver DT binding
>>> >> +
>>> >> +Mediatek chipsets are used in GNSS-receiver modules produced by several
>>> >> +vendors and can use UART, SPI or I2C interfaces.
>>> >> +
>>> >> +Please see Documentation/devicetree/bindings/gnss/gnss.txt for generic
>>> >> +properties.
>>> >> +
>>> >> +Required properties:
>>> >> +
>>> >> +- compatible : Must be one of
>>> >> +
>>> >> + "globaltop,pa6h"
>>> >> + "mediatek,mt3339"
>>> >
>>> > I'm not sure it makes sense to add the GPS chip itself as it cannot be
>>> > used stand-alone AFAIU, and either not way would require a lot more
>>> > resources to be defined than what you add to this binding.
>>>
>>> OK, I find it a bit confusing to have Mediatek bindings but no
>>> compatible Mediatek SoCs.
>>> But it is true that it can't be used stand-alone. I will remove this
>>> reference and also remove it from the mtk.c driver code from this patch
>>> serie.
>>
>>> >> +Required properties (I2C):
>>> >> +- reg : I2C slave address
>>> >> +
>>> >> +Required properties (SPI):
>>> >> +- reg : SPI chip select address
>>> >
>>> > While the mt3339 appears to support these interfaces, the globaltop one
>>> > does not.
>>> >
>>> > Have you looked around for a small sample of mt3339-based receivers, to
>>> > see whether anyone actually provides these?
>>>
>>> Again I'm confused by the fact that it is the Mediatek bindings.
>>> Hence why I have added it and why it was not present in the v1 that was
>>> only for Globaltop.
>>
>> This is no different from the sirfstar driver for receivers based on
>> those chipsets but manufactured by various other vendors.
>>
> Indeed.
>
>>> I find it odd mentionning the chipset but not all its interfaces.
>>> I will remove these sections and only list supported interfaces (i.e.
>>> UART). Other interfaces can be added afterward if one finds a board that
>>> provides them.
>>
>> Right, but please do look around for other receivers using this chipset
>> so that we can make the binding generic enough to cover those as well
>> (e.g. by choosing representative resource names).
>>
> OK will have a look.

The only mt3339-based receivers I have found are:
- [0] Globaltop
- [1] Locosys / Pololu
They both only provide the UART interface and do not list the I2C/SPI
interfaces.

[0] https://cdn-shop.adafruit.com/datasheets/GlobalTop-FGPMMOPA6H-Datasheet-V0A.pdf
[1] https://www.pololu.com/file/0J641/LS20030~3_datasheet_v1.3.pdf

>
>> Johan



--
-L

2019-02-14 17:15:20

by Johan Hovold

[permalink] [raw]
Subject: Re: [PATCH v2 2/4] dt-bindings: gnss: add mediatek binding

On Wed, Feb 13, 2019 at 04:24:00PM +0100, Loys Ollivier wrote:
> On Mon 11 Feb 2019 at 14:17, Loys Ollivier <[email protected]> wrote:
> > On Mon 11 Feb 2019 at 08:33, Johan Hovold <[email protected]> wrote:

> >> Right, but please do look around for other receivers using this chipset
> >> so that we can make the binding generic enough to cover those as well
> >> (e.g. by choosing representative resource names).
> >>
> > OK will have a look.
>
> The only mt3339-based receivers I have found are:
> - [0] Globaltop
> - [1] Locosys / Pololu
> They both only provide the UART interface and do not list the I2C/SPI
> interfaces.
>
> [0] https://cdn-shop.adafruit.com/datasheets/GlobalTop-FGPMMOPA6H-Datasheet-V0A.pdf
> [1] https://www.pololu.com/file/0J641/LS20030~3_datasheet_v1.3.pdf

I found tree more:

- Globaltop PA6C

- https://cdn-shop.adafruit.com/datasheets/GlobalTop-FGPMMOPA6C-Datasheet-V0A-Preliminary.pdf

- Linx RM series
- https://linxtechnologies.com/wp/wp-content/uploads/rxm-gps-rm.pdf

- ublox IT530
- https://www.u-blox.com/sites/default/files/products/documents/IT530_DataSheet_%28FTX-HW-12008%29.pdf

All with uart-interface only and similar pins names, although the ublox
device do have some additional features we can worry about later.

As all but the ublox device use VBACKUP for the backup supply, do you
mind if I change the binding to use "vbackup-supply" instead of
"v-bckp-supply" (which is a ublox-ism) when applying?

Thanks,
Johan

2019-02-15 16:14:57

by Loys Ollivier

[permalink] [raw]
Subject: Re: [PATCH v2 2/4] dt-bindings: gnss: add mediatek binding


On Thu 14 Feb 2019 at 09:11, Johan Hovold <[email protected]> wrote:

> On Wed, Feb 13, 2019 at 04:24:00PM +0100, Loys Ollivier wrote:
>> On Mon 11 Feb 2019 at 14:17, Loys Ollivier <[email protected]> wrote:
>> > On Mon 11 Feb 2019 at 08:33, Johan Hovold <[email protected]> wrote:
>
>> >> Right, but please do look around for other receivers using this chipset
>> >> so that we can make the binding generic enough to cover those as well
>> >> (e.g. by choosing representative resource names).
>> >>
>> > OK will have a look.
>>
>> The only mt3339-based receivers I have found are:
>> - [0] Globaltop
>> - [1] Locosys / Pololu
>> They both only provide the UART interface and do not list the I2C/SPI
>> interfaces.
>>
>> [0] https://cdn-shop.adafruit.com/datasheets/GlobalTop-FGPMMOPA6H-Datasheet-V0A.pdf
>> [1] https://www.pololu.com/file/0J641/LS20030~3_datasheet_v1.3.pdf
>
> I found tree more:
>
Ah nice.

> - Globaltop PA6C
>
> - https://cdn-shop.adafruit.com/datasheets/GlobalTop-FGPMMOPA6C-Datasheet-V0A-Preliminary.pdf
>
> - Linx RM series
> - https://linxtechnologies.com/wp/wp-content/uploads/rxm-gps-rm.pdf

This is a different chip: MT3337; Apparently this chip only provides an
UART interface: https://labs.mediatek.com/en/chipset/MT3337
However it looks interesting. I'll look for a sample to test it in the
future :)
>
> - ublox IT530
> - https://www.u-blox.com/sites/default/files/products/documents/IT530_DataSheet_%28FTX-HW-12008%29.pdf
>
> All with uart-interface only and similar pins names, although the ublox
> device do have some additional features we can worry about later.
>
> As all but the ublox device use VBACKUP for the backup supply, do you
> mind if I change the binding to use "vbackup-supply" instead of
> "v-bckp-supply" (which is a ublox-ism) when applying?

I don't mind. You can go ahead and change the binding.
For reference, the v4 patch serie:
https://lkml.kernel.org/r/[email protected]

Thanks,
Loys

>
> Thanks,
> Johan


--
-L

2019-02-15 16:44:29

by Johan Hovold

[permalink] [raw]
Subject: Re: [PATCH v2 2/4] dt-bindings: gnss: add mediatek binding

On Fri, Feb 15, 2019 at 01:10:35PM +0100, Loys Ollivier wrote:
>
> On Thu 14 Feb 2019 at 09:11, Johan Hovold <[email protected]> wrote:
>
> > On Wed, Feb 13, 2019 at 04:24:00PM +0100, Loys Ollivier wrote:
> >> On Mon 11 Feb 2019 at 14:17, Loys Ollivier <[email protected]> wrote:
> >> > On Mon 11 Feb 2019 at 08:33, Johan Hovold <[email protected]> wrote:
> >
> >> >> Right, but please do look around for other receivers using this chipset
> >> >> so that we can make the binding generic enough to cover those as well
> >> >> (e.g. by choosing representative resource names).
> >> >>
> >> > OK will have a look.
> >>
> >> The only mt3339-based receivers I have found are:
> >> - [0] Globaltop
> >> - [1] Locosys / Pololu
> >> They both only provide the UART interface and do not list the I2C/SPI
> >> interfaces.
> >>
> >> [0] https://cdn-shop.adafruit.com/datasheets/GlobalTop-FGPMMOPA6H-Datasheet-V0A.pdf
> >> [1] https://www.pololu.com/file/0J641/LS20030~3_datasheet_v1.3.pdf
> >
> > I found tree more:
> >
> Ah nice.
>
> > - Globaltop PA6C
> >
> > - https://cdn-shop.adafruit.com/datasheets/GlobalTop-FGPMMOPA6C-Datasheet-V0A-Preliminary.pdf
> >
> > - Linx RM series
> > - https://linxtechnologies.com/wp/wp-content/uploads/rxm-gps-rm.pdf
>
> This is a different chip: MT3337; Apparently this chip only provides an
> UART interface: https://labs.mediatek.com/en/chipset/MT3337
> However it looks interesting. I'll look for a sample to test it in the
> future :)

Bah, sorry, I used the wrong link. Here's the mt3339-based one:

https://linxtechnologies.com/wp/wp-content/uploads/rxm-gps-fm.pdf

But hopefully we can reuse this driver for mt3337 and any other
variants too.

> > - ublox IT530
> > - https://www.u-blox.com/sites/default/files/products/documents/IT530_DataSheet_%28FTX-HW-12008%29.pdf
> >
> > All with uart-interface only and similar pins names, although the ublox
> > device do have some additional features we can worry about later.
> >
> > As all but the ublox device use VBACKUP for the backup supply, do you
> > mind if I change the binding to use "vbackup-supply" instead of
> > "v-bckp-supply" (which is a ublox-ism) when applying?
>
> I don't mind. You can go ahead and change the binding.
> For reference, the v4 patch serie:
> https://lkml.kernel.org/r/[email protected]

Thanks, now updated and applied.

Johan