Set the phy via weak function.
authorZheng Bao <zheng.bao@amd.com>
Thu, 27 Jan 2011 02:19:55 +0000 (02:19 +0000)
committerZheng Bao <Zheng.Bao@amd.com>
Thu, 27 Jan 2011 02:19:55 +0000 (02:19 +0000)
As Rudolf called.

Signed-off-by: Zheng Bao <zheng.bao@amd.com>
Acked-by: Zheng Bao <zheng.bao@amd.com>
git-svn-id: svn://svn.coreboot.org/coreboot/trunk@6300 2b7e53f0-3cfb-0310-b3e9-8179ed1497e1

src/southbridge/amd/sb800/sata.c

index debd44850111b9679017a712d57abd8c5c653a79..5b7d9df4dfc280ad734fab21994620fde48664d0 100644 (file)
@@ -53,15 +53,29 @@ static int sata_drive_detect(int portnum, u16 iobar)
        return 0;
 }
 
-static const u32 sata_phy[][3] = {
-       {0x0056A607, 0x00061400, 0x00061302}, /* port 0 */
-       {0x0056A607, 0x00061400, 0x00061302}, /* port 1 */
-       {0x0056A607, 0x00061402, 0x00064300}, /* port 2 */
-       {0x0056A607, 0x00061402, 0x00064300}, /* port 3 */
-       {0x0056A700, 0x00061502, 0x00064302}, /* port 4 */
-       {0x0056A700, 0x00061502, 0x00064302}  /* port 5 */
-};
+void __attribute__((weak)) sb800_setup_sata_phys(struct device *dev)
+{
+       int i;
+       static const u32 sata_phy[][3] = {
+               {0x0056A607, 0x00061400, 0x00061302}, /* port 0 */
+               {0x0056A607, 0x00061400, 0x00061302}, /* port 1 */
+               {0x0056A607, 0x00061402, 0x00064300}, /* port 2 */
+               {0x0056A607, 0x00061402, 0x00064300}, /* port 3 */
+               {0x0056A700, 0x00061502, 0x00064302}, /* port 4 */
+               {0x0056A700, 0x00061502, 0x00064302}  /* port 5 */
+       };
+       /* RPR8.4 */
+       /* Port 0 - 5 */
+       for (i = 0; i < 6; i++) {
+               pci_write_config16(dev, 0x84, 0x3006 | i << 9);
+               pci_write_config32(dev, 0x94, sata_phy[i][0]); /* Gen 3 */
+               pci_write_config16(dev, 0x84, 0x2006 | i << 9);
+               pci_write_config32(dev, 0x94, sata_phy[i][1]); /* Gen 2 */
+               pci_write_config16(dev, 0x84, 0x1006 | i << 9);
+               pci_write_config32(dev, 0x94, sata_phy[i][2]); /* Gen 1 */
+       }
 
+}
 static void sata_init(struct device *dev)
 {
        u8 byte;
@@ -147,17 +161,7 @@ static void sata_init(struct device *dev)
 
        pci_write_config8(dev, 0x46, 0x20);
 
-       /* RPR8.4 */
-       /* Port 0 - 5 */
-       for (i = 0; i < 6; i++) {
-               pci_write_config16(dev, 0x84, 0x3006 | i << 9);
-               pci_write_config32(dev, 0x94, sata_phy[i][0]); /* Gen 3 */
-               pci_write_config16(dev, 0x84, 0x2006 | i << 9);
-               pci_write_config32(dev, 0x94, sata_phy[i][1]); /* Gen 2 */
-               pci_write_config16(dev, 0x84, 0x1006 | i << 9);
-               pci_write_config32(dev, 0x94, sata_phy[i][2]); /* Gen 1 */
-       }
-
+       sb800_setup_sata_phys(dev);
        /* Enable the I/O, MM, BusMaster access for SATA */
        byte = pci_read_config8(dev, 0x4);
        byte |= 7 << 0;