Changeset 3630 for trunk

Show
Ignore:
Timestamp:
10/02/08 17:42:14 (7 weeks ago)
Author:
rminnich
Message:

This is so that people can see it. This is the sb600 for v3. It almost
certainly won't build -- that comes later. I am hoping to get some
eyeballs on it for simple errors.

rs690 is next.

Signed-off-by: Ronald G. Minnich <rminnich@…>
Acked-by: Ronald G. Minnich <rminnich@…>

Location:
trunk/coreboot-v2/src/southbridge/amd/sb600
Files:
23 added
2 modified

Legend:

Unmodified
Added
Removed
  • trunk/coreboot-v2/src/southbridge/amd/sb600/sb600.c

    r3589 r3630  
    1818 */ 
    1919 
    20 #include <console/console.h> 
    21  
    22 #include <arch/io.h> 
    23  
    24 #include <device/device.h> 
     20#include <types.h> 
     21#include <lib.h> 
     22#include <console.h> 
    2523#include <device/pci.h> 
     24#include <msr.h> 
     25#include <legacy.h> 
    2626#include <device/pci_ids.h> 
    27 #include <device/pci_ops.h> 
     27#include <statictree.h> 
     28#include <config.h> 
    2829#include "sb600.h" 
    2930 
    30 static device_t find_sm_dev(device_t dev, u32 devfn) 
    31 { 
    32         device_t sm_dev; 
     31static struct device * find_sm_dev(struct device * dev, u32 devfn) 
     32{ 
     33        struct device * sm_dev; 
    3334 
    3435        sm_dev = dev_find_slot(dev->bus->secondary, devfn); 
     
    5051} 
    5152 
    52 void set_sm_enable_bits(device_t sm_dev, u32 reg_pos, u32 mask, u32 val) 
     53void set_sm_enable_bits(struct device * sm_dev, u32 reg_pos, u32 mask, u32 val) 
    5354{ 
    5455        u32 reg_old, reg; 
     
    9798} 
    9899 
    99 static void set_pmio_enable_bits(device_t sm_dev, u32 reg_pos, 
     100static void set_pmio_enable_bits(struct device * sm_dev, u32 reg_pos, 
    100101                                 u32 mask, u32 val) 
    101102{ 
     
    109110} 
    110111 
    111 void sb600_enable(device_t dev) 
    112 { 
    113         device_t sm_dev = 0; 
    114         device_t bus_dev = 0; 
     112void sb600_enable(struct device * dev) 
     113{ 
     114        struct device * sm_dev = 0; 
     115        struct device * bus_dev = 0; 
    115116        int index = -1; 
    116117        u32 deviceid; 
     
    123124        u32 devfn; 
    124125 
    125         printk_debug("sb600_enable()\n"); 
     126        printk(BIOS_DEBUG, "sb600_enable()\n"); 
    126127 
    127128/* 
     
    151152        if ((bus_dev->vendor == PCI_VENDOR_ID_ATI) && 
    152153            (bus_dev->device == PCI_DEVICE_ID_ATI_SB600_PCI)) { 
    153                 devfn = (bus_dev->path.u.pci.devfn) & ~7; 
     154                devfn = (bus_dev->path.pci.devfn) & ~7; 
    154155                sm_dev = find_sm_dev(bus_dev, devfn); 
    155156                if (!sm_dev) 
     
    157158 
    158159                /* something under 00:01.0 */ 
    159                 switch (dev->path.u.pci.devfn) { 
     160                switch (dev->path.pci.devfn) { 
    160161                case 5 << 3: 
    161162                        ; 
     
    165166        } 
    166167 
    167         i = (dev->path.u.pci.devfn) & ~7; 
     168        i = (dev->path.pci.devfn) & ~7; 
    168169        i += (2 << 3); 
    169170        for (devfn = (0x14 << 3); devfn <= i; devfn += (1 << 3)) { 
     
    175176                return; 
    176177 
    177         switch (dev->path.u.pci.devfn - (devfn - (0x14 << 3))) { 
     178        switch (dev->path.pci.devfn - (devfn - (0x14 << 3))) { 
    178179        case (0x12 << 3) | 0: 
    179180                index = 8; 
     
    188189        case (0x13 << 3) | 4: 
    189190        case (0x13 << 3) | 5: 
    190                 index = dev->path.u.pci.devfn & 7; 
     191                index = dev->path.pci.devfn & 7; 
    191192                index++; 
    192193                index %= 6; 
     
    218219        case (0x14 << 3) | 5: 
    219220        case (0x14 << 3) | 6: 
    220                 index = dev->path.u.pci.devfn & 7; 
     221                index = dev->path.pci.devfn & 7; 
    221222                index -= 5; 
    222223                set_pmio_enable_bits(sm_dev, 0x59, 1 << index, 
     
    225226                break; 
    226227        default: 
    227                 printk_debug("unknown dev: %s deviceid=%4x\n", dev_path(dev), 
     228                printk(BIOS_DEBUG, "unknown dev: %s deviceid=%4x\n", dev_path(dev), 
    228229                             deviceid); 
    229230        } 
    230231} 
    231232 
    232 struct chip_operations southbridge_amd_sb600_ops = { 
    233         CHIP_NAME("ATI SB600") 
    234         .enable_dev = sb600_enable, 
     233struct device_operations sb600 = { 
     234        .id = {.type = DEVICE_ID_PCI, 
     235                {.pci = {.vendor = PCI_VENDOR_ID_AMD, 
     236                              .device = xz}}}, 
     237        .constructor             = default_device_constructor, 
     238        .phase3_scan             = 0, 
     239        .phase4_enable_disable           = sb600_enable, 
     240        .phase4_read_resources   = pci_dev_read_resources, 
     241        .phase4_set_resources    = pci_dev_set_resources, 
     242        .phase6_init             = NULL, 
     243        .ops_pci                 = &pci_dev_ops_pci, 
    235244}; 
  • trunk/coreboot-v2/src/southbridge/amd/sb600/sb600.h

    r3589 r3630  
    2121#define SB600_H 
    2222 
    23 #include "chip.h" 
    24  
    2523#define PCI_DEVICE_ID_ATI_SB600_LPC 0x438D 
    2624#define PCI_DEVICE_ID_ATI_SB600_SATA 0x4380 
     
    3735#define PCI_DEVICE_ID_ATI_SB600_USB_3 0x438A 
    3836#define PCI_DEVICE_ID_ATI_SB600_USB_4 0x438B 
     37 
    3938extern void pm_iowrite(u8 reg, u8 value); 
    4039extern u8 pm_ioread(u8 reg);