#v413 Loads modules for modems not autodetected by kernel
SUBSYSTEM!="pci", GOTO="modem_end"
ACTION!="add", GOTO="modem_end"

#Intel PCI modems
#Modems 536EP and 537SP share ID 8086:1040, so subvendor and subdevice are also tested...
ATTR{vendor}=="0x8086", ATTR{device}=="0x1040", GOTO="I80861040"
GOTO="Not_I80861040"
LABEL="I80861040"
ATTR{subsystem_vendor}=="0x8086", ATTR{subsystem_device}=="0x1005", GOTO="I537SP"
#Intel Corporation 536EP Data Fax Modem
RUN+="/sbin/pup_event_backend_modprobe Intel536"
GOTO="Not_I537SP"
LABEL="I537SP"
#Intel 537EP SP Data Modem
RUN+="/sbin/pup_event_backend_modprobe Intel537"
LABEL="Not_I537SP"
LABEL="Not_I80861040"

#Intel Corporation 537EP Data Fax Modem
ATTR{vendor}=="0xe159", ATTR{device}=="0x0001", RUN+="/sbin/pup_event_backend_modprobe Intel537"
ATTR{vendor}=="0x1813", ATTR{device}=="0x3052", RUN+="/sbin/pup_event_backend_modprobe Intel537"

#Intel Corporation FA82537EP 56K V.92 Data/Fax Modem PCI
ATTR{vendor}=="0x8086", ATTR{device}=="0x1080", RUN+="/sbin/pup_event_backend_modprobe Intel537"
ATTR{vendor}=="0x1543", ATTR{device}=="0x3052", RUN+="/sbin/pup_event_backend_modprobe Intel537"

#Intel 537EP EA Data Modems
ATTR{vendor}=="0x10b9", ATTR{device}=="0x5457", RUN+="/sbin/pup_event_backend_modprobe Intel537"
ATTR{vendor}=="0x1002", ATTR{device}=="0x434d", RUN+="/sbin/pup_event_backend_modprobe Intel537"
ATTR{vendor}=="0x8086", ATTR{device}=="0x24[4cd]6", RUN+="/sbin/pup_event_backend_modprobe Intel537"
ATTR{vendor}=="0x10de", ATTR{device}=="0x01c1", RUN+="/sbin/pup_event_backend_modprobe Intel537"
ATTR{vendor}=="0x1039", ATTR{device}=="0x7013", RUN+="/sbin/pup_event_backend_modprobe Intel537"
ATTR{vendor}=="0x1106", ATTR{device}=="0x3068", RUN+="/sbin/pup_event_backend_modprobe Intel537"


#Mwave modems
ATTR{vendor}=="0x1014", ATTR{device}=="0x007d", RUN+="/sbin/pup_event_backend_modprobe mwave"


#High Definition Audio modem supplemental modules, loaded in addition to snd-hda-intel:
#101001 Loads Agere HDA module for modems built into HD audio sound systems -
# not autodetected by kernel.
# Data obtained from Supported.txt in agrsm source of 20091225.

# PCI card modems with primary LSI/AgereSystems modem chips supported by "agrsm048pci" version of agrmodem and agrserial:
#  { 0x11C1, 0x048C, 0x0000, 0x0000 }, support successful only with the earlier 2.1.60 code release
#  { 0x11C1, 0x048F, 0x0000, 0x0000 }, support successful only with the earlier 2.1.60 code release
ATTR{vendor}=="0x11c1", ATTR{device}=="0x048[cf]", RUN+="/sbin/pup_event_backend_modprobe agrmodem"

# PCI card modems with primary LSI/AgereSystems modem chips supported by "agrsm06pci" version of agrmodem and agrserial:
#  { 0x11C1, 0x0620, 0x0000, 0x0000 }, support successful with the 2.1.80 code release
#  { 0x11C1, 0x0630, 0x0000, 0x0000 }, also reported to work - added by rerwin 101001
ATTR{vendor}=="0x11c1", ATTR{device}=="0x06[23]0", RUN+="/sbin/pup_event_backend_modprobe agrmodem"

