Преглед изворни кода

Finished by hand

tags/v0.9.3
Michael Brown пре 19 година
родитељ
комит
f39cc6d978
5 измењених фајлова са 101 додато и 91 уклоњено
  1. 11
    8
      src/drivers/net/e1000.c
  2. 16
    14
      src/drivers/net/eepro100.c
  3. 15
    11
      src/drivers/net/epic100.c
  4. 24
    22
      src/drivers/net/forcedeth.c
  5. 35
    36
      src/drivers/net/mtd80x.c

+ 11
- 8
src/drivers/net/e1000.c Прегледај датотеку

85
 #include "e1000_hw.h"
85
 #include "e1000_hw.h"
86
 
86
 
87
 /* NIC specific static variables go here */
87
 /* NIC specific static variables go here */
88
+static struct nic_operations e1000_operations;
89
+static struct pci_driver e1000_driver;
90
+
88
 static struct e1000_hw hw;
91
 static struct e1000_hw hw;
89
 static char tx_pool[128 + 16];
92
 static char tx_pool[128 + 16];
90
 static char rx_pool[128 + 16];
93
 static char rx_pool[128 + 16];
3580
 You should omit the last argument struct pci_device * for a non-PCI NIC
3583
 You should omit the last argument struct pci_device * for a non-PCI NIC
3581
 ***************************************************************************/
3584
 ***************************************************************************/
3582
 static int e1000_probe ( struct dev *dev ) {
3585
 static int e1000_probe ( struct dev *dev ) {
3583
-
3584
 	struct nic *nic = nic_device ( dev );
3586
 	struct nic *nic = nic_device ( dev );
3585
-
3586
 	struct pci_device *p = pci_device ( dev );
3587
 	struct pci_device *p = pci_device ( dev );
3587
 	unsigned long mmio_start, mmio_len;
3588
 	unsigned long mmio_start, mmio_len;
3588
 	int ret_val, i;
3589
 	int ret_val, i;
3589
 
3590
 
3590
-	if (p == 0)
3591
+	if ( ! find_pci_device ( p, &e1000_driver ) )
3591
 		return 0;
3592
 		return 0;
3593
+
3592
 	/* Initialize hw with default values */
3594
 	/* Initialize hw with default values */
3593
 	memset(&hw, 0, sizeof(hw));
3595
 	memset(&hw, 0, sizeof(hw));
3594
 	hw.pdev = p;
3596
 	hw.pdev = p;
3663
 	init_descriptor();
3665
 	init_descriptor();
3664
 
3666
 
3665
 	/* point to NIC specific routines */
3667
 	/* point to NIC specific routines */
3666
-static struct nic_operations e1000_operations;
3668
+	nic->nic_op	= &e1000_operations;
3669
+
3670
+	return 1;
3671
+}
3672
+
3667
 static struct nic_operations e1000_operations = {
3673
 static struct nic_operations e1000_operations = {
3668
 	.connect	= dummy_connect,
3674
 	.connect	= dummy_connect,
3669
 	.poll		= e1000_poll,
3675
 	.poll		= e1000_poll,
3670
 	.transmit	= e1000_transmit,
3676
 	.transmit	= e1000_transmit,
3671
 	.irq		= e1000_irq,
3677
 	.irq		= e1000_irq,
3672
 	.disable	= e1000_disable,
3678
 	.disable	= e1000_disable,
3673
-};	nic->nic_op	= &e1000_operations;
3674
-
3675
-	return 1;
3676
-}
3679
+};
3677
 
3680
 
3678
 static struct pci_id e1000_nics[] = {
3681
 static struct pci_id e1000_nics[] = {
3679
 PCI_ROM(0x8086, 0x1000, "e1000-82542",               "Intel EtherExpressPro1000"),
3682
 PCI_ROM(0x8086, 0x1000, "e1000-82542",               "Intel EtherExpressPro1000"),

+ 16
- 14
src/drivers/net/eepro100.c Прегледај датотеку

258
 	char packet[1518];
258
 	char packet[1518];
259
 };
259
 };
260
 
260
 
261
+static struct nic_operations eepro100_operations;
262
+static struct pci_driver eepro100_driver;
263
+
261
 #define RXFD_COUNT 4
264
 #define RXFD_COUNT 4
262
 static struct RxFD rxfds[RXFD_COUNT];
