| .. | .. |
|---|
| 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 | }; |
|---|