#Agere 11c1:1040 modems in HDA systems
# High Definition Audio Cards which may host on the Subsystem modem chips 11C11040 or 11C13026, supported by "agrsm-11c11040" version of agrmodem and agrserial:
#  { 0x1002, 0x793b, 0x0000, 0x0000 }, /* ATI RS600 HDMI */
#  { 0x1002, 0x7919, 0x0000, 0x0000 },  /* ATI RS690 HDMI */
#  { 0x1002, 0x960c, 0x0000, 0x0000 }, /* ATI RS780 HDMI */
#  { 0x1002, 0xaa00, 0x0000, 0x0000 }, /* ATI R600 HDMI */
#  { 0x1106, 0x3288, 0x0000, 0x0000 },  /* VIA VT8251/VT8237A */
#  { 0x1039, 0x7502, 0x0000, 0x0000 },  /* SIS966 */
#  { 0x10b9, 0x5461, 0x0000, 0x0000 }, /* ULI M5461 */
#  { 0x10de, 0x026c, 0x0000, 0x0000 },  /* NVIDIA MCP51 */
#  { 0x10de, 0x0371, 0x0000, 0x0000 },  /* NVIDIA MCP55 */
#  { 0x10de, 0x03e4, 0x0000, 0x0000 },  /* NVIDIA MCP61 */
#  { 0x10de, 0x03f0, 0x0000, 0x0000 }, /* NVIDIA MCP61 */
#  { 0x10de, 0x044a, 0x0000, 0x0000 }, /* NVIDIA MCP65 */
#  { 0x10de, 0x044b, 0x0000, 0x0000 }, /* NVIDIA MCP65 */
#  { 0x10de, 0x055c, 0x0000, 0x0000 },  /* NVIDIA MCP67 */
#  { 0x10de, 0x055d, 0x0000, 0x0000 },  /* NVIDIA MCP67 */
ATTR{vendor}=="0x1002", ATTR{device}=="0x793b", RUN+="/sbin/pup_event_backend_modprobe agrmodem"
ATTR{vendor}=="0x1002", ATTR{device}=="0x7919", RUN+="/sbin/pup_event_backend_modprobe agrmodem"
ATTR{vendor}=="0x1002", ATTR{device}=="0x960c", RUN+="/sbin/pup_event_backend_modprobe agrmodem"
ATTR{vendor}=="0x1002", ATTR{device}=="0xaa00", RUN+="/sbin/pup_event_backend_modprobe agrmodem"
ATTR{vendor}=="0x1106", ATTR{device}=="0x3288", RUN+="/sbin/pup_event_backend_modprobe agrmodem"
ATTR{vendor}=="0x1039", ATTR{device}=="0x7502", RUN+="/sbin/pup_event_backend_modprobe agrmodem"
ATTR{vendor}=="0x10b9", ATTR{device}=="0x5461", RUN+="/sbin/pup_event_backend_modprobe agrmodem"
ATTR{vendor}=="0x10de", ATTR{device}=="0x026c", RUN+="/sbin/pup_event_backend_modprobe agrmodem"
ATTR{vendor}=="0x10de", ATTR{device}=="0x0371", RUN+="/sbin/pup_event_backend_modprobe agrmodem"
ATTR{vendor}=="0x10de", ATTR{device}=="0x03e4", RUN+="/sbin/pup_event_backend_modprobe agrmodem"
ATTR{vendor}=="0x10de", ATTR{device}=="0x03f0", RUN+="/sbin/pup_event_backend_modprobe agrmodem"
ATTR{vendor}=="0x10de", ATTR{device}=="0x044[ab]", RUN+="/sbin/pup_event_backend_modprobe agrmodem"
ATTR{vendor}=="0x10de", ATTR{device}=="0x055[cd]", RUN+="/sbin/pup_event_backend_modprobe agrmodem"