265
 static struct RxFD rxfds[RXFD_COUNT];
263
 static unsigned int rxfd = 0;
266
 static unsigned int rxfd = 0;
601
  */
604
  */
602
 
605
 
603
 static int eepro100_probe ( struct dev *dev ) {
606
 static int eepro100_probe ( struct dev *dev ) {
604
-
605
 	struct nic *nic = nic_device ( dev );
607
 	struct nic *nic = nic_device ( dev );
606
-
607
 	struct pci_device *p = pci_device ( dev );
608
 	struct pci_device *p = pci_device ( dev );
608
 	unsigned short sum = 0;
609
 	unsigned short sum = 0;
609
 	int i;
610
 	int i;
615
 	   be careful not to access beyond this array */
616
 	   be careful not to access beyond this array */
616
 	unsigned short eeprom[16];
617
 	unsigned short eeprom[16];
617
 
618
 
619
+	if ( ! find_pci_device ( p, &eepro100_driver ) )
620
+		return 0;
621
+
618
 	if (p->ioaddr == 0)
622
 	if (p->ioaddr == 0)
619
 		return 0;
623
 		return 0;
620
-	ioaddr = p->ioaddr & ~3; /* Mask the bit that says "this is an io addr" */
624
+	ioaddr = p->ioaddr;
621
 	nic->ioaddr = ioaddr;
625
 	nic->ioaddr = ioaddr;
622
 
626
 
623
-	adjust_pci_device(p);
624
-
625
 	/* Copy IRQ from PCI information */
627
 	/* Copy IRQ from PCI information */
626
 	nic->irqno = p->irq;
628
 	nic->irqno = p->irq;
627
 
629
 
764
 	 */
766
 	 */
765
 	if (!(mdio_read(eeprom[6] & 0x1f, 1) & (1 << 2))) {
767
 	if (!(mdio_read(eeprom[6] & 0x1f, 1) & (1 << 2))) {
766
 		printf("Valid link not established\n");
768
 		printf("Valid link not established\n");
767
-		eepro100_disable(dev);
769
+		eepro100_disable(nic);
768
 		return 0;
770
 		return 0;
769
 	}
771
 	}
770
-static struct nic_operations eepro100_operations;
771
-static struct nic_operations eepro100_operations = {
772
-	.connect	= dummy_connect,
773
-	.poll		= eepro100_poll,
774
-	.transmit	= eepro100_transmit,
775
-	.irq		= eepro100_irq,
776
-	.disable	= eepro100_disable,
777
-};
778
 	nic->nic_op	= &eepro100_operations;
772
 	nic->nic_op	= &eepro100_operations;
779
 	return 1;
773
 	return 1;
780
 }
774
 }
799
 }
793
 }
800
 #endif
794
 #endif
801
 
795
 
