aboutsummaryrefslogtreecommitdiff
path: root/src/mainboard/tyan/s2880/mainboard.c
blob: c4f7cf801555d8630eec43e0158cd5d4ef3e9a47 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
#include <console/console.h>
#include <device/device.h>
#include <device/pci.h>
#include <device/pci_ids.h>
#include <device/pci_ops.h>
#include <part/mainboard.h>
//#include "lsi_scsi.c"
unsigned long initial_apicid[MAX_CPUS] =
{
	0,1
};
/*
static void fixup_lsi_53c1030(struct device *pdev)
{
//	uint8_t byte;
	uint16_t word;

	byte = 1;
        pci_write_config8(pdev, 0xff, byte);
           // Set the device id 
//      pci_write_config_word(pdev, PCI_DEVICE_ID, PCI_DEVICE_ID_LSILOGIC_53C1030);
           // Set the subsytem vendor id 
//      pci_write_config16(pdev, PCI_SUBSYSTEM_VENDOR_ID, PCI_VENDOR_ID_TYAN);  
        word = 0x10f1;
	pci_write_config16(pdev, PCI_SUBSYSTEM_VENDOR_ID, word);
            // Set the subsytem id 
	word = 0x2880;
        pci_write_config16(pdev, PCI_SUBSYSTEM_ID, word);
            // Disable writes to the device id 
	byte = 0;
        pci_write_config8(pdev, 0xff, byte);

//	lsi_scsi_init(pdev);
	
}
//extern static void lsi_scsi_init(struct device *dev);
static void print_pci_regs(struct device *dev)
{
      uint8_t byte;
      int i;

      for(i=0;i<256;i++) {
	     byte = pci_read_config8(dev, i);
   
             if((i%16)==0) printk_info("\n %02x:",i);
             printk_debug(" %02x ",byte);
      }
      printk_debug("\r\n");
	
//        pci_write_config8(dev, 0x4, byte);

}
*/
static void onboard_scsi_fixup(void)
{
       struct device *dev;
/*
       // Set the scsi device id's 
       printk_debug("%2d:%2d:%2d\n",0,1,0);
	dev = dev_find_slot(0, PCI_DEVFN(0x1, 0));
       if (dev) {
        }
        // Set the scsi device id's 
       printk_debug("%2d:%2d:%2d\n",0,2,0);
        dev = dev_find_slot(0, PCI_DEVFN(0x2, 0));
        if (dev) {
		print_pci_regs(dev);
        }
 
      // Set the scsi device id's
       printk_debug("%2d:%2d:%2d\n",1,0xa,0);
       dev = dev_find_slot(1, PCI_DEVFN(0xa, 0));
       if (dev) {
                print_pci_regs(dev);
        }
        // Set the scsi device id's
       printk_debug("%2d:%2d:%2d\n",1,0xa,1);
        dev = dev_find_slot(1, PCI_DEVFN(0xa, 1));
        if (dev) {
                print_pci_regs(dev);
        }
       printk_debug("%2d:%2d:%2d\n",1,9,0);
       dev = dev_find_slot(1, PCI_DEVFN(0x9, 0));
       if (dev) {
                print_pci_regs(dev);
        }
        // Set the scsi device id's
       printk_debug("%2d:%2d:%2d\n",1,9,1);
        dev = dev_find_slot(1, PCI_DEVFN(0x9, 1));
        if (dev) {
                print_pci_regs(dev);
        }
*/

/*
        dev = dev_find_device(PCI_VENDOR_ID_LSI_LOGIC, PCI_DEVICE_ID_LSI_53C1030,0);
        if(!dev) {
                printk_info("LSI_SCSI_FW_FIXUP: No Device Found!");
                return;
        }

	lsi_scsi_init(dev); 
*/
}
 
void mainboard_fixup(void)
{
	printk_debug("Enter mainboard_fixup\r\n");
//      onboard_device_fixup
        onboard_scsi_fixup();
	printk_debug("mainboard fixup done\r\n");

}
void final_mainboard_fixup(void)
{
#if 0
        enable_ide_devices();
#endif
}