# PCI card AC'97 Controller free modems, which may have Agere/LSI chips in the Subsystem (last two columns) supported by agrsm-11c11040 version of agrmodem and agrserial:
#  { 0x8086, 0x2416, 0x0000, 0x0000 },
#  { 0x8086, 0x2426, 0x0000, 0x0000 },
#  { 0x8086, 0x2446, 0x0000, 0x0000 },
#  { 0x8086, 0x7196, 0x0000, 0x0000 },
#  { 0x8086, 0x2486, 0x0000, 0x0000 },
#  { 0x8086, 0x24C6, 0x0000, 0x0000 },
#  { 0x8086, 0x24D6, 0x0000, 0x0000 },
#  { 0x1039, 0x7013, 0x0000, 0x0000 },
#  { 0x1106, 0x3068, 0x0000, 0x0000 },
#  { 0x8086, 0x266D, 0x0000, 0x0000 },
#  { 0x8086, 0x2668, 0x0000, 0x0000 }, //ich6 hda
#  { 0x8086, 0x27D8, 0x0000, 0x0000 }, //ich7 hda
#  { 0x8086, 0x284B, 0x0000, 0x0000 }, //ich8 hda
#  { 0x8086, 0x269a, 0x0000, 0x0000 },  /* ESB2 */
#  { 0x8086, 0x293e, 0x0000, 0x0000 }, /* ICH9 */
#  { 0x8086, 0x293f, 0x0000, 0x0000 }, /* ICH9 */
#  { 0x1002, 0x437b, 0x0000, 0x0000 },  /* ATI SB450 */
#  { 0x1002, 0x4383, 0x0000, 0x0000 }, /* ATI SB600 */
ATTR{vendor}=="0x8086", ATTR{device}=="0x24[1248cd]6", RUN+="/sbin/pup_event_backend_modprobe agrmodem"
ATTR{vendor}=="0x8086", ATTR{device}=="0x7196", RUN+="/sbin/pup_event_backend_modprobe agrmodem"
ATTR{vendor}=="0x1039", ATTR{device}=="0x7013", RUN+="/sbin/pup_event_backend_modprobe agrmodem"
ATTR{vendor}=="0x1106", ATTR{device}=="0x3068", RUN+="/sbin/pup_event_backend_modprobe agrmodem"
ATTR{vendor}=="0x8086", ATTR{device}=="0x266[d8]", RUN+="/sbin/pup_event_backend_modprobe agrmodem"
ATTR{vendor}=="0x8086", ATTR{device}=="0x27d8", RUN+="/sbin/pup_event_backend_modprobe agrmodem"
ATTR{vendor}=="0x8086", ATTR{device}=="0x284b", RUN+="/sbin/pup_event_backend_modprobe agrmodem"
ATTR{vendor}=="0x8086", ATTR{device}=="0x269a", RUN+="/sbin/pup_event_backend_modprobe agrmodem"
ATTR{vendor}=="0x8086", ATTR{device}=="0x293[ef]", RUN+="/sbin/pup_event_backend_modprobe agrmodem"
ATTR{vendor}=="0x1002", ATTR{device}=="0x437b", RUN+="/sbin/pup_event_backend_modprobe agrmodem"
ATTR{vendor}=="0x1002", ATTR{device}=="0x4383", RUN+="/sbin/pup_event_backend_modprobe agrmodem"


#Conexant modem-chip modules. (Should not be necessary - slmodem script checks for hsfhda with snd-hda-intel.)
#ATTR{vendor}=="0x8086", ATTR{device}=="0x27d8", RUN+="/sbin/pup_event_backend_modprobe hsfhda"


#Lucent Integrated ISA modems - implied by presence of PC-to-ISA bridge
#If you need this rule, remove the "#" from the next line.  Some PCs might show a modem installed even though not actually present.  Uncomment the line only if you know you have a built-in Lucent modem that is not already recognized.
#ATTR{vendor}=="0x8086", ATTR{device}=="0x7110", RUN+="/sbin/pup_event_backend_modprobe ltmodem"

LABEL="modem_end"
