diff --git a/plugins/ublox.c b/plugins/ublox.c index 1c74fe09..8100dfba 100644 --- a/plugins/ublox.c +++ b/plugins/ublox.c @@ -388,19 +388,34 @@ static void ublox_post_sim(struct ofono_modem *modem) struct ofono_gprs *gprs; struct ofono_gprs_context *gc; GAtChat *chat = data->modem ? data->modem : data->aux; - const char *driver = data->flags & UBLOX_DEVICE_F_HIGH_THROUGHPUT_MODE ? - "ubloxmodem" : "atmodem"; + const char *driver; /* Toby L2: Create same number of contexts as supported PDP contexts. */ int ncontexts = data->flags & UBLOX_DEVICE_F_HIGH_THROUGHPUT_MODE ? 8 : 1; + int variant; DBG("%p", modem); gprs = ofono_gprs_create(modem, data->vendor_family, "atmodem", data->aux); + if (ublox_is_toby_l4(data->model)) { + driver = "ubloxmodem"; + variant = ublox_model_to_id(data->model); + } else if (ublox_is_toby_l2(data->model)) { + if (data->flags & UBLOX_DEVICE_F_HIGH_THROUGHPUT_MODE) { + driver = "ubloxmodem"; + variant = ublox_model_to_id(data->model); + } else { + driver = "atmodem"; + variant = OFONO_VENDOR_UBLOX; + } + } else { + driver = "atmodem"; + variant = OFONO_VENDOR_UBLOX; + } + while (ncontexts) { - gc = ofono_gprs_context_create(modem, data->vendor_family, - driver, chat); + gc = ofono_gprs_context_create(modem, variant, driver, chat); if (gprs && gc) ofono_gprs_add_context(gprs, gc);