mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-10-03 07:38:10 +00:00
HSI: nokia-modem: Add cmt-speech support
Register cmt-speech driver in nokia-modem driver and forward hsi channel information. Acked-by: Aaro Koskinen <aaro.koskinen@iki.fi> Tested-by: Pavel Machek <pavel@ucw.cz> Signed-off-by: Sebastian Reichel <sre@kernel.org>
This commit is contained in:
parent
7f62fe8a58
commit
f9c0d76eb4
2 changed files with 32 additions and 2 deletions
|
@ -6,7 +6,7 @@ comment "HSI clients"
|
||||||
|
|
||||||
config NOKIA_MODEM
|
config NOKIA_MODEM
|
||||||
tristate "Nokia Modem"
|
tristate "Nokia Modem"
|
||||||
depends on HSI && SSI_PROTOCOL
|
depends on HSI && SSI_PROTOCOL && CMT_SPEECH
|
||||||
help
|
help
|
||||||
Say Y here if you want to add support for the modem on Nokia
|
Say Y here if you want to add support for the modem on Nokia
|
||||||
N900 (Nokia RX-51) hardware.
|
N900 (Nokia RX-51) hardware.
|
||||||
|
|
|
@ -46,6 +46,7 @@ struct nokia_modem_device {
|
||||||
struct nokia_modem_gpio *gpios;
|
struct nokia_modem_gpio *gpios;
|
||||||
int gpio_amount;
|
int gpio_amount;
|
||||||
struct hsi_client *ssi_protocol;
|
struct hsi_client *ssi_protocol;
|
||||||
|
struct hsi_client *cmt_speech;
|
||||||
};
|
};
|
||||||
|
|
||||||
static void do_nokia_modem_rst_ind_tasklet(unsigned long data)
|
static void do_nokia_modem_rst_ind_tasklet(unsigned long data)
|
||||||
|
@ -149,6 +150,7 @@ static int nokia_modem_probe(struct device *dev)
|
||||||
struct hsi_port *port = hsi_get_port(cl);
|
struct hsi_port *port = hsi_get_port(cl);
|
||||||
int irq, pflags, err;
|
int irq, pflags, err;
|
||||||
struct hsi_board_info ssip;
|
struct hsi_board_info ssip;
|
||||||
|
struct hsi_board_info cmtspeech;
|
||||||
|
|
||||||
np = dev->of_node;
|
np = dev->of_node;
|
||||||
if (!np) {
|
if (!np) {
|
||||||
|
@ -214,12 +216,35 @@ static int nokia_modem_probe(struct device *dev)
|
||||||
goto error3;
|
goto error3;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* TODO: register cmt-speech hsi client */
|
cmtspeech.name = "cmt-speech";
|
||||||
|
cmtspeech.tx_cfg = cl->tx_cfg;
|
||||||
|
cmtspeech.rx_cfg = cl->rx_cfg;
|
||||||
|
cmtspeech.platform_data = NULL;
|
||||||
|
cmtspeech.archdata = NULL;
|
||||||
|
|
||||||
|
modem->cmt_speech = hsi_new_client(port, &cmtspeech);
|
||||||
|
if (!modem->cmt_speech) {
|
||||||
|
dev_err(dev, "Could not register cmt-speech device\n");
|
||||||
|
err = -ENOMEM;
|
||||||
|
goto error3;
|
||||||
|
}
|
||||||
|
|
||||||
|
err = device_attach(&modem->cmt_speech->device);
|
||||||
|
if (err == 0) {
|
||||||
|
dev_err(dev, "Missing cmt-speech driver\n");
|
||||||
|
err = -EPROBE_DEFER;
|
||||||
|
goto error4;
|
||||||
|
} else if (err < 0) {
|
||||||
|
dev_err(dev, "Could not load cmt-speech driver (%d)\n", err);
|
||||||
|
goto error4;
|
||||||
|
}
|
||||||
|
|
||||||
dev_info(dev, "Registered Nokia HSI modem\n");
|
dev_info(dev, "Registered Nokia HSI modem\n");
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
|
error4:
|
||||||
|
hsi_remove_client(&modem->cmt_speech->device, NULL);
|
||||||
error3:
|
error3:
|
||||||
hsi_remove_client(&modem->ssi_protocol->device, NULL);
|
hsi_remove_client(&modem->ssi_protocol->device, NULL);
|
||||||
error2:
|
error2:
|
||||||
|
@ -238,6 +263,11 @@ static int nokia_modem_remove(struct device *dev)
|
||||||
if (!modem)
|
if (!modem)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
|
if (modem->cmt_speech) {
|
||||||
|
hsi_remove_client(&modem->cmt_speech->device, NULL);
|
||||||
|
modem->cmt_speech = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
if (modem->ssi_protocol) {
|
if (modem->ssi_protocol) {
|
||||||
hsi_remove_client(&modem->ssi_protocol->device, NULL);
|
hsi_remove_client(&modem->ssi_protocol->device, NULL);
|
||||||
modem->ssi_protocol = NULL;
|
modem->ssi_protocol = NULL;
|
||||||
|
|
Loading…
Reference in a new issue