.. | .. |
---|
| 1 | +// SPDX-License-Identifier: GPL-2.0-only |
---|
1 | 2 | /* imm.c -- low level driver for the IOMEGA MatchMaker |
---|
2 | 3 | * parallel port SCSI host adapter. |
---|
3 | 4 | * |
---|
.. | .. |
---|
686 | 687 | if (cmd->SCp.buffer && !cmd->SCp.this_residual) { |
---|
687 | 688 | /* if scatter/gather, advance to the next segment */ |
---|
688 | 689 | if (cmd->SCp.buffers_residual--) { |
---|
689 | | - cmd->SCp.buffer++; |
---|
| 690 | + cmd->SCp.buffer = sg_next(cmd->SCp.buffer); |
---|
690 | 691 | cmd->SCp.this_residual = |
---|
691 | 692 | cmd->SCp.buffer->length; |
---|
692 | 693 | cmd->SCp.ptr = sg_virt(cmd->SCp.buffer); |
---|
.. | .. |
---|
796 | 797 | return 0; |
---|
797 | 798 | } |
---|
798 | 799 | return 1; /* wait until imm_wakeup claims parport */ |
---|
799 | | - /* Phase 1 - Connected */ |
---|
800 | | - case 1: |
---|
| 800 | + |
---|
| 801 | + case 1: /* Phase 1 - Connected */ |
---|
801 | 802 | imm_connect(dev, CONNECT_EPP_MAYBE); |
---|
802 | 803 | cmd->SCp.phase++; |
---|
| 804 | + fallthrough; |
---|
803 | 805 | |
---|
804 | | - /* Phase 2 - We are now talking to the scsi bus */ |
---|
805 | | - case 2: |
---|
| 806 | + case 2: /* Phase 2 - We are now talking to the scsi bus */ |
---|
806 | 807 | if (!imm_select(dev, scmd_id(cmd))) { |
---|
807 | 808 | imm_fail(dev, DID_NO_CONNECT); |
---|
808 | 809 | return 0; |
---|
809 | 810 | } |
---|
810 | 811 | cmd->SCp.phase++; |
---|
| 812 | + fallthrough; |
---|
811 | 813 | |
---|
812 | | - /* Phase 3 - Ready to accept a command */ |
---|
813 | | - case 3: |
---|
| 814 | + case 3: /* Phase 3 - Ready to accept a command */ |
---|
814 | 815 | w_ctr(ppb, 0x0c); |
---|
815 | 816 | if (!(r_str(ppb) & 0x80)) |
---|
816 | 817 | return 1; |
---|
.. | .. |
---|
818 | 819 | if (!imm_send_command(cmd)) |
---|
819 | 820 | return 0; |
---|
820 | 821 | cmd->SCp.phase++; |
---|
| 822 | + fallthrough; |
---|
821 | 823 | |
---|
822 | | - /* Phase 4 - Setup scatter/gather buffers */ |
---|
823 | | - case 4: |
---|
| 824 | + case 4: /* Phase 4 - Setup scatter/gather buffers */ |
---|
824 | 825 | if (scsi_bufflen(cmd)) { |
---|
825 | 826 | cmd->SCp.buffer = scsi_sglist(cmd); |
---|
826 | 827 | cmd->SCp.this_residual = cmd->SCp.buffer->length; |
---|
.. | .. |
---|
834 | 835 | cmd->SCp.phase++; |
---|
835 | 836 | if (cmd->SCp.this_residual & 0x01) |
---|
836 | 837 | cmd->SCp.this_residual++; |
---|
837 | | - /* Phase 5 - Pre-Data transfer stage */ |
---|
838 | | - case 5: |
---|
| 838 | + fallthrough; |
---|
| 839 | + |
---|
| 840 | + case 5: /* Phase 5 - Pre-Data transfer stage */ |
---|
839 | 841 | /* Spin lock for BUSY */ |
---|
840 | 842 | w_ctr(ppb, 0x0c); |
---|
841 | 843 | if (!(r_str(ppb) & 0x80)) |
---|
.. | .. |
---|
850 | 852 | if (imm_negotiate(dev)) |
---|
851 | 853 | return 0; |
---|
852 | 854 | cmd->SCp.phase++; |
---|
| 855 | + fallthrough; |
---|
853 | 856 | |
---|
854 | | - /* Phase 6 - Data transfer stage */ |
---|
855 | | - case 6: |
---|
| 857 | + case 6: /* Phase 6 - Data transfer stage */ |
---|
856 | 858 | /* Spin lock for BUSY */ |
---|
857 | 859 | w_ctr(ppb, 0x0c); |
---|
858 | 860 | if (!(r_str(ppb) & 0x80)) |
---|
.. | .. |
---|
866 | 868 | return 1; |
---|
867 | 869 | } |
---|
868 | 870 | cmd->SCp.phase++; |
---|
| 871 | + fallthrough; |
---|
869 | 872 | |
---|
870 | | - /* Phase 7 - Post data transfer stage */ |
---|
871 | | - case 7: |
---|
| 873 | + case 7: /* Phase 7 - Post data transfer stage */ |
---|
872 | 874 | if ((dev->dp) && (dev->rd)) { |
---|
873 | 875 | if ((dev->mode == IMM_NIBBLE) || (dev->mode == IMM_PS2)) { |
---|
874 | 876 | w_ctr(ppb, 0x4); |
---|
.. | .. |
---|
878 | 880 | } |
---|
879 | 881 | } |
---|
880 | 882 | cmd->SCp.phase++; |
---|
| 883 | + fallthrough; |
---|
881 | 884 | |
---|
882 | | - /* Phase 8 - Read status/message */ |
---|
883 | | - case 8: |
---|
| 885 | + case 8: /* Phase 8 - Read status/message */ |
---|
884 | 886 | /* Check for data overrun */ |
---|
885 | 887 | if (imm_wait(dev) != (unsigned char) 0xb8) { |
---|
886 | 888 | imm_fail(dev, DID_ERROR); |
---|
.. | .. |
---|
901 | 903 | w_ctr(ppb, 0x4); |
---|
902 | 904 | } |
---|
903 | 905 | return 0; /* Finished */ |
---|
904 | | - break; |
---|
905 | 906 | |
---|
906 | 907 | default: |
---|
907 | 908 | printk("imm: Invalid scsi phase\n"); |
---|
.. | .. |
---|
967 | 968 | case 1: /* Have not connected to interface */ |
---|
968 | 969 | dev->cur_cmd = NULL; /* Forget the problem */ |
---|
969 | 970 | return SUCCESS; |
---|
970 | | - break; |
---|
971 | 971 | default: /* SCSI command sent, can not abort */ |
---|
972 | 972 | return FAILED; |
---|
973 | | - break; |
---|
974 | 973 | } |
---|
975 | 974 | } |
---|
976 | 975 | |
---|
.. | .. |
---|
1110 | 1109 | .bios_param = imm_biosparam, |
---|
1111 | 1110 | .this_id = 7, |
---|
1112 | 1111 | .sg_tablesize = SG_ALL, |
---|
1113 | | - .use_clustering = ENABLE_CLUSTERING, |
---|
1114 | 1112 | .can_queue = 1, |
---|
1115 | 1113 | .slave_alloc = imm_adjust_queue, |
---|
1116 | 1114 | }; |
---|