On Mon, 12 Apr 2021 21:23:06 +0200 Loic Poulain wrote: > This change introduces initial support for a WWAN framework. Given the > complexity and heterogeneity of existing WWAN hardwares and interfaces, > there is no strict definition of what a WWAN device is and how it should > be represented. It's often a collection of multiple devices that perform > the global WWAN feature (netdev, tty, chardev, etc). > > One usual way to expose modem controls and configuration is via high > level protocols such as the well known AT command protocol, MBIM or > QMI. The USB modems started to expose them as character devices, and > user daemons such as ModemManager learnt to use them. > > This initial version adds the concept of WWAN port, which is a logical > pipe to a modem control protocol. The protocols are rawly exposed to > user via character device, allowing straigthforward support in existing > tools (ModemManager, ofono...). The WWAN core takes care of the generic > part, including character device management, and relies on port driver > operations to receive/submit protocol data. > > Since the different devices exposing protocols for a same WWAN hardware > do not necessarily know about each others (e.g. two different USB > interfaces, PCI/MHI channel devices...) and can be created/removed in > different orders, the WWAN core ensures that all WAN ports contributing > to the 'whole' WWAN feature are grouped under the same virtual WWAN > device, relying on the provided parent device (e.g. mhi controller, > USB device). It's a 'trick' I copied from Johannes's earlier WWAN > subsystem proposal. > > This initial version is purposely minimalist, it's essentially moving > the generic part of the previously proposed mhi_wwan_ctrl driver inside > a common WWAN framework, but the implementation is open and flexible > enough to allow extension for further drivers. > > Signed-off-by: Loic Poulain <loic.poulain@xxxxxxxxxx> > +/** > + * enum wwan_port_type - WWAN port types > + * @WWAN_PORT_AT: AT commands > + * @WWAN_PORT_MBIM: Mobile Broadband Interface Model control > + * @WWAN_PORT_QMI: Qcom modem/MSM interface for modem control > + * @WWAN_PORT_QCDM: Qcom Modem diagnostic interface > + * @WWAN_PORT_FIREHOSE: XML based command protocol > + * @WWAN_PORT_MAX > + */ > +enum wwan_port_type { > + WWAN_PORT_AT, > + WWAN_PORT_MBIM, > + WWAN_PORT_QMI, > + WWAN_PORT_QCDM, > + WWAN_PORT_FIREHOSE, > + WWAN_PORT_MAX, > +}; include/linux/wwan.h:28: warning: Enum value 'WWAN_PORT_MAX' not described in enum 'wwan_port_type'