796
+static struct nic_operations eepro100_operations = {
797
+	.connect	= dummy_connect,
798
+	.poll		= eepro100_poll,
799
+	.transmit	= eepro100_transmit,
800
+	.irq		= eepro100_irq,
801
+	.disable	= eepro100_disable,
802
+};
803
+
802
 static struct pci_id eepro100_nics[] = {
804
 static struct pci_id eepro100_nics[] = {
803
 PCI_ROM(0x8086, 0x1029, "id1029",        "Intel EtherExpressPro100 ID1029"),
805
 PCI_ROM(0x8086, 0x1029, "id1029",        "Intel EtherExpressPro100 ID1029"),
804
 PCI_ROM(0x8086, 0x1030, "id1030",        "Intel EtherExpressPro100 ID1030"),
806
 PCI_ROM(0x8086, 0x1030, "id1030",        "Intel EtherExpressPro100 ID1030"),

+ 15
- 11
src/drivers/net/epic100.c Прегледај датотеку

8
 #include "pci.h"
8
 #include "pci.h"
9
 #include "nic.h"
9
 #include "nic.h"
10
 #include "timer.h"
10
 #include "timer.h"
11
+#include "console.h"
11
 #include "epic100.h"
12
 #include "epic100.h"
12
 
13
 
13
 /* Condensed operations for readability */
14
 /* Condensed operations for readability */
59
 static int	mii_read(int phy_id, int location);
60
 static int	mii_read(int phy_id, int location);
60
 static void     epic100_irq(struct nic *nic, irq_action_t action);
61
 static void     epic100_irq(struct nic *nic, irq_action_t action);
61
 
62
 
63
+static struct nic_operations epic100_operations;
64
+static struct pci_driver epic100_driver;
65
+
62
 static int	ioaddr;
66
 static int	ioaddr;
63
 
67
 
64
 static int	command;
68
 static int	command;
94
 /***********************************************************************/
98
 /***********************************************************************/
95
 
99
 
96
 
100
 
97
-    static int
101
+static int
98
 epic100_probe ( struct dev *dev ) {
102
 epic100_probe ( struct dev *dev ) {
99
-
100
     struct nic *nic = nic_device ( dev );
103
     struct nic *nic = nic_device ( dev );
101
-
102
     struct pci_device *pci = pci_device ( dev );
104
     struct pci_device *pci = pci_device ( dev );
103
     int i;
105
     int i;
104
     unsigned short* ap;
106
     unsigned short* ap;
105
     unsigned int phy, phy_idx;
107
     unsigned int phy, phy_idx;
106
 
108
 
109
+    if ( ! find_pci_device ( pci, &epic100_driver ) )
110
+	    return 0;
111
+
107
     if (pci->ioaddr == 0)
112
     if (pci->ioaddr == 0)
108
 	return 0;
113
 	return 0;
109
 
114
 
202
     }
207
     }
203
 
208
 
204
     epic100_open();
209
     epic100_open();
205
-static struct nic_operations epic100_operations;
206
-static struct nic_operations epic100_operations = {
207
-	.connect	= dummy_connect,
208
-	.poll		= epic100_poll,
209
-	.transmit	= epic100_transmit,
210
-	.irq		= epic100_irq,
211
-	.disable	= epic100_disable,
212
-};
213
     nic->nic_op	= &epic100_operations;
210
     nic->nic_op	= &epic100_operations;
214
 
211
 
215
     return 1;
212
     return 1;
509
     return inw(mmdata);
506
     return inw(mmdata);
510
 }
507
 }
511
 
508
 
509
+static struct nic_operations epic100_operations = {
510
+	.connect	= dummy_connect,
511
+	.poll		= epic100_poll,
512
+	.transmit	= epic100_transmit,
513
+	.irq		= epic100_irq,
514
+	.disable	= epic100_disable,
515
+};
512
 
516
 
513
 static struct pci_id epic100_nics[] = {
517
 static struct pci_id epic100_nics[] = {
514
 PCI_ROM(0x10b8, 0x0005, "epic100",    "SMC EtherPowerII"),		/* SMC 83c170 EPIC/100 */
518
 PCI_ROM(0x10b8, 0x0005, "epic100",    "SMC EtherPowerII"),		/* SMC 83c170 EPIC/100 */

+ 24
- 22
src/drivers/net/forcedeth.c Прегледај датотеку

918
   }
918
   }
919
 }
919
 }
920
 
920
 
921
+static struct nic_operations forcedeth_operations = {
922
+	.connect	= dummy_connect,
923
+	.poll		= forcedeth_poll,
924
+	.transmit	= forcedeth_transmit,
925
+	.irq		= forcedeth_irq,
926
+	.disable	= forcedeth_disable,
927
+};
928
+
929
+static struct pci_id forcedeth_nics[] = {
930
+	PCI_ROM(0x10de, 0x01C3, "nforce", "nForce Ethernet Controller"),
931
+	PCI_ROM(0x10de, 0x0066, "nforce2", "nForce2 Ethernet Controller"),
932
+	PCI_ROM(0x10de, 0x00D6, "nforce3", "nForce3 Ethernet Controller"),
933
+};
934
+
935
+static struct pci_driver forcedeth_driver =
936
+	PCI_DRIVER ( "forcedeth", forcedeth_nics, PCI_NO_CLASS );
937
+
921
 /**************************************************************************
938
 /**************************************************************************
922
 PROBE - Look for an adapter, this routine's visible to the outside
939
 PROBE - Look for an adapter, this routine's visible to the outside
923
 ***************************************************************************/
940
 ***************************************************************************/
925
 #define board_found 1
942
 #define board_found 1
926
 #define valid_link 0
943
 #define valid_link 0
