Lines Matching refs:modem
3 * nokia-modem.c
5 * HSI client driver for Nokia N900 modem.
40 struct nokia_modem_device *modem = (struct nokia_modem_device *)data;
42 if (!modem)
45 dev_info(modem->device, "CMT rst line change detected\n");
47 if (modem->ssi_protocol)
48 ssip_reset_event(modem->ssi_protocol);
53 struct nokia_modem_device *modem = (struct nokia_modem_device *)data;
55 tasklet_schedule(&modem->nokia_modem_rst_ind_tasklet);
62 struct nokia_modem_device *modem = dev_get_drvdata(dev);
65 for (i = 0; i < modem->gpio_amount; i++) {
66 sysfs_remove_link(&dev->kobj, modem->gpios[i].name);
67 gpiod_unexport(modem->gpios[i].gpio);
74 struct nokia_modem_device *modem = dev_get_drvdata(dev);
90 modem->gpios = devm_kcalloc(dev, gpio_count, sizeof(*modem->gpios),
92 if (!modem->gpios)
95 modem->gpio_amount = gpio_count;
98 modem->gpios[i].gpio = devm_gpiod_get_index(dev, NULL, i,
100 if (IS_ERR(modem->gpios[i].gpio)) {
102 return PTR_ERR(modem->gpios[i].gpio);
106 &(modem->gpios[i].name));
112 err = gpiod_export(modem->gpios[i].gpio, 0);
116 err = gpiod_export_link(dev, modem->gpios[i].name,
117 modem->gpios[i].gpio);
128 struct nokia_modem_device *modem;
141 modem = devm_kzalloc(dev, sizeof(*modem), GFP_KERNEL);
142 if (!modem)
145 dev_set_drvdata(dev, modem);
146 modem->device = dev;
153 modem->nokia_modem_rst_ind_irq = irq;
156 tasklet_init(&modem->nokia_modem_rst_ind_tasklet,
157 do_nokia_modem_rst_ind_tasklet, (unsigned long)modem);
159 pflags, "modem_rst_ind", modem);
181 modem->ssi_protocol = hsi_new_client(port, &ssip);
182 if (!modem->ssi_protocol) {
188 err = device_attach(&modem->ssi_protocol->device);
204 modem->cmt_speech = hsi_new_client(port, &cmtspeech);
205 if (!modem->cmt_speech) {
211 err = device_attach(&modem->cmt_speech->device);
221 dev_info(dev, "Registered Nokia HSI modem\n");
226 hsi_remove_client(&modem->cmt_speech->device, NULL);
228 hsi_remove_client(&modem->ssi_protocol->device, NULL);
232 disable_irq_wake(modem->nokia_modem_rst_ind_irq);
233 tasklet_kill(&modem->nokia_modem_rst_ind_tasklet);
240 struct nokia_modem_device *modem = dev_get_drvdata(dev);
242 if (!modem)
245 if (modem->cmt_speech) {
246 hsi_remove_client(&modem->cmt_speech->device, NULL);
247 modem->cmt_speech = NULL;
250 if (modem->ssi_protocol) {
251 hsi_remove_client(&modem->ssi_protocol->device, NULL);
252 modem->ssi_protocol = NULL;
257 disable_irq_wake(modem->nokia_modem_rst_ind_irq);
258 tasklet_kill(&modem->nokia_modem_rst_ind_tasklet);
265 { .compatible = "nokia,n900-modem", },
266 { .compatible = "nokia,n950-modem", },
267 { .compatible = "nokia,n9-modem", },
275 .name = "nokia-modem",
295 MODULE_ALIAS("hsi:nokia-modem");