Lines Matching +full:ns +full:- +full:firmware
1 // SPDX-License-Identifier: GPL-2.0-or-later
28 Merged with 2.2 - Alan Cox
150 int error = -ENODEV; in sb1000_probe_one()
153 return -ENODEV; in sb1000_probe_one()
162 serial_number = pdev->card->serial; in sb1000_probe_one()
176 error = -ENOMEM; in sb1000_probe_one()
181 dev->base_addr = ioaddr[0]; in sb1000_probe_one()
183 dev->mem_start = ioaddr[1]; in sb1000_probe_one()
184 dev->irq = irq; in sb1000_probe_one()
188 "S/N %#8.8x, IRQ %d.\n", dev->name, dev->base_addr, in sb1000_probe_one()
189 dev->mem_start, serial_number, dev->irq); in sb1000_probe_one()
192 * The SB1000 is an rx-only cable modem device. The uplink is a modem in sb1000_probe_one()
195 dev->flags = IFF_POINTOPOINT|IFF_NOARP; in sb1000_probe_one()
197 SET_NETDEV_DEV(dev, &pdev->dev); in sb1000_probe_one()
202 dev->netdev_ops = &sb1000_netdev_ops; in sb1000_probe_one()
205 dev->dev_addr[2] = serial_number >> 24 & 0xff; in sb1000_probe_one()
206 dev->dev_addr[3] = serial_number >> 16 & 0xff; in sb1000_probe_one()
207 dev->dev_addr[4] = serial_number >> 8 & 0xff; in sb1000_probe_one()
208 dev->dev_addr[5] = serial_number >> 0 & 0xff; in sb1000_probe_one()
236 release_region(dev->base_addr, 16); in sb1000_remove_one()
237 release_region(dev->mem_start, 16); in sb1000_remove_one()
272 return -ETIME; in card_wait_for_busy_clear()
296 return -ETIME; in card_wait_for_ready()
346 return -EIO; in card_send_command()
368 return -ETIME; in sb1000_wait_for_ready()
376 return -ETIME; in sb1000_wait_for_ready()
394 return -ETIME; in sb1000_wait_for_ready_clear()
402 return -ETIME; in sb1000_wait_for_ready_clear()
476 return -EIO; in sb1000_reset()
480 /* check SB1000 firmware CRC */
493 return -EIO; in sb1000_check_CRC()
541 return -EIO; in sb1000_activate()
547 /* get SB1000 firmware version */
562 return -EIO; in sb1000_get_firmware_version()
604 return -EINVAL; in sb1000_set_frequency()
743 int ioaddr, ns; in sb1000_rx() local
747 struct net_device_stats *stats = &dev->stats; in sb1000_rx()
753 const int NewDatagramDataSize = FrameSize - NewDatagramHeaderSize; in sb1000_rx()
756 const int ContDatagramDataSize = FrameSize - ContDatagramHeaderSize; in sb1000_rx()
759 ioaddr = dev->base_addr; in sb1000_rx()
765 lp->rx_frames++; in sb1000_rx()
768 for (ns = 0; ns < NPIDS; ns++) { in sb1000_rx()
769 session_id = lp->rx_session_id[ns]; in sb1000_rx()
770 frame_id = lp->rx_frame_id[ns]; in sb1000_rx()
790 stats->rx_frame_errors++; in sb1000_rx()
791 skb = lp->rx_skb[ns]; in sb1000_rx()
794 "expecting %02x %02x\n", dev->name, st[0], st[1], in sb1000_rx()
802 lp->rx_frame_id[ns] = 0x30 | ((st[1] + 1) & 0x0f); in sb1000_rx()
813 "got %02x expecting %02x\n", dev->name, buffer[0], in sb1000_rx()
815 stats->rx_length_errors++; in sb1000_rx()
820 buffer[NewDatagramHeaderSkip + 4]) - 17; in sb1000_rx()
824 "than MRU (%d)\n", dev->name, dlen, SB1000_MRU); in sb1000_rx()
825 stats->rx_length_errors++; in sb1000_rx()
829 lp->rx_dlen[ns] = dlen; in sb1000_rx()
835 "skbuff\n", dev->name, skbsize); in sb1000_rx()
836 stats->rx_dropped++; in sb1000_rx()
840 skb->dev = dev; in sb1000_rx()
842 skb->protocol = (unsigned short) buffer[NewDatagramHeaderSkip + 16]; in sb1000_rx()
845 lp->rx_skb[ns] = skb; in sb1000_rx()
852 "got %02x expecting %02x\n", dev->name, buffer[0], in sb1000_rx()
854 stats->rx_length_errors++; in sb1000_rx()
858 skb = lp->rx_skb[ns]; in sb1000_rx()
861 dlen = lp->rx_dlen[ns]; in sb1000_rx()
863 if (skb->len < dlen + TrailerSize) { in sb1000_rx()
864 lp->rx_session_id[ns] &= ~0x40; in sb1000_rx()
871 stats->rx_bytes+=dlen; in sb1000_rx()
872 stats->rx_packets++; in sb1000_rx()
873 lp->rx_skb[ns] = NULL; in sb1000_rx()
874 lp->rx_session_id[ns] |= 0x40; in sb1000_rx()
881 dev->name, st[0], st[1]); in sb1000_rx()
882 stats->rx_frame_errors++; in sb1000_rx()
885 sb1000_print_status_buffer(dev->name, st, buffer, FrameSize); in sb1000_rx()
887 stats->rx_errors++; in sb1000_rx()
888 if (ns < NPIDS) { in sb1000_rx()
889 if ((skb = lp->rx_skb[ns])) { in sb1000_rx()
891 lp->rx_skb[ns] = NULL; in sb1000_rx()
893 lp->rx_session_id[ns] |= 0x40; in sb1000_rx()
895 return -1; in sb1000_rx()
909 ioaddr[0] = dev->base_addr; in sb1000_error_dpc()
911 ioaddr[1] = dev->mem_start; in sb1000_error_dpc()
912 name = dev->name; in sb1000_error_dpc()
919 lp->rx_error_dpc_count = ErrorDpcCounterInitialize; in sb1000_error_dpc()
934 ioaddr[0] = dev->base_addr; in sb1000_open()
936 ioaddr[1] = dev->mem_start; in sb1000_open()
937 name = dev->name; in sb1000_open()
947 lp->rx_skb[0] = NULL; in sb1000_open()
948 lp->rx_skb[1] = NULL; in sb1000_open()
949 lp->rx_skb[2] = NULL; in sb1000_open()
950 lp->rx_skb[3] = NULL; in sb1000_open()
951 lp->rx_dlen[0] = 0; in sb1000_open()
952 lp->rx_dlen[1] = 0; in sb1000_open()
953 lp->rx_dlen[2] = 0; in sb1000_open()
954 lp->rx_dlen[3] = 0; in sb1000_open()
955 lp->rx_frames = 0; in sb1000_open()
956 lp->rx_error_count = 0; in sb1000_open()
957 lp->rx_error_dpc_count = 0; in sb1000_open()
958 lp->rx_session_id[0] = 0x50; in sb1000_open()
959 lp->rx_session_id[1] = 0x48; in sb1000_open()
960 lp->rx_session_id[2] = 0x44; in sb1000_open()
961 lp->rx_session_id[3] = 0x42; in sb1000_open()
962 lp->rx_frame_id[0] = 0; in sb1000_open()
963 lp->rx_frame_id[1] = 0; in sb1000_open()
964 lp->rx_frame_id[2] = 0; in sb1000_open()
965 lp->rx_frame_id[3] = 0; in sb1000_open()
966 if (request_irq(dev->irq, sb1000_interrupt, 0, "sb1000", dev)) { in sb1000_open()
967 return -EAGAIN; in sb1000_open()
971 printk(KERN_DEBUG "%s: Opening, IRQ %d\n", name, dev->irq); in sb1000_open()
973 /* Activate board and check firmware version */ in sb1000_open()
981 printk(KERN_WARNING "%s: found firmware version %x.%02x " in sb1000_open()
999 if (!(dev && dev->flags & IFF_UP)) in sb1000_dev_ioctl()
1000 return -ENODEV; in sb1000_dev_ioctl()
1002 ioaddr[0] = dev->base_addr; in sb1000_dev_ioctl()
1004 ioaddr[1] = dev->mem_start; in sb1000_dev_ioctl()
1005 name = dev->name; in sb1000_dev_ioctl()
1009 stats[0] = dev->stats.rx_bytes; in sb1000_dev_ioctl()
1010 stats[1] = lp->rx_frames; in sb1000_dev_ioctl()
1011 stats[2] = dev->stats.rx_packets; in sb1000_dev_ioctl()
1012 stats[3] = dev->stats.rx_errors; in sb1000_dev_ioctl()
1013 stats[4] = dev->stats.rx_dropped; in sb1000_dev_ioctl()
1014 if(copy_to_user(ifr->ifr_data, stats, sizeof(stats))) in sb1000_dev_ioctl()
1015 return -EFAULT; in sb1000_dev_ioctl()
1019 case SIOCGCMFIRMWARE: /* get firmware version */ in sb1000_dev_ioctl()
1022 if(copy_to_user(ifr->ifr_data, version, sizeof(version))) in sb1000_dev_ioctl()
1023 return -EFAULT; in sb1000_dev_ioctl()
1029 if(put_user(frequency, (int __user *) ifr->ifr_data)) in sb1000_dev_ioctl()
1030 return -EFAULT; in sb1000_dev_ioctl()
1035 return -EPERM; in sb1000_dev_ioctl()
1036 if(get_user(frequency, (int __user *) ifr->ifr_data)) in sb1000_dev_ioctl()
1037 return -EFAULT; in sb1000_dev_ioctl()
1045 if(copy_to_user(ifr->ifr_data, PID, sizeof(PID))) in sb1000_dev_ioctl()
1046 return -EFAULT; in sb1000_dev_ioctl()
1051 return -EPERM; in sb1000_dev_ioctl()
1052 if(copy_from_user(PID, ifr->ifr_data, sizeof(PID))) in sb1000_dev_ioctl()
1053 return -EFAULT; in sb1000_dev_ioctl()
1057 lp->rx_session_id[0] = 0x50 | (PID[0] & 0x0f); in sb1000_dev_ioctl()
1058 lp->rx_session_id[1] = 0x48; in sb1000_dev_ioctl()
1059 lp->rx_session_id[2] = 0x44; in sb1000_dev_ioctl()
1060 lp->rx_session_id[3] = 0x42; in sb1000_dev_ioctl()
1061 lp->rx_frame_id[0] = 0; in sb1000_dev_ioctl()
1062 lp->rx_frame_id[1] = 0; in sb1000_dev_ioctl()
1063 lp->rx_frame_id[2] = 0; in sb1000_dev_ioctl()
1064 lp->rx_frame_id[3] = 0; in sb1000_dev_ioctl()
1068 status = -EINVAL; in sb1000_dev_ioctl()
1078 printk(KERN_WARNING "%s: trying to transmit!!!\n", dev->name); in sb1000_start_xmit()
1098 ioaddr[0] = dev->base_addr; in sb1000_interrupt()
1100 ioaddr[1] = dev->mem_start; in sb1000_interrupt()
1101 name = dev->name; in sb1000_interrupt()
1110 printk(KERN_DEBUG "%s: entering interrupt\n", dev->name); in sb1000_interrupt()
1114 lp->rx_error_count++; in sb1000_interrupt()
1123 if (lp->rx_error_dpc_count && !(--lp->rx_error_dpc_count)) { in sb1000_interrupt()
1129 if (lp->rx_error_count >= MaxRxErrorCount) { in sb1000_interrupt()
1134 lp->rx_error_count = 0; in sb1000_interrupt()
1147 printk(KERN_DEBUG "%s: Shutting down sb1000.\n", dev->name); in sb1000_close()
1151 ioaddr[0] = dev->base_addr; in sb1000_close()
1153 ioaddr[1] = dev->mem_start; in sb1000_close()
1155 free_irq(dev->irq, dev); in sb1000_close()
1156 /* If we don't do this, we can't re-insmod it later. */ in sb1000_close()
1162 if (lp->rx_skb[i]) { in sb1000_close()
1163 dev_kfree_skb(lp->rx_skb[i]); in sb1000_close()