Lines Matching refs:cl
48 void ssi_waketest(struct hsi_client *cl, unsigned int enable);
151 struct hsi_client *cl; member
228 struct ssi_protocol *ssi = hsi_client_drvdata(msg->cl); in ssip_release_cmd()
230 dev_dbg(&msg->cl->device, "Release cmd 0x%08x\n", ssip_get_cmd(msg)); in ssip_release_cmd()
342 if (slave->device.parent == ssi->cl->device.parent) { in ssip_slave_get_master()
343 master = ssi->cl; in ssip_slave_get_master()
396 static void ssip_reset(struct hsi_client *cl) in ssip_reset() argument
398 struct ssi_protocol *ssi = hsi_client_drvdata(cl); in ssip_reset()
404 hsi_flush(cl); in ssip_reset()
407 hsi_stop_tx(cl); in ssip_reset()
409 ssi_waketest(cl, 0); in ssip_reset()
421 dev_dbg(&cl->device, "Pending TX data\n"); in ssip_reset()
429 static void ssip_dump_state(struct hsi_client *cl) in ssip_dump_state() argument
431 struct ssi_protocol *ssi = hsi_client_drvdata(cl); in ssip_dump_state()
435 dev_err(&cl->device, "Main state: %d\n", ssi->main_state); in ssip_dump_state()
436 dev_err(&cl->device, "Recv state: %d\n", ssi->recv_state); in ssip_dump_state()
437 dev_err(&cl->device, "Send state: %d\n", ssi->send_state); in ssip_dump_state()
438 dev_err(&cl->device, "CMT %s\n", (ssi->main_state == ACTIVE) ? in ssip_dump_state()
440 dev_err(&cl->device, "Wake test %d\n", ssi->waketest); in ssip_dump_state()
441 dev_err(&cl->device, "Data RX id: %d\n", ssi->rxid); in ssip_dump_state()
442 dev_err(&cl->device, "Data TX id: %d\n", ssi->txid); in ssip_dump_state()
445 dev_err(&cl->device, "pending TX data (%p)\n", msg); in ssip_dump_state()
449 static void ssip_error(struct hsi_client *cl) in ssip_error() argument
451 struct ssi_protocol *ssi = hsi_client_drvdata(cl); in ssip_error()
454 ssip_dump_state(cl); in ssip_error()
455 ssip_reset(cl); in ssip_error()
458 hsi_async_read(cl, msg); in ssip_error()
463 struct hsi_client *cl = (struct hsi_client *)data; in ssip_keep_alive() local
464 struct ssi_protocol *ssi = hsi_client_drvdata(cl); in ssip_keep_alive()
466 dev_dbg(&cl->device, "Keep alive kick in: m(%d) r(%d) s(%d)\n", in ssip_keep_alive()
489 struct hsi_client *cl = (struct hsi_client *)data; in ssip_wd() local
491 dev_err(&cl->device, "Watchdog trigerred\n"); in ssip_wd()
492 ssip_error(cl); in ssip_wd()
495 static void ssip_send_bootinfo_req_cmd(struct hsi_client *cl) in ssip_send_bootinfo_req_cmd() argument
497 struct ssi_protocol *ssi = hsi_client_drvdata(cl); in ssip_send_bootinfo_req_cmd()
500 dev_dbg(&cl->device, "Issuing BOOT INFO REQ command\n"); in ssip_send_bootinfo_req_cmd()
504 hsi_async_write(cl, msg); in ssip_send_bootinfo_req_cmd()
505 dev_dbg(&cl->device, "Issuing RX command\n"); in ssip_send_bootinfo_req_cmd()
508 hsi_async_read(cl, msg); in ssip_send_bootinfo_req_cmd()
511 static void ssip_start_rx(struct hsi_client *cl) in ssip_start_rx() argument
513 struct ssi_protocol *ssi = hsi_client_drvdata(cl); in ssip_start_rx()
516 dev_dbg(&cl->device, "RX start M(%d) R(%d)\n", ssi->main_state, in ssip_start_rx()
527 ssip_send_bootinfo_req_cmd(cl); in ssip_start_rx()
539 dev_dbg(&cl->device, "Send READY\n"); in ssip_start_rx()
540 hsi_async_write(cl, msg); in ssip_start_rx()
543 static void ssip_stop_rx(struct hsi_client *cl) in ssip_stop_rx() argument
545 struct ssi_protocol *ssi = hsi_client_drvdata(cl); in ssip_stop_rx()
547 dev_dbg(&cl->device, "RX stop M(%d)\n", ssi->main_state); in ssip_stop_rx()
562 struct hsi_client *cl = msg->cl; in ssip_strans_complete() local
563 struct ssi_protocol *ssi = hsi_client_drvdata(cl); in ssip_strans_complete()
571 hsi_async_write(cl, data); in ssip_strans_complete()
574 static int ssip_xmit(struct hsi_client *cl) in ssip_xmit() argument
576 struct ssi_protocol *ssi = hsi_client_drvdata(cl); in ssip_xmit()
603 dev_dbg(&cl->device, "Send STRANS (%d frames)\n", in ssip_xmit()
606 return hsi_async_write(cl, msg); in ssip_xmit()
643 struct hsi_client *cl = msg->cl; in ssip_rx_data_complete() local
644 struct ssi_protocol *ssi = hsi_client_drvdata(cl); in ssip_rx_data_complete()
648 dev_err(&cl->device, "RX data error\n"); in ssip_rx_data_complete()
650 ssip_error(cl); in ssip_rx_data_complete()
659 static void ssip_rx_bootinforeq(struct hsi_client *cl, u32 cmd) in ssip_rx_bootinforeq() argument
661 struct ssi_protocol *ssi = hsi_client_drvdata(cl); in ssip_rx_bootinforeq()
670 dev_err(&cl->device, "Boot info req on active state\n"); in ssip_rx_bootinforeq()
671 ssip_error(cl); in ssip_rx_bootinforeq()
678 ssi_waketest(cl, 1); /* FIXME: To be removed */ in ssip_rx_bootinforeq()
683 dev_dbg(&cl->device, "Send BOOTINFO_RESP\n"); in ssip_rx_bootinforeq()
685 dev_warn(&cl->device, "boot info req verid mismatch\n"); in ssip_rx_bootinforeq()
689 hsi_async_write(cl, msg); in ssip_rx_bootinforeq()
695 dev_dbg(&cl->device, "Wrong state M(%d)\n", ssi->main_state); in ssip_rx_bootinforeq()
700 static void ssip_rx_bootinforesp(struct hsi_client *cl, u32 cmd) in ssip_rx_bootinforesp() argument
702 struct ssi_protocol *ssi = hsi_client_drvdata(cl); in ssip_rx_bootinforesp()
705 dev_warn(&cl->device, "boot info resp verid mismatch\n"); in ssip_rx_bootinforesp()
712 dev_dbg(&cl->device, "boot info resp ignored M(%d)\n", in ssip_rx_bootinforesp()
717 static void ssip_rx_waketest(struct hsi_client *cl, u32 cmd) in ssip_rx_waketest() argument
719 struct ssi_protocol *ssi = hsi_client_drvdata(cl); in ssip_rx_waketest()
724 dev_dbg(&cl->device, "wake lines test ignored M(%d)\n", in ssip_rx_waketest()
731 ssi_waketest(cl, 0); /* FIXME: To be removed */ in ssip_rx_waketest()
737 dev_notice(&cl->device, "WAKELINES TEST %s\n", in ssip_rx_waketest()
740 ssip_error(cl); in ssip_rx_waketest()
743 dev_dbg(&cl->device, "CMT is ONLINE\n"); in ssip_rx_waketest()
748 static void ssip_rx_ready(struct hsi_client *cl) in ssip_rx_ready() argument
750 struct ssi_protocol *ssi = hsi_client_drvdata(cl); in ssip_rx_ready()
754 dev_dbg(&cl->device, "READY on wrong state: S(%d) M(%d)\n", in ssip_rx_ready()
760 dev_dbg(&cl->device, "Ignore spurious READY command\n"); in ssip_rx_ready()
766 ssip_xmit(cl); in ssip_rx_ready()
769 static void ssip_rx_strans(struct hsi_client *cl, u32 cmd) in ssip_rx_strans() argument
771 struct ssi_protocol *ssi = hsi_client_drvdata(cl); in ssip_rx_strans()
776 dev_dbg(&cl->device, "RX strans: %d frames\n", len); in ssip_rx_strans()
779 dev_err(&cl->device, "START TRANS wrong state: S(%d) M(%d)\n", in ssip_rx_strans()
786 dev_err(&cl->device, "START TRANS id %d expected %d\n", in ssip_rx_strans()
795 dev_err(&cl->device, "No memory for rx skb\n"); in ssip_rx_strans()
802 dev_err(&cl->device, "No memory for RX data msg\n"); in ssip_rx_strans()
806 hsi_async_read(cl, msg); in ssip_rx_strans()
812 ssip_error(cl); in ssip_rx_strans()
817 struct hsi_client *cl = msg->cl; in ssip_rxcmd_complete() local
822 dev_err(&cl->device, "RX error detected\n"); in ssip_rxcmd_complete()
824 ssip_error(cl); in ssip_rxcmd_complete()
827 hsi_async_read(cl, msg); in ssip_rxcmd_complete()
828 dev_dbg(&cl->device, "RX cmd: 0x%08x\n", cmd); in ssip_rxcmd_complete()
834 ssip_rx_bootinforeq(cl, cmd); in ssip_rxcmd_complete()
837 ssip_rx_bootinforesp(cl, cmd); in ssip_rxcmd_complete()
840 ssip_rx_waketest(cl, cmd); in ssip_rxcmd_complete()
843 ssip_rx_strans(cl, cmd); in ssip_rxcmd_complete()
846 ssip_rx_ready(cl); in ssip_rxcmd_complete()
849 dev_warn(&cl->device, "command 0x%08x not supported\n", cmd); in ssip_rxcmd_complete()
856 struct hsi_client *cl = msg->cl; in ssip_swbreak_complete() local
857 struct ssi_protocol *ssi = hsi_client_drvdata(cl); in ssip_swbreak_complete()
866 hsi_stop_tx(cl); in ssip_swbreak_complete()
871 ssip_xmit(cl); in ssip_swbreak_complete()
878 struct hsi_client *cl = msg->cl; in ssip_tx_data_complete() local
879 struct ssi_protocol *ssi = hsi_client_drvdata(cl); in ssip_tx_data_complete()
883 dev_err(&cl->device, "TX data error\n"); in ssip_tx_data_complete()
884 ssip_error(cl); in ssip_tx_data_complete()
894 dev_dbg(&cl->device, "Send SWBREAK\n"); in ssip_tx_data_complete()
895 hsi_async_write(cl, cmsg); in ssip_tx_data_complete()
898 ssip_xmit(cl); in ssip_tx_data_complete()
904 static void ssip_port_event(struct hsi_client *cl, unsigned long event) in ssip_port_event() argument
908 ssip_start_rx(cl); in ssip_port_event()
911 ssip_stop_rx(cl); in ssip_port_event()
920 struct hsi_client *cl = to_hsi_client(dev->dev.parent); in ssip_pn_open() local
921 struct ssi_protocol *ssi = hsi_client_drvdata(cl); in ssip_pn_open()
924 err = hsi_claim_port(cl, 1); in ssip_pn_open()
926 dev_err(&cl->device, "SSI port already claimed\n"); in ssip_pn_open()
929 err = hsi_register_port_event(cl, ssip_port_event); in ssip_pn_open()
931 dev_err(&cl->device, "Register HSI port event failed (%d)\n", in ssip_pn_open()
935 dev_dbg(&cl->device, "Configuring SSI port\n"); in ssip_pn_open()
936 hsi_setup(cl); in ssip_pn_open()
940 ssi_waketest(cl, 1); /* FIXME: To be removed */ in ssip_pn_open()
950 struct hsi_client *cl = to_hsi_client(dev->dev.parent); in ssip_pn_stop() local
952 ssip_reset(cl); in ssip_pn_stop()
953 hsi_unregister_port_event(cl); in ssip_pn_stop()
954 hsi_release_port(cl); in ssip_pn_stop()
970 struct hsi_client *cl = to_hsi_client(dev->dev.parent); in ssip_pn_xmit() local
971 struct ssi_protocol *ssi = hsi_client_drvdata(cl); in ssip_pn_xmit()
993 dev_dbg(&cl->device, "Dropping tx data: No memory\n"); in ssip_pn_xmit()
1001 dev_dbg(&cl->device, "Dropping tx data: CMT is OFFLINE\n"); in ssip_pn_xmit()
1007 dev_info(&cl->device, "TX queue full %d\n", ssi->txqueue_len); in ssip_pn_xmit()
1013 dev_dbg(&cl->device, "Start TX qlen %d\n", ssi->txqueue_len); in ssip_pn_xmit()
1014 hsi_start_tx(cl); in ssip_pn_xmit()
1017 dev_dbg(&cl->device, "Start TX on SEND READY qlen %d\n", in ssip_pn_xmit()
1020 ssip_xmit(cl); in ssip_pn_xmit()
1041 dev_err(&ssi->cl->device, "CMT reset detected!\n"); in ssip_reset_event()
1042 ssip_error(ssi->cl); in ssip_reset_event()
1072 struct hsi_client *cl = to_hsi_client(dev); in ssi_protocol_probe() local
1086 ssi->rx_wd.data = (unsigned long)cl; in ssi_protocol_probe()
1088 ssi->tx_wd.data = (unsigned long)cl; in ssi_protocol_probe()
1090 ssi->keep_alive.data = (unsigned long)cl; in ssi_protocol_probe()
1095 hsi_client_set_drvdata(cl, ssi); in ssi_protocol_probe()
1096 ssi->cl = cl; in ssi_protocol_probe()
1098 ssi->channel_id_cmd = hsi_get_channel_id_by_name(cl, "mcsaab-control"); in ssi_protocol_probe()
1105 ssi->channel_id_data = hsi_get_channel_id_by_name(cl, "mcsaab-data"); in ssi_protocol_probe()
1151 struct hsi_client *cl = to_hsi_client(dev); in ssi_protocol_remove() local
1152 struct ssi_protocol *ssi = hsi_client_drvdata(cl); in ssi_protocol_remove()
1157 hsi_client_set_drvdata(cl, NULL); in ssi_protocol_remove()