diff --git a/drivers/atmodem/call-settings.c b/drivers/atmodem/call-settings.c index 8c0f1dff..d540ec16 100644 --- a/drivers/atmodem/call-settings.c +++ b/drivers/atmodem/call-settings.c @@ -365,8 +365,12 @@ static gboolean at_call_settings_register(gpointer user) return FALSE; } -static int at_call_settings_probe(struct ofono_call_settings *cs) +static int at_call_settings_probe(struct ofono_call_settings *cs, int vendor, + void *data) { + GAtChat *chat = data; + + ofono_call_settings_set_data(cs, chat); g_idle_add(at_call_settings_register, cs); return 0; diff --git a/drivers/isimodem/call-settings.c b/drivers/isimodem/call-settings.c index 99129618..f564f0e8 100644 --- a/drivers/isimodem/call-settings.c +++ b/drivers/isimodem/call-settings.c @@ -83,15 +83,19 @@ static void isi_cw_set(struct ofono_call_settings *cs, int mode, int cls, { } -static int isi_call_settings_probe(struct ofono_call_settings *cs) +static int isi_call_settings_probe(struct ofono_call_settings *cs, int vendor, + void *user) { - GIsiModem *idx = ofono_call_settings_get_data(cs); - struct call_settings_data *data = g_try_new0(struct call_settings_data, 1); + GIsiModem *idx = user; + struct call_settings_data *data; + + data = g_try_new0(struct call_settings_data, 1); if (!data) return -ENOMEM; data->client = g_isi_client_create(idx, PN_SS); + if (!data->client) return -ENOMEM; diff --git a/drivers/isimodem/isimodem.c b/drivers/isimodem/isimodem.c index becda1f5..c97eaee5 100644 --- a/drivers/isimodem/isimodem.c +++ b/drivers/isimodem/isimodem.c @@ -158,7 +158,7 @@ static int isi_modem_populate(struct ofono_modem *modem) ofono_ssn_create(isi->modem, "isi", isi->idx); ofono_ussd_create(isi->modem, "isi", isi->idx); ofono_call_forwarding_create(isi->modem, 0, "isi", isi->idx); - ofono_call_settings_create(isi->modem, "isi", isi->idx); + ofono_call_settings_create(isi->modem, 0, "isi", isi->idx); ofono_call_barring_create(isi->modem, 0, "isi", isi->idx); ofono_call_meter_create(isi->modem, 0, "isi", isi->idx); diff --git a/include/call-settings.h b/include/call-settings.h index 84461c32..5aca0c43 100644 --- a/include/call-settings.h +++ b/include/call-settings.h @@ -41,7 +41,7 @@ typedef void (*ofono_call_settings_clir_cb_t)(const struct ofono_error *error, struct ofono_call_settings_driver { const char *name; - int (*probe)(struct ofono_call_settings *cs); + int (*probe)(struct ofono_call_settings *cs, int vendor, void *data); int (*remove)(struct ofono_call_settings *cs); void (*clip_query)(struct ofono_call_settings *cs, ofono_call_settings_status_cb_t cb, void *data); @@ -63,6 +63,7 @@ int ofono_call_settings_driver_register(const struct ofono_call_settings_driver void ofono_call_settings_driver_unregister(const struct ofono_call_settings_driver *d); struct ofono_call_settings *ofono_call_settings_create(struct ofono_modem *modem, + int vendor, const char *driver, void *data); diff --git a/plugins/generic_at.c b/plugins/generic_at.c index a8dd8dd0..5d506e08 100644 --- a/plugins/generic_at.c +++ b/plugins/generic_at.c @@ -513,7 +513,7 @@ static int generic_at_populate(struct ofono_modem *modem) ofono_ussd_create(modem, "generic_at", chat); ofono_sim_create(modem, "generic_at", chat); ofono_call_forwarding_create(modem, 0, "generic_at", chat); - ofono_call_settings_create(modem, "generic_at", chat); + ofono_call_settings_create(modem, 0, "generic_at", chat); ofono_netreg_create(modem, "generic_at", chat); ofono_voicecall_create(modem, "generic_at", chat); ofono_call_meter_create(modem, 0, "generic_at", chat); diff --git a/src/call-settings.c b/src/call-settings.c index 33aefe99..06b3de8c 100644 --- a/src/call-settings.c +++ b/src/call-settings.c @@ -1229,6 +1229,7 @@ static void call_settings_remove(struct ofono_atom *atom) } struct ofono_call_settings *ofono_call_settings_create(struct ofono_modem *modem, + int vendor, const char *driver, void *data) { @@ -1248,7 +1249,6 @@ struct ofono_call_settings *ofono_call_settings_create(struct ofono_modem *modem cs->clir = 2; cs->colp = 2; cs->colr = 2; - cs->driver_data = data; cs->atom = __ofono_modem_add_atom(modem, OFONO_ATOM_TYPE_CALL_SETTINGS, call_settings_remove, cs); @@ -1258,7 +1258,7 @@ struct ofono_call_settings *ofono_call_settings_create(struct ofono_modem *modem if (g_strcmp0(drv->name, driver)) continue; - if (drv->probe(cs) < 0) + if (drv->probe(cs, vendor, data) < 0) continue; cs->driver = drv;