927
 static int forcedeth_probe ( struct dev *dev ) {
944
 static int forcedeth_probe ( struct dev *dev ) {
928
-
929
 	struct nic *nic = nic_device ( dev );
945
 	struct nic *nic = nic_device ( dev );
930
-
931
 	struct pci_device *pci = pci_device ( dev );
946
 	struct pci_device *pci = pci_device ( dev );
932
 	unsigned long addr;
947
 	unsigned long addr;
933
 	int sz;
948
 	int sz;
934
 	u8 *base;
949
 	u8 *base;
935
 
950
 
951
+	if ( ! find_pci_device ( pci, &forcedeth_driver ) )
952
+		return 0;
953
+
936
 	if (pci->ioaddr == 0)
954
 	if (pci->ioaddr == 0)
937
 		return 0;
955
 		return 0;
938
 
956
 
939
 	printf("forcedeth.c: Found %s, vendor=0x%hX, device=0x%hX\n",
957
 	printf("forcedeth.c: Found %s, vendor=0x%hX, device=0x%hX\n",
940
-	       pci->name, pci->vendor, pci->dev_id);
958
+	       dev->name, pci->vendor, pci->dev_id);
941
 
959
 
942
 	nic->irqno  = 0;
960
 	nic->irqno  = 0;
943
-	nic->ioaddr = pci->ioaddr & ~3;
961
+	nic->ioaddr = pci->ioaddr;
944
 
962
 
945
 	/* point to private storage */
963
 	/* point to private storage */
946
 	np = &npx;
964
 	np = &npx;
988
 		get_random_bytes(&dev->dev_addr[3], 3);
1006
 		get_random_bytes(&dev->dev_addr[3], 3);
989
 	}
1007
 	}
990
 #endif
1008
 #endif
991
-	printf("%s: MAC Address %!, ", pci->name, nic->node_addr);
1009
+	printf("%s: MAC Address %!, ", dev->name, nic->node_addr);
992
 
1010
 
993
 	np->tx_flags =
1011
 	np->tx_flags =
994
 	    cpu_to_le16(NV_TX_LASTPACKET | NV_TX_LASTPACKET1 |
1012
 	    cpu_to_le16(NV_TX_LASTPACKET | NV_TX_LASTPACKET1 |
1015
 	forcedeth_reset(nic);
1033
 	forcedeth_reset(nic);
1016
 //      if (board_found && valid_link)
1034
 //      if (board_found && valid_link)
1017
 	/* point to NIC specific routines */
1035
 	/* point to NIC specific routines */
1018
-static struct nic_operations forcedeth_operations;
1019
-static struct nic_operations forcedeth_operations = {
1020
-	.connect	= dummy_connect,
1021
-	.poll		= forcedeth_poll,
1022
-	.transmit	= forcedeth_transmit,
1023
-	.irq		= forcedeth_irq,
1024
-	.disable	= forcedeth_disable,
1025
-};	nic->nic_op	= &forcedeth_operations;
1036
+	nic->nic_op	= &forcedeth_operations;
1026
 	return 1;
1037
 	return 1;
1027
 //      }
1038
 //      }
1028
 	/* else */
1039
 	/* else */
1029
 }
1040
 }
1030
 
1041
 
1031
-static struct pci_id forcedeth_nics[] = {
1032
-	PCI_ROM(0x10de, 0x01C3, "nforce", "nForce Ethernet Controller"),
1033
-	PCI_ROM(0x10de, 0x0066, "nforce2", "nForce2 Ethernet Controller"),
1034
-	PCI_ROM(0x10de, 0x00D6, "nforce3", "nForce3 Ethernet Controller"),
1035
-};
1036
-
1037
-static struct pci_driver forcedeth_driver =
1038
-	PCI_DRIVER ( "forcedeth", forcedeth_nics, PCI_NO_CLASS );
1039
-
1040
 BOOT_DRIVER ( "forcedeth", forcedeth_probe );
1042
 BOOT_DRIVER ( "forcedeth", forcedeth_probe );

+ 35
- 36
src/drivers/net/mtd80x.c Прегледај датотеку

153
     HAS_CHIP_XCVR,
153
     HAS_CHIP_XCVR,
154
 };
154
 };
155
 
155
 
156
+#if 0 /* not used */
156
 static
157
 static
157
 struct chip_info
158
 struct chip_info
158
 {
159
 {
165
                      {0x0891, HAS_MII_XCVR}
166
                      {0x0891, HAS_MII_XCVR}
166
                  };
167
                  };
