Merge tag 'hsi-for-4.6' of git://git.kernel.org/pub/scm/linux/kernel/git/sre/linux-hsi
Pull HSI updates from Sebastian Reichel: "nokia-modem: add N950 and N9 support" * tag 'hsi-for-4.6' of git://git.kernel.org/pub/scm/linux/kernel/git/sre/linux-hsi: HSI: ssi-protocol: Use handshake logic from n950 HSI: nokia-modem: add n950 and n9 support
This commit is contained in:
@@ -7,6 +7,8 @@ properties are needed by the Nokia modem HSI client:
|
|||||||
Required properties:
|
Required properties:
|
||||||
- compatible: Should be one of
|
- compatible: Should be one of
|
||||||
"nokia,n900-modem"
|
"nokia,n900-modem"
|
||||||
|
"nokia,n950-modem"
|
||||||
|
"nokia,n9-modem"
|
||||||
- hsi-channel-names: Should contain the following strings
|
- hsi-channel-names: Should contain the following strings
|
||||||
"mcsaab-control"
|
"mcsaab-control"
|
||||||
"speech-control"
|
"speech-control"
|
||||||
@@ -15,11 +17,11 @@ Required properties:
|
|||||||
- gpios: Should provide a GPIO handler for each GPIO listed in
|
- gpios: Should provide a GPIO handler for each GPIO listed in
|
||||||
gpio-names
|
gpio-names
|
||||||
- gpio-names: Should contain the following strings
|
- gpio-names: Should contain the following strings
|
||||||
"cmt_apeslpx"
|
"cmt_apeslpx" (for n900, n950, n9)
|
||||||
"cmt_rst_rq"
|
"cmt_rst_rq" (for n900, n950, n9)
|
||||||
"cmt_en"
|
"cmt_en" (for n900, n950, n9)
|
||||||
"cmt_rst"
|
"cmt_rst" (for n900)
|
||||||
"cmt_bsi"
|
"cmt_bsi" (for n900)
|
||||||
- interrupts: Should be IRQ handle for modem's reset indication
|
- interrupts: Should be IRQ handle for modem's reset indication
|
||||||
|
|
||||||
Example:
|
Example:
|
||||||
|
|||||||
@@ -281,6 +281,8 @@ static int nokia_modem_remove(struct device *dev)
|
|||||||
#ifdef CONFIG_OF
|
#ifdef CONFIG_OF
|
||||||
static const struct of_device_id nokia_modem_of_match[] = {
|
static const struct of_device_id nokia_modem_of_match[] = {
|
||||||
{ .compatible = "nokia,n900-modem", },
|
{ .compatible = "nokia,n900-modem", },
|
||||||
|
{ .compatible = "nokia,n950-modem", },
|
||||||
|
{ .compatible = "nokia,n9-modem", },
|
||||||
{},
|
{},
|
||||||
};
|
};
|
||||||
MODULE_DEVICE_TABLE(of, nokia_modem_of_match);
|
MODULE_DEVICE_TABLE(of, nokia_modem_of_match);
|
||||||
|
|||||||
@@ -521,13 +521,7 @@ static void ssip_start_rx(struct hsi_client *cl)
|
|||||||
* high transition. Therefore we need to ignore the sencond UP event.
|
* high transition. Therefore we need to ignore the sencond UP event.
|
||||||
*/
|
*/
|
||||||
if ((ssi->main_state != ACTIVE) || (ssi->recv_state == RECV_READY)) {
|
if ((ssi->main_state != ACTIVE) || (ssi->recv_state == RECV_READY)) {
|
||||||
if (ssi->main_state == INIT) {
|
spin_unlock(&ssi->lock);
|
||||||
ssi->main_state = HANDSHAKE;
|
|
||||||
spin_unlock(&ssi->lock);
|
|
||||||
ssip_send_bootinfo_req_cmd(cl);
|
|
||||||
} else {
|
|
||||||
spin_unlock(&ssi->lock);
|
|
||||||
}
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
ssip_set_rxstate(ssi, RECV_READY);
|
ssip_set_rxstate(ssi, RECV_READY);
|
||||||
@@ -671,6 +665,7 @@ static void ssip_rx_bootinforeq(struct hsi_client *cl, u32 cmd)
|
|||||||
ssip_error(cl);
|
ssip_error(cl);
|
||||||
/* Fall through */
|
/* Fall through */
|
||||||
case INIT:
|
case INIT:
|
||||||
|
case HANDSHAKE:
|
||||||
spin_lock(&ssi->lock);
|
spin_lock(&ssi->lock);
|
||||||
ssi->main_state = HANDSHAKE;
|
ssi->main_state = HANDSHAKE;
|
||||||
if (!ssi->waketest) {
|
if (!ssi->waketest) {
|
||||||
@@ -688,9 +683,6 @@ static void ssip_rx_bootinforeq(struct hsi_client *cl, u32 cmd)
|
|||||||
msg->complete = ssip_release_cmd;
|
msg->complete = ssip_release_cmd;
|
||||||
hsi_async_write(cl, msg);
|
hsi_async_write(cl, msg);
|
||||||
break;
|
break;
|
||||||
case HANDSHAKE:
|
|
||||||
/* Ignore */
|
|
||||||
break;
|
|
||||||
default:
|
default:
|
||||||
dev_dbg(&cl->device, "Wrong state M(%d)\n", ssi->main_state);
|
dev_dbg(&cl->device, "Wrong state M(%d)\n", ssi->main_state);
|
||||||
break;
|
break;
|
||||||
@@ -939,9 +931,11 @@ static int ssip_pn_open(struct net_device *dev)
|
|||||||
ssi->waketest = 1;
|
ssi->waketest = 1;
|
||||||
ssi_waketest(cl, 1); /* FIXME: To be removed */
|
ssi_waketest(cl, 1); /* FIXME: To be removed */
|
||||||
}
|
}
|
||||||
ssi->main_state = INIT;
|
ssi->main_state = HANDSHAKE;
|
||||||
spin_unlock_bh(&ssi->lock);
|
spin_unlock_bh(&ssi->lock);
|
||||||
|
|
||||||
|
ssip_send_bootinfo_req_cmd(cl);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user