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:
|
||||
- compatible: Should be one of
|
||||
"nokia,n900-modem"
|
||||
"nokia,n950-modem"
|
||||
"nokia,n9-modem"
|
||||
- hsi-channel-names: Should contain the following strings
|
||||
"mcsaab-control"
|
||||
"speech-control"
|
||||
@@ -15,11 +17,11 @@ Required properties:
|
||||
- gpios: Should provide a GPIO handler for each GPIO listed in
|
||||
gpio-names
|
||||
- gpio-names: Should contain the following strings
|
||||
"cmt_apeslpx"
|
||||
"cmt_rst_rq"
|
||||
"cmt_en"
|
||||
"cmt_rst"
|
||||
"cmt_bsi"
|
||||
"cmt_apeslpx" (for n900, n950, n9)
|
||||
"cmt_rst_rq" (for n900, n950, n9)
|
||||
"cmt_en" (for n900, n950, n9)
|
||||
"cmt_rst" (for n900)
|
||||
"cmt_bsi" (for n900)
|
||||
- interrupts: Should be IRQ handle for modem's reset indication
|
||||
|
||||
Example:
|
||||
|
||||
@@ -281,6 +281,8 @@ static int nokia_modem_remove(struct device *dev)
|
||||
#ifdef CONFIG_OF
|
||||
static const struct of_device_id nokia_modem_of_match[] = {
|
||||
{ .compatible = "nokia,n900-modem", },
|
||||
{ .compatible = "nokia,n950-modem", },
|
||||
{ .compatible = "nokia,n9-modem", },
|
||||
{},
|
||||
};
|
||||
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.
|
||||
*/
|
||||
if ((ssi->main_state != ACTIVE) || (ssi->recv_state == RECV_READY)) {
|
||||
if (ssi->main_state == INIT) {
|
||||
ssi->main_state = HANDSHAKE;
|
||||
spin_unlock(&ssi->lock);
|
||||
ssip_send_bootinfo_req_cmd(cl);
|
||||
} else {
|
||||
spin_unlock(&ssi->lock);
|
||||
}
|
||||
spin_unlock(&ssi->lock);
|
||||
return;
|
||||
}
|
||||
ssip_set_rxstate(ssi, RECV_READY);
|
||||
@@ -671,6 +665,7 @@ static void ssip_rx_bootinforeq(struct hsi_client *cl, u32 cmd)
|
||||
ssip_error(cl);
|
||||
/* Fall through */
|
||||
case INIT:
|
||||
case HANDSHAKE:
|
||||
spin_lock(&ssi->lock);
|
||||
ssi->main_state = HANDSHAKE;
|
||||
if (!ssi->waketest) {
|
||||
@@ -688,9 +683,6 @@ static void ssip_rx_bootinforeq(struct hsi_client *cl, u32 cmd)
|
||||
msg->complete = ssip_release_cmd;
|
||||
hsi_async_write(cl, msg);
|
||||
break;
|
||||
case HANDSHAKE:
|
||||
/* Ignore */
|
||||
break;
|
||||
default:
|
||||
dev_dbg(&cl->device, "Wrong state M(%d)\n", ssi->main_state);
|
||||
break;
|
||||
@@ -939,9 +931,11 @@ static int ssip_pn_open(struct net_device *dev)
|
||||
ssi->waketest = 1;
|
||||
ssi_waketest(cl, 1); /* FIXME: To be removed */
|
||||
}
|
||||
ssi->main_state = INIT;
|
||||
ssi->main_state = HANDSHAKE;
|
||||
spin_unlock_bh(&ssi->lock);
|
||||
|
||||
ssip_send_bootinfo_req_cmd(cl);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user