167
 static int chip_cnt = sizeof( mtd80x_chips ) / sizeof( struct chip_info );
168
 static int chip_cnt = sizeof( mtd80x_chips ) / sizeof( struct chip_info );
169
+#endif
168
 
170
 
169
 /* Offsets to the Command and Status Registers. */
171
 /* Offsets to the Command and Status Registers. */
170
 enum mtd_offsets {
172
 enum mtd_offsets {
437
 static struct mtd_private mtdx;
439
 static struct mtd_private mtdx;
438
 
440
 
439
 static int mdio_read(struct nic * , int phy_id, int location);
441
 static int mdio_read(struct nic * , int phy_id, int location);
440
-static void mdio_write(struct nic * , int phy_id, int location, int value);
441
 static void getlinktype(struct nic * );
442
 static void getlinktype(struct nic * );
442
 static void getlinkstatus(struct nic * );
443
 static void getlinkstatus(struct nic * );
443
 static void set_rx_mode(struct nic *);
444
 static void set_rx_mode(struct nic *);
445
 /**************************************************************************
446
 /**************************************************************************
446
  *  init_ring - setup the tx and rx descriptors
447
  *  init_ring - setup the tx and rx descriptors
447
  *************************************************************************/
448
  *************************************************************************/
448
-static void init_ring(struct nic *nic)
449
+static void init_ring(struct nic *nic __unused)
449
 {
450
 {
450
     int i;
451
     int i;
451
 
452
 
534
 /**************************************************************************
535
 /**************************************************************************
535
 POLL - Wait for a frame
536
 POLL - Wait for a frame
536
 ***************************************************************************/
537
 ***************************************************************************/
537
-static int mtd_poll(struct nic *nic)
538
+static int mtd_poll(struct nic *nic, int retrieve)
538
 {
539
 {
539
     s32 rx_status = mtdx.cur_rx->status;
540
     s32 rx_status = mtdx.cur_rx->status;
540
     int retval = 0;
541
     int retval = 0;
654
     /* Disable Tx Rx*/
655
     /* Disable Tx Rx*/
655
     outl( mtdx.crvalue & (~TxEnable) & (~RxEnable), mtdx.ioaddr + TCRRCR);
656
     outl( mtdx.crvalue & (~TxEnable) & (~RxEnable), mtdx.ioaddr + TCRRCR);
656
     /* Reset the chip to erase previous misconfiguration. */
657
     /* Reset the chip to erase previous misconfiguration. */
657
-    mtd_reset((struct nic *) dev);
658
+    mtd_reset(nic);
658
     DBGPRNT(("DISABLE\n"));
659
     DBGPRNT(("DISABLE\n"));
659
 }
660
 }
660
 
661
 
662
+static struct nic_operations mtd_operations = {
663
+	.connect	= dummy_connect,
664
+	.poll		= mtd_poll,
665
+	.transmit	= mtd_transmit,
666
+	.irq		= dummy_irq,
667
+	.disable	= mtd_disable,
668
+};
669
+
670
+static struct pci_id mtd80x_nics[] = {
671
+        PCI_ROM(0x1516, 0x0800, "MTD800", "Myson MTD800"),
672
+        PCI_ROM(0x1516, 0x0803, "MTD803", "Surecom EP-320X"),
673
+        PCI_ROM(0x1516, 0x0891, "MTD891", "Myson MTD891"),
674
+};
675
+
676
+static struct pci_driver mtd80x_driver =
677
+	PCI_DRIVER ( "MTD80X", mtd80x_nics, PCI_NO_CLASS );
678
+
661
 /**************************************************************************
679
 /**************************************************************************
662
 PROBE - Look for an adapter, this routine's visible to the outside
680
 PROBE - Look for an adapter, this routine's visible to the outside
663
 ***************************************************************************/
681
 ***************************************************************************/
664
 
682
 
665
 static int mtd_probe ( struct dev *dev ) {
683
 static int mtd_probe ( struct dev *dev ) {
666
-
667
     struct nic *nic = nic_device ( dev );
684
     struct nic *nic = nic_device ( dev );
668
-
669
     struct pci_device *pci = pci_device ( dev );
685
     struct pci_device *pci = pci_device ( dev );
670
     int i;
686
     int i;
671
 
687
 
672
-    if (pci->ioaddr == 0)
673
-    {
674
-        return 0;
675
-    }
688
+    if ( ! find_pci_device ( pci, &mtd80x_driver ) )
689
+	    return 0;
676
 
690
 
677
-    printf(" - ");
691
+    if (pci->ioaddr == 0)
692
+	    return 0;
678
 
693
 
679
     /* Mask the bit that says "this is an io addr" */
694
     /* Mask the bit that says "this is an io addr" */
680
-    mtdx.ioaddr = pci->ioaddr & ~3;
681
-
682
-    adjust_pci_device(pci);
695
+    mtdx.ioaddr = pci->ioaddr;
683
 
696
 
684
-    mtdx.nic_name = pci->name;
697
+    mtdx.nic_name = dev->name;
685
     mtdx.dev_id = pci->dev_id;
698
     mtdx.dev_id = pci->dev_id;
686
 
699
 
687
     /* read ethernet id */
700
     /* read ethernet id */
763
     mtd_reset( nic );
776
     mtd_reset( nic );
764
 
777
 
765
     /* point to NIC specific routines */
778
     /* point to NIC specific routines */
766
-static struct nic_operations mtd_operations;
767
-static struct nic_operations mtd_operations = {
768
-	.connect	= dummy_connect,
769
-	.poll		= mtd_poll,
770
-	.transmit	= mtd_transmit,
771
-	.irq		= dummy_irq,
772
-	.disable	= mtd_disable,
773
-};    nic->nic_op	= &mtd_operations;
779
+    nic->nic_op	= &mtd_operations;
774
     return 1;
780
     return 1;
775
 }
781
 }
776
 
782
 
777
-static struct pci_id mtd80x_nics[] =
778
-    {
779
-        PCI_ROM(0x1516, 0x0800, "MTD800", "Myson MTD800"),
780
-        PCI_ROM(0x1516, 0x0803, "MTD803", "Surecom EP-320X"),
781
-        PCI_ROM(0x1516, 0x0891, "MTD891", "Myson MTD891"),
782
-    };
783
 
783
 
784
 /**************************************************************************/
784
 /**************************************************************************/
785
-static void set_rx_mode(struct nic *nic)
785
+static void set_rx_mode(struct nic *nic __unused)
786
 {
786
 {
787
     u32 mc_filter[2];                       /* Multicast hash filter */
787
     u32 mc_filter[2];                       /* Multicast hash filter */
788
     u32 rx_mode;
788
     u32 rx_mode;
884
     return miir;
884
     return miir;
885
 }
885
 }
886
 
886
 
887
-static int mdio_read(struct nic *nic, int phyad, int regad)
887
+static int mdio_read(struct nic *nic __unused, int phyad, int regad)
888
 {
888
 {
889
     long miiport = mtdx.ioaddr + MANAGEMENT;
889
     long miiport = mtdx.ioaddr + MANAGEMENT;
890
     u32 miir;
890
     u32 miir;
922
     return data & 0xffff;
922
     return data & 0xffff;
923
 }
923
 }
924
 
924
 
925
-static void mdio_write(struct nic *nic, int phyad, int regad, int data)
925
+#if 0 /* not used */
926
+static void mdio_write(struct nic *nic __unused, int phyad, int regad,
927
+		       int data)
926
 {
928
 {
927
     long miiport = mtdx.ioaddr + MANAGEMENT;
929
     long miiport = mtdx.ioaddr + MANAGEMENT;
928
     u32 miir;
930
     u32 miir;
954
 
956
 
955
     return;
957
     return;
956
 }
958
 }
959
+#endif
957
 
960
 
958
 static void getlinkstatus(struct nic *nic)
961
 static void getlinkstatus(struct nic *nic)
959
 /* function: Routine will read MII Status Register to get link status.       */
962
 /* function: Routine will read MII Status Register to get link status.       */
1091
     }
1094
     }
1092
 }
1095
 }
1093
 
1096
 
1094
-
1095
-static struct pci_driver mtd80x_driver =
1096
-	PCI_DRIVER ( "MTD80X", mtd80x_nics, PCI_NO_CLASS );
1097
-
1098
 BOOT_DRIVER ( "MTD80X", mtd_probe );
1097
 BOOT_DRIVER ( "MTD80X", mtd_probe );

Loading…
Откажи
Сачувај