mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-27 14:14:24 +08: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
@ -6,7 +6,7 @@ comment "HSI clients"
|
||||
|
||||
config NOKIA_MODEM
|
||||
tristate "Nokia Modem"
|
||||
depends on HSI && SSI_PROTOCOL
|
||||
depends on HSI && SSI_PROTOCOL && CMT_SPEECH
|
||||
help
|
||||
Say Y here if you want to add support for the modem on Nokia
|
||||
N900 (Nokia RX-51) hardware.
|
||||
|
@ -46,6 +46,7 @@ struct nokia_modem_device {
|
||||
struct nokia_modem_gpio *gpios;
|
||||
int gpio_amount;
|
||||
struct hsi_client *ssi_protocol;
|
||||
struct hsi_client *cmt_speech;
|
||||
};
|
||||
|
||||
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);
|
||||
int irq, pflags, err;
|
||||
struct hsi_board_info ssip;
|
||||
struct hsi_board_info cmtspeech;
|
||||
|
||||
np = dev->of_node;
|
||||
if (!np) {
|
||||
@ -214,12 +216,35 @@ static int nokia_modem_probe(struct device *dev)
|
||||
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");
|
||||
|
||||
return 0;
|
||||
|
||||
error4:
|
||||
hsi_remove_client(&modem->cmt_speech->device, NULL);
|
||||
error3:
|
||||
hsi_remove_client(&modem->ssi_protocol->device, NULL);
|
||||
error2:
|
||||
@ -238,6 +263,11 @@ static int nokia_modem_remove(struct device *dev)
|
||||
if (!modem)
|
||||
return 0;
|
||||
|
||||
if (modem->cmt_speech) {
|
||||
hsi_remove_client(&modem->cmt_speech->device, NULL);
|
||||
modem->cmt_speech = NULL;
|
||||
}
|
||||
|
||||
if (modem->ssi_protocol) {
|
||||
hsi_remove_client(&modem->ssi_protocol->device, NULL);
|
||||
modem->ssi_protocol = NULL;
|
||||
|
Loading…
Reference in New Issue
Block a user