mirror of git://git.sysmocom.de/ofono
udev: Add support for automatic ISI USB modem detection
This commit is contained in:
parent
ea8e97bdc8
commit
f5c4be8160
|
@ -17,9 +17,6 @@ SUBSYSTEM!="net", GOTO="ofono_isi_end"
|
||||||
ATTRS{type}!="820", GOTO="ofono_isi_end"
|
ATTRS{type}!="820", GOTO="ofono_isi_end"
|
||||||
KERNELS=="gadget", GOTO="ofono_isi_end"
|
KERNELS=="gadget", GOTO="ofono_isi_end"
|
||||||
|
|
||||||
# Generic USB / PC Suite mode
|
|
||||||
SUBSYSTEMS=="usb", ENV{OFONO_DRIVER}="isiusb", ENV{OFONO_ISI_ADDRESS}="16"
|
|
||||||
|
|
||||||
# Nokia N900 modem
|
# Nokia N900 modem
|
||||||
SUBSYSTEMS=="hsi", ENV{OFONO_DRIVER}="n900", ENV{OFONO_ISI_ADDRESS}="108"
|
SUBSYSTEMS=="hsi", ENV{OFONO_DRIVER}="n900", ENV{OFONO_ISI_ADDRESS}="108"
|
||||||
|
|
||||||
|
|
|
@ -336,8 +336,6 @@ done:
|
||||||
|
|
||||||
if (g_strcmp0(driver, "ifx") == 0)
|
if (g_strcmp0(driver, "ifx") == 0)
|
||||||
add_ifx(modem, udev_device);
|
add_ifx(modem, udev_device);
|
||||||
else if (g_strcmp0(driver, "isiusb") == 0)
|
|
||||||
add_isi(modem, udev_device);
|
|
||||||
else if (g_strcmp0(driver, "u8500") == 0)
|
else if (g_strcmp0(driver, "u8500") == 0)
|
||||||
add_isi(modem, udev_device);
|
add_isi(modem, udev_device);
|
||||||
else if (g_strcmp0(driver, "n900") == 0)
|
else if (g_strcmp0(driver, "n900") == 0)
|
||||||
|
|
|
@ -55,6 +55,39 @@ struct device_info {
|
||||||
char *sysattr;
|
char *sysattr;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
static gboolean setup_isi(struct modem_info *modem)
|
||||||
|
{
|
||||||
|
const char *node = NULL;
|
||||||
|
int addr = 0;
|
||||||
|
GSList *list;
|
||||||
|
|
||||||
|
DBG("%s", modem->syspath);
|
||||||
|
|
||||||
|
for (list = modem->devices; list; list = list->next) {
|
||||||
|
struct device_info *info = list->data;
|
||||||
|
|
||||||
|
DBG("%s %s %s %s %s", info->devnode, info->interface,
|
||||||
|
info->number, info->label, info->sysattr);
|
||||||
|
|
||||||
|
if (g_strcmp0(info->sysattr, "820") == 0) {
|
||||||
|
if (g_strcmp0(info->interface, "2/254/0") == 0)
|
||||||
|
addr = 16;
|
||||||
|
|
||||||
|
node = info->devnode;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (node == NULL)
|
||||||
|
return FALSE;
|
||||||
|
|
||||||
|
DBG("interface=%s address=%d", node, addr);
|
||||||
|
|
||||||
|
ofono_modem_set_string(modem->modem, "Interface", node);
|
||||||
|
ofono_modem_set_integer(modem->modem, "Address", addr);
|
||||||
|
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
static gboolean setup_mbm(struct modem_info *modem)
|
static gboolean setup_mbm(struct modem_info *modem)
|
||||||
{
|
{
|
||||||
const char *mdm = NULL, *app = NULL, *network = NULL, *gps = NULL;
|
const char *mdm = NULL, *app = NULL, *network = NULL, *gps = NULL;
|
||||||
|
@ -497,6 +530,7 @@ static struct {
|
||||||
gboolean (*setup)(struct modem_info *modem);
|
gboolean (*setup)(struct modem_info *modem);
|
||||||
const char *sysattr;
|
const char *sysattr;
|
||||||
} driver_list[] = {
|
} driver_list[] = {
|
||||||
|
{ "isiusb", setup_isi, "type" },
|
||||||
{ "mbm", setup_mbm, "device/interface" },
|
{ "mbm", setup_mbm, "device/interface" },
|
||||||
{ "hso", setup_hso, "hsotype" },
|
{ "hso", setup_hso, "hsotype" },
|
||||||
{ "gobi", setup_gobi, },
|
{ "gobi", setup_gobi, },
|
||||||
|
@ -672,6 +706,7 @@ static struct {
|
||||||
const char *vid;
|
const char *vid;
|
||||||
const char *pid;
|
const char *pid;
|
||||||
} vendor_list[] = {
|
} vendor_list[] = {
|
||||||
|
{ "isiusb", "cdc_phonet" },
|
||||||
{ "mbm", "cdc_acm", "0bdb" },
|
{ "mbm", "cdc_acm", "0bdb" },
|
||||||
{ "mbm" "cdc_ether", "0bdb" },
|
{ "mbm" "cdc_ether", "0bdb" },
|
||||||
{ "mbm", "cdc_acm", "0fce" },
|
{ "mbm", "cdc_acm", "0fce" },
|
||||||
|
|
Loading…
Reference in New Issue