From: Pavel Machek <pavel@ucw.cz>
To: Tony Lindgren <tony@atomide.com>
Cc: Johan Hovold <johan@kernel.org>,
Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
Rob Herring <robh@kernel.org>,
Alan Cox <gnomes@lxorguk.ukuu.org.uk>,
Lee Jones <lee.jones@linaro.org>, Jiri Slaby <jslaby@suse.cz>,
Merlijn Wajer <merlijn@wizzup.org>,
Peter Hurley <peter@hurleysoftware.com>,
Sebastian Reichel <sre@kernel.org>,
linux-serial@vger.kernel.org, devicetree@vger.kernel.org,
linux-kernel@vger.kernel.org, linux-omap@vger.kernel.org
Subject: Re: [PATCHv6 0/4] n_gsm serdev support and protocol driver for droid4 modem
Date: Sun, 26 Apr 2020 09:27:13 +0200 [thread overview]
Message-ID: <20200426072713.GA31008@amd> (raw)
In-Reply-To: <20200424221515.GM37466@atomide.com>
[-- Attachment #1: Type: text/plain, Size: 7713 bytes --]
Hi!
> > > > Here's v4 set of n_gsm serdev support patches, and the related protocol
> > > > driver for the modem found on Motorola Mapphone phones and tablets
> > > > like droid4.
> > > >
> > > > This series only adds basic character device support for the serdev
> > > > driver. Other serdev consumer drivers for specific devices will be
> > > > posted separately.
> > >
> > > I'm still missing an architectural (design) overview here -- reviewer
> > > time is a scarce resource.
> > >
> > > I also suggested earlier that you include, at least as an RFC, one or
> > > more of your child-device drivers so that we can see how this ends up
> > > being used in the end (including an example devicetree).
> >
> > Note that this is useful on its own: we have ofonod running on the top
> > of this doing calls and SMSes.
>
> Yup.
>
> > Tony: I know you have drivers depending on this somewhere (audio
> > routing and GPS), but I can't find them. It is not droid4-pending-v5.6
> > AFAICT. Do you have a pointer / could you publish them somewhere?
>
> Hmm they should be there in droid4-pending-v5.6 branch [0]:
>
> $ git log --abbrev=12 --pretty=format:"%h (\"%s\")" \
> v5.6..droid4-pending-v5.6 | grep -i -e gsm -e mot -e mdm
> e09590a260a4 ("mfd: motmdm: Fix oops on unload of motorola-mdm")
> f9252f9ff6bd ("mfd: motmdm: Revert bad list change")
> d733dcaf4416 ("mfd: motmdm: Fix issue with receiving data before ddata is set")
> 452d2b5d4c95 ("n_gsm: Build fixes for make randconfig build")
> 6882b27ea92a ("phy: mapphone-mdm6600: Fix write timeouts with shorter GPIO toggle interval")
> 58ff58c4b520 ("mfd: motmdm: Add basic DTMF support")
> e92b6f30e5ae ("ASoC: audio-graph-card: Add audio mixer for motorold mdm6600")
> c2caea5767d5 ("gnss: mot-mdm6600: Add support for Motorola Mapphone MDM6600 modem")
> a5f73b7b06f6 ("mfd: motmdm: Add Motorola TS 27.010 serdev driver for devices like droid4")
> 6c311d5aeb0a ("dt-bindings: mfd: motmdm: Add binding for motorola-mdm")
> cd02274b920e ("tty: n_gsm: Add support for serdev drivers")
> a73a48321c98 ("phy: mapphone-mdm6600: Fix timeouts by adding wake-up handling")
Thanks for pointers, I was lost in all the git trees. Port is not
quite trivial :-(.
I tried to port GPS and codec support over to new version of base
patches, but I get oops when I try to open the GPS:
Best regards,
Pavel
[ 182.877014] bfe0: 00000005 bed23af8 b6f279cf b6eb46f6 00070030
bed23ea7 00000000 00000000
[ 182.901672] [<c06e7ba8>] (motmdm_gnss_open) from [<c06e71d4>]
(gnss_open+0x7c/0xb0)
[ 182.901672] [<c06e71d4>] (gnss_open) from [<c0221fe0>]
(chrdev_open+0x9c/0x194)
[ 182.901672] [<c0221fe0>] (chrdev_open) from [<c0219524>]
(do_dentry_open+0x21c/0x3e8)
[ 182.901672] [<c0219524>] (do_dentry_open) from [<c022b424>]
(path_openat+0x8b0/0xc1c)
[ 182.901672] [<c022b424>] (path_openat) from [<c022d0ac>]
(do_filp_open+0x60/0xb4)
[ 182.940002] [<c022d0ac>] (do_filp_open) from [<c0219958>]
(do_sys_openat2+0x1f0/0x2f4)
[ 182.940002] [<c0219958>] (do_sys_openat2) from [<c021ada8>]
(do_sys_open+0x98:
diff --git a/drivers/gnss/Kconfig b/drivers/gnss/Kconfig
index 960178dfad47..13b91034e3ea 100644
--- a/drivers/gnss/Kconfig
+++ b/drivers/gnss/Kconfig
@@ -15,7 +15,6 @@ if GNSS
config GNSS_MOTMDM
tristate "Motorola Modem TS 27.010 serdev GNSS receiver support"
- depends on MFD_MOTMDM
---help---
Say Y here if you have a Motorola modem using TS 27.010 line
discipline for GNSS such as a Motorola Mapphone series device
diff --git a/drivers/tty/serdev/protocol/serdev-ngsm-motmdm.c b/drivers/tty/serdev/protocol/serdev-ngsm-motmdm.c
index 97eb349f5f13..f234a0cd2fb7 100644
--- a/drivers/tty/serdev/protocol/serdev-ngsm-motmdm.c
+++ b/drivers/tty/serdev/protocol/serdev-ngsm-motmdm.c
@@ -477,7 +477,7 @@ static int motmdm_send_command(struct device *dev,
return err;
}
-static int motmdm_register_dlci(struct device *dev,
+int motmdm_register_dlci(struct device *dev,
struct motmdm_dlci *mot_dlci)
{
struct motmdm *ddata;
@@ -522,7 +522,7 @@ static int motmdm_register_dlci(struct device *dev,
return err;
}
-static void motmdm_unregister_dlci(struct device *dev,
+void motmdm_unregister_dlci(struct device *dev,
struct motmdm_dlci *mot_dlci)
{
struct motmdm *ddata;
diff --git a/include/linux/mfd/motorola-mdm.h b/include/linux/mfd/motorola-mdm.h
new file mode 100644
index 000000000000..aae61050cd34
--- /dev/null
+++ b/include/linux/mfd/motorola-mdm.h
@@ -0,0 +1,84 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+
+struct gsm_serdev_dlci;
+struct kfifo;
+struct motmdm_response;
+
+enum motmdm_dlci_nr {
+ MOTMDM_DLCI1 = 1,
+ MOTMDM_DLCI2,
+ MOTMDM_DLCI3,
+ MOTMDM_DLCI4,
+ MOTMDM_DLCI5,
+ MOTMDM_DLCI6,
+ MOTMDM_DLCI7,
+ MOTMDM_DLCI8,
+ MOTMDM_DLCI9,
+ MOTMDM_DLCI10,
+ MOTMDM_DLCI11,
+ MOTMDM_DLCI12,
+ MOTMDM_DLCI13,
+ MOTMDM_DLCI14,
+ MOTMDM_DLCI15,
+};
+
+enum motmdm_state {
+ MOTMDM_STATE_IDLE = 0,
+ MOTMDM_STATE_DIAL = 1,
+ MOTMDM_STATE_ANSWERING = 2,
+ MOTMDM_STATE_CONNECTING = 3,
+ MOTMDM_STATE_INCOMING = 4,
+ MOTMDM_STATE_CONNECTED = 5,
+ MOTMDM_STATE_HANGING_UP = 6,
+ MOTMDM_STATE_DISCONNECTED = 7,
+};
+
+struct motmdm_dlci {
+ struct gsm_serdev_dlci gsm_dlci;
+ struct list_head node;
+ wait_queue_head_t read_queue;
+ struct kfifo read_fifo;
+ int line;
+ u16 id;
+ int (*send_command)(struct device *dev, struct motmdm_dlci *mot_dlci,
+ unsigned long timeout_ms, const unsigned char *cmd,
+ size_t cmdlen,
+ unsigned char *rsp, size_t rsplen);
+ int (*handle_command)(struct motmdm_dlci *mot_dlci, int id,
+ const unsigned char *buf, size_t len);
+ int (*receive_data)(struct motmdm_dlci *mot_dlci,
+ const unsigned char *buf,
+ size_t len);
+ int (*write)(struct device *dev, struct motmdm_dlci *mot_dlci,
+ int cmdid, const unsigned char *buf, size_t count);
+ int (*notify)(struct motmdm_dlci *mot_dlci, enum motmdm_state);
+ struct list_head list;
+ void *privdata; /* Do not use, internal data */
+ void *drvdata; /* Available for consumer drivers */
+};
+
+int motmdm_register_dlci(struct device *dev, struct motmdm_dlci *mot_dlci);
+void motmdm_unregister_dlci(struct device *dev, struct motmdm_dlci *mot_dlci);
+
+static inline
+int motmdm_send_command(struct device *dev, struct motmdm_dlci *mot_dlci,
+ unsigned long timeout_ms, const unsigned char *cmd,
+ size_t cmdlen, unsigned char *rsp, size_t rsplen)
+{
+ if (mot_dlci && mot_dlci->send_command)
+ return mot_dlci->send_command(dev, mot_dlci,
+ timeout_ms, cmd, cmdlen,
+ rsp, rsplen);
+ else
+ return -EINVAL;
+}
+
+static inline
+int motmdm_write(struct device *dev, struct motmdm_dlci *mot_dlci,
+ const unsigned char *buf, size_t count)
+{
+ if (mot_dlci && mot_dlci->write)
+ return mot_dlci->write(dev, mot_dlci, -1, buf, count);
+ else
+ return -EINVAL;
+}
diff --git a/sound/soc/codecs/Kconfig b/sound/soc/codecs/Kconfig
index 3635fc0ab2a6..63d8d3e731ff 100644
--- a/sound/soc/codecs/Kconfig
+++ b/sound/soc/codecs/Kconfig
@@ -878,7 +878,6 @@ config SND_SOC_MAX9860
config SND_SOC_MOTMDM
tristate "Motorola Modem TS 27.010 Voice Call Codec"
- depends on MFD_MOTMDM
help
Enable support for Motorola TS 27.010 line discipline serdev
voice call codec driver for Motorola Mapphone series of devices
--
DENX Software Engineering GmbH, Managing Director: Wolfgang Denk
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 181 bytes --]
next prev parent reply other threads:[~2020-04-26 7:27 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-04-21 23:27 [PATCHv6 0/4] n_gsm serdev support and protocol driver for droid4 modem Tony Lindgren
2020-04-21 23:27 ` [PATCH 1/4] tty: n_gsm: Add support for serdev drivers Tony Lindgren
2020-04-21 23:27 ` [PATCH 2/4] serdev: ngsm-motmdm: Add Motorola TS 27.010 serdev modem driver for droid4 Tony Lindgren
2020-04-21 23:27 ` [PATCH 3/4] dt-bindings: serdev: motmdm: Add binding for motorola-mdm Tony Lindgren
2020-04-21 23:27 ` [PATCH 4/4] ARM: dts: omap4-droid4: Enable basic modem support Tony Lindgren
2020-04-23 11:43 ` [PATCHv6 0/4] n_gsm serdev support and protocol driver for droid4 modem Johan Hovold
2020-04-23 15:37 ` Tony Lindgren
2020-04-23 23:27 ` Tony Lindgren
2020-04-25 16:58 ` Tony Lindgren
2020-05-28 8:24 ` Johan Hovold
2020-12-20 22:48 ` Pavel Machek
2020-12-24 8:02 ` Tony Lindgren
2020-12-24 14:59 ` Pavel Machek
2021-01-02 16:23 ` Pavel Machek
2020-04-24 21:50 ` Pavel Machek
2020-04-24 22:15 ` Tony Lindgren
2020-04-26 7:27 ` Pavel Machek [this message]
2020-04-26 20:07 ` Pavel Machek
2020-04-26 23:25 ` Tony Lindgren
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20200426072713.GA31008@amd \
--to=pavel@ucw.cz \
--cc=devicetree@vger.kernel.org \
--cc=gnomes@lxorguk.ukuu.org.uk \
--cc=gregkh@linuxfoundation.org \
--cc=johan@kernel.org \
--cc=jslaby@suse.cz \
--cc=lee.jones@linaro.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-omap@vger.kernel.org \
--cc=linux-serial@vger.kernel.org \
--cc=merlijn@wizzup.org \
--cc=peter@hurleysoftware.com \
--cc=robh@kernel.org \
--cc=sre@kernel.org \
--cc=tony@atomide.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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.