      "drivers/drivers.c",
 diff --git a/drivers/driver_pds.c b/drivers/driver_pds.c
 new file mode 100644
-index 000000000..734b40f83
+index 000000000..2ac77ec17
 --- /dev/null
 +++ b/drivers/driver_pds.c
-@@ -0,0 +1,327 @@
+@@ -0,0 +1,406 @@
++/*
++ * Qualcomm PDS Interface driver.
++ *
++ * Tested in Dragonboard410c (APQ8016) PDS service.
++ *
++ * This file is Copyright 2020 by Linaro Limited
++ * SPDX-License-Identifier: BSD-2-clause
++ */
++
 +#include "../include/gpsd_config.h"  /* must be before all includes */
 +
 +#include <sys/socket.h>

Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>
Signed-off-by: Aníbal Limón <anibal.limon@linaro.org>
---
 SConscript     |  10 ++
 driver_pds.c   | 325 +++++++++++++++++++++++++++++++++++++++++++++++++
 driver_pds.h   |  20 +++
 drivers.c      |   5 +
 gpsd.h         |   2 +
 libgpsd_core.c |  15 ++-
 6 files changed, 376 insertions(+), 1 deletion(-)
 create mode 100644 driver_pds.c
 create mode 100644 driver_pds.h

diff --git a/SConscript b/SConstruct
index 33e0ff326..d4ae81979 100644
--- a/SConscript
+++ b/SConscript
@@ -192,6 +192,7 @@ boolopts = (
     ("tripmate",      True,  "DeLorme TripMate support"),
     ("tsip",          True,  "Trimble TSIP support"),
     ("ublox",         True,  "u-blox Protocol support"),
+    ("pds",           True,  "Qualcomm PDS support"),
     # Non-GPS protocols
     ("aivdm",         True,  "AIVDM support"),
     ("gpsclock",      True,  "GPSClock support"),
@@ -977,6 +978,14 @@ else:
         announce("You do not have kernel CANbus available.")
         config.env["nmea2000"] = False
 
+    if config.CheckHeader(["bits/sockaddr.h", "linux/qrtr.h"]):
+        confdefs.append("#define HAVE_LINUX_QRTR_H 1\n")
+        announce("You have kernel QRTR available.")
+    else:

+
+		if (tlv->key == QMI_TLV_NMEA) {
+			memcpy(session->lexer.outbuffer, tlv->value, tlv->len);
+			session->lexer.type = NMEA_PACKET;
+			session->lexer.outbuffer[tlv->len] = 0;
+			session->lexer.outbuflen = tlv->len;
+			break;
