# Copyright (c) 2014 The Chromium OS Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

# This file specifies udev rules to identify a tty or usb device associated
# with a modem and change the file permissions of the device such that
# ModemManager can access the device. The rules should be checked after those
# specified in 51-mist.rules, and before those specified in 55-serial.rules and
# 77-mm-*.rules.

#-------------------------------------------------------------------------------
# 'usb' devices

# A 'cdc-wdm' device is from a MBIM and QMI-based modems.
KERNEL=="cdc-wdm[0-9]", SUBSYSTEM=="usbmisc", GOTO="modem_change_mode"

#-------------------------------------------------------------------------------
# 'tty' devices

KERNEL!="tty[A-Z]*[0-9]", GOTO="modem_end"
SUBSYSTEM!="tty", GOTO="modem_end"

# A tty device that has MIST_SUPPORTED_DEVICE=1 is from an external USB dongle
# supported by mist.
ENV{MIST_SUPPORTED_DEVICE}=="1", GOTO="modem_change_mode"

# A tty device backed by the 'option' driver is from an AT-based modem.
DRIVERS=="option", GOTO="modem_change_mode"

# A tty device backed by the 'qcserial' driver is from a Gobi modem.
DRIVERS=="qcserial", GOTO="modem_change_mode"

# A tty device backed by the 'cdc_acm' driver may be a serial adapter or from
# an AT-based modem. The following rules whitelist the supported modem devices.
# Unlike the option and qcserial driver, the cdc_acm driver seems to organize
# tty differently. Neither DRIVER=="cdc_acm" nor DRIVERS=="cdc_acm" is used in
# the following rules to match the tty device backed by the cdc_acm driver.
#
# Samsung Icera Y3300
ATTRS{idVendor}=="04e8", ATTRS{idProduct}=="6872", GOTO="modem_change_mode"
# Samsung Icera Y3400
ATTRS{idVendor}=="04e8", ATTRS{idProduct}=="6906", GOTO="modem_change_mode"
# Altair LTE ALT3100
ATTRS{idVendor}=="216f", ATTRS{idProduct}=="0047", GOTO="modem_change_mode"
# Telit HE910
ATTRS{idVendor}=="1bc7", ATTRS{idProduct}=="0021", GOTO="modem_change_mode"
# Fibocom L850-GL
ATTRS{idVendor}=="2cb7", ATTRS{idProduct}=="0007", GOTO="modem_change_mode"

#-------------------------------------------------------------------------------
GOTO="modem_end"

# Grant the 'modem' group read and write access of the tty or usb device
# associated with a modem such that ModemManager can access the device.  Also
# set 'ID_MM_DEVICE_IS_MODEM' to 1 to inform 55-serial.rules that the device is
# associated with a modem.
LABEL="modem_change_mode"
GROUP="modem", MODE="0660", ENV{ID_MM_DEVICE_IS_MODEM}="1"

#-------------------------------------------------------------------------------
LABEL="modem_end"
