Subversion Repositories Kolibri OS

Rev

Rev 1633 | Rev 2187 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 1633 Rev 1867
Line 5... Line 5...
5
#include 
5
#include 
6
 
6
 
Line 7... Line 7...
7
#include "acpi.h"
7
#include "acpi.h"
8
#include "acpi_bus.h"
8
#include "acpi_bus.h"
-
 
9
#include "dmdev.h"
Line 9... Line 10...
9
 
10
 
Line 10... Line 11...
10
#define PREFIX "ACPI: "
11
#define PREFIX "ACPI: "
11
 
12
 
12
#define ACPI_BUS_CLASS          "system_bus"
13
#define ACPI_BUS_CLASS          "system_bus"
Line 13... Line 14...
13
#define ACPI_BUS_HID            "KLBSYBUS"
14
#define ACPI_BUS_HID            "KLBSYBUS"
Line 14... Line 15...
14
#define ACPI_BUS_DEVICE_NAME    "System Bus"
15
#define ACPI_BUS_DEVICE_NAME    "System Bus"
15
 
16
 
-
 
17
 
Line 16... Line 18...
16
 
18
#define ACPI_IS_ROOT_DEVICE(device)    (!(device)->parent)
17
#define ACPI_IS_ROOT_DEVICE(device)    (!(device)->parent)
19
 
18
 
20
LIST_HEAD(acpi_device_list);
Line 63... Line 65...
63
//    (addr_t)((addr_t)(addr) + OS_BASE)
65
//    (addr_t)((addr_t)(addr) + OS_BASE)
64
 
66
 
Line 65... Line 67...
65
#define acpi_remap( addr ) MapIoMem((void*)(addr),4096, 0x01)
67
#define acpi_remap( addr ) MapIoMem((void*)(addr),4096, 0x01)
Line -... Line 68...
-
 
68
 
-
 
69
char* strdup(const char *str);
66
 
70
 
Line 67... Line 71...
67
void print_pci_irqs();
71
void print_pci_irqs();
Line 77... Line 81...
77
    IO_PIC  = 0,
81
    IO_PIC  = 0,
78
    IO_APIC
82
    IO_APIC
79
};
83
};
80
 
84
 
Line -... Line 85...
-
 
85
static ACPI_STATUS
-
 
86
resource_to_addr(ACPI_RESOURCE *resource, ACPI_RESOURCE_ADDRESS64 *addr);
-
 
87
 
-
 
88
static void create_dm_list();
-
 
89
 
-
 
90
static void print_dm_list();
-
 
91
 
-
 
92
 
81
static void set_pic_mode(enum pic_mode mode)
93
static void set_pic_mode(enum pic_mode mode)
82
{
94
{
83
    ACPI_OBJECT arg1;
95
    ACPI_OBJECT arg1;
84
    ACPI_OBJECT_LIST args;
96
    ACPI_OBJECT_LIST args;
85
    ACPI_STATUS as;
97
    ACPI_STATUS as;
Line 97... Line 109...
97
    if (ACPI_SUCCESS(as))
109
    if (ACPI_SUCCESS(as))
98
        dbgprintf(PREFIX "machine set to %s mode\n", mode ? "APIC" : "PIC");
110
        dbgprintf(PREFIX "machine set to %s mode\n", mode ? "APIC" : "PIC");
99
}
111
}
100
 
112
 
Line 101... Line -...
101
void print_device_tree(struct acpi_device *device)
-
 
102
{
-
 
103
    struct acpi_device *child;
-
 
Line 104... Line -...
104
 
-
 
Line 105... Line -...
105
    dbgprintf("%s\n", device->pnp.bus_id);
-
 
106
 
-
 
107
    list_for_each_entry(child, &device->children, node)
-
 
108
    {
-
 
109
        print_device_tree(child);
-
 
Line 110... Line 113...
110
    };
113
 
Line 647... Line 650...
647
    set_pic_mode(IO_APIC);
650
    set_pic_mode(IO_APIC);
Line 648... Line 651...
648
 
651
 
Line 649... Line -...
649
    acpi_scan();
-
 
650
 
-
 
651
//    print_device_tree(acpi_root);
652
    acpi_scan();
Line 652... Line 653...
652
 
653
 
Line 653... Line -...
653
    acpi_init_pci(acpi_root);
-
 
654
 
-
 
655
    print_pci_irqs();
-
 
656
 
-
 
657
/*
-
 
658
    ACPI_HANDLE bus_handle;
-
 
659
    ACPI_HANDLE pci_root;
-
 
660
 
-
 
661
    status = AcpiGetHandle(0, "\\_SB_", &bus_handle);
-
 
662
    dbgprintf("system bus handle %x\n", bus_handle);
-
 
663
 
-
 
664
    status = AcpiGetHandle(bus_handle, "PCI0", &pci_root);
654
    acpi_init_pci(acpi_root);
665
    if (status != AE_OK) {
-
 
666
          dbgprintf("AcpiGetHandle failed (%s)\n",
-
 
667
                     AcpiFormatException(status));
-
 
668
          goto err;
-
 
669
    }
-
 
Line 670... Line -...
670
 
-
 
671
    AcpiWalkNamespace(ACPI_TYPE_ANY, ACPI_ROOT_OBJECT, 100,
-
 
672
                      get_device_by_hid_callback, NULL, NULL, NULL);
-
 
673
*/
655
 
Line 674... Line 656...
674
 
656
    print_pci_irqs();
675
#if 0
-
 
676
 
-
 
Line 677... Line -...
677
    AcpiWalkNamespace(ACPI_TYPE_DEVICE, ACPI_ROOT_OBJECT, 4,
-
 
678
                      get_device_by_hid_callback, NULL, NULL, NULL);
657
 
Line 679... Line -...
679
 
-
 
-
 
658
    create_dm_list();
Line 680... Line 659...
680
    ACPI_OBJECT obj;
659
 
-
 
660
    print_dm_list();
681
    ACPI_HANDLE bus_handle;
661
 
682
    ACPI_HANDLE pci_root;
662
err:
683
 
663
 
-
 
664
    return 0;
-
 
665
 
684
    status = AcpiGetHandle(0, "\\_SB_", &bus_handle);
666
};
685
    dbgprintf("system bus handle %x\n", bus_handle);
-
 
686
 
-
 
687
    status = AcpiGetHandle(bus_handle, "PCI0", &pci_root);
-
 
688
 
-
 
689
    if (status != AE_OK) {
-
 
690
        dbgprintf("AcpiGetHandle failed (%s)\n",
-
 
691
            AcpiFormatException(status));
-
 
692
        goto err;
-
 
693
    }
-
 
694
 
-
 
695
    dbgprintf("pci root handle %x\n\n", pci_root);
-
 
696
 
-
 
697
    ACPI_BUFFER prt_buffer;
-
 
698
 
667
 
699
    prt_buffer.Length = ACPI_ALLOCATE_BUFFER;
668
char* strdup(const char *str)
Line 700... Line -...
700
    prt_buffer.Pointer = NULL;
-
 
Line -... Line 669...
-
 
669
{
-
 
670
    size_t len = strlen (str) + 1;
-
 
671
    char *copy = malloc(len);
-
 
672
    if (copy)
-
 
673
    {
Line 701... Line -...
701
 
-
 
702
    status = AcpiGetIrqRoutingTable(pci_root, &prt_buffer);
-
 
703
 
-
 
704
    if (status != AE_OK) {
674
        memcpy (copy, str, len);
Line -... Line 675...
-
 
675
    }
-
 
676
    return copy;
-
 
677
}
-
 
678
 
705
        dbgprintf("AcpiGetIrqRoutingTable failed (%s)\n",
679
 
Line -... Line 680...
-
 
680
static void dm_add_pci_bus(struct pci_bus *bus)
-
 
681
{
706
            AcpiFormatException(status));
682
    struct pci_bus *tbus;
Line 707... Line 683...
707
        goto err;
683
    struct pci_dev *dev;
708
    }
684
    dmdev_t        *dmdev;
709
 
685
 
710
    prt_walk_table(&prt_buffer);
686
    dmdev = (dmdev_t*)kzalloc(sizeof(dmdev_t),GFP_KERNEL);
-
 
687
 
711
 
688
//    INIT_LIST_HEAD(&dmdev->list);
Line -... Line 689...
-
 
689
//    dmdev->type = 1;
-
 
690
//    dmdev->acpi_dev = bus->self->acpi_dev;
-
 
691
//    dmdev->pci_dev = bus->self;
-
 
692
//    list_add_tail(&dmdev->list, &dmdev_tree);
Line 712... Line -...
712
 
-
 
-
 
693
 
Line 713... Line 694...
713
    ACPI_OBJECT arg = { ACPI_TYPE_INTEGER };
694
    list_for_each_entry(dev, &bus->devices, bus_list)
714
    ACPI_OBJECT_LIST arg_list = { 1, &arg };
695
    {
-
 
696
        dmdev = (dmdev_t*)kzalloc(sizeof(dmdev_t),GFP_KERNEL);
715
 
697
 
716
    arg.Integer.Value = ACPI_IRQ_MODEL_IOAPIC;
698
        INIT_LIST_HEAD(&dmdev->list);
717
 
699
        dmdev->type = 1;
Line 718... Line -...
718
    dbgprintf("\nset ioapic mode\n\n");
-
 
719
 
-
 
720
    status = AcpiEvaluateObject(NULL, "\\_PIC", &arg_list, NULL);
-
 
721
 
-
 
722
    if (ACPI_FAILURE(status)) {
-
 
723
        dbgprintf("AcpiEvaluateObject failed (%s)\n",
-
 
724
            AcpiFormatException(status));
-
 
725
 //       goto err;
-
 
726
    }
-
 
727
 
-
 
728
 
-
 
729
    status = AcpiGetIrqRoutingTable(pci_root, &prt_buffer);
-
 
730
 
-
 
731
    if (status != AE_OK) {
-
 
732
        dbgprintf("AcpiGetIrqRoutingTable failed (%s)\n",
-
 
733
            AcpiFormatException(status));
-
 
734
        goto err;
-
 
735
    }
-
 
736
 
-
 
737
    prt_walk_table(&prt_buffer);
-
 
738
 
-
 
739
    u8_t pin = PciRead8 (0, (31<<3) | 1, 0x3D);
-
 
740
    dbgprintf("bus 0 device 31 function 1 pin %d\n", pin-1);
-
 
741
 
-
 
742
    pin = PciRead8 (0, (31<<3) | 2, 0x3D);
-
 
743
    dbgprintf("bus 0 device 31 function 2 pin %d\n", pin-1);
-
 
744
 
-
 
745
    pin = PciRead8 (0, (31<<3) | 3, 0x3D);
-
 
746
    dbgprintf("bus 0 device 31 function 3 pin %d\n", pin-1);
-
 
Line 747... Line -...
747
 
-
 
748
    pin = PciRead8 (0, (31<<3) | 4, 0x3D);
-
 
749
    dbgprintf("bus 0 device 31 function 4 pin %d\n", pin-1);
-
 
750
 
700
        dmdev->acpi_dev = dev->acpi_dev;
751
    pin = PciRead8 (0, (31<<3) | 5, 0x3D);
-
 
752
    dbgprintf("bus 0 device 31 function 5 pin %d\n", pin-1);
701
        dmdev->pci_dev = dev;
753
 
702
        list_add_tail(&dmdev->list, &dmdev_tree);
754
    pin = PciRead8 (0, (31<<3) | 6, 0x3D);
703
    };
755
    dbgprintf("bus 0 device 31 function 6 pin %d\n", pin-1);
-
 
756
 
704
 
Line 757... Line 705...
757
    pin = PciRead8 (0, (31<<3) | 7, 0x3D);
705
    list_for_each_entry(tbus, &bus->children, node)
758
    dbgprintf("bus 0 device 31 function 7 pin %d\n", pin-1);
-
 
759
#endif
706
    {
760
 
-
 
761
err:
-
 
Line 762... Line -...
762
 
-
 
763
    return 0;
-
 
764
 
-
 
765
};
707
        dm_add_pci_bus(tbus);
766
 
-
 
767
#if 0
-
 
768
 
-
 
Line -... Line 708...
-
 
708
    };
-
 
709
 
-
 
710
};
-
 
711
 
769
ACPI_STATUS
712
static ACPI_STATUS
-
 
713
count_dev_resources(ACPI_RESOURCE *acpi_res, void *data)
-
 
714
{
-
 
715
    (*(int*)data)++;
Line 770... Line 716...
770
get_device_by_hid_callback(ACPI_HANDLE obj, u32_t depth, void* context,
716
    return AE_OK;
Line -... Line 717...
-
 
717
}
-
 
718
 
-
 
719
 
771
    void** retval)
720
static void dm_add_acpi(struct acpi_device *device)
Line 772... Line 721...
772
{
721
{
773
    static u32_t counter = 0;
722
    struct acpi_device *child;
774
    static char buff[256];
-
 
775
 
723
    ACPI_DEVICE_INFO *info = NULL;
Line -... Line 724...
-
 
724
    ACPI_STATUS status;
-
 
725
 
-
 
726
    dmdev_t  *dmdev;
-
 
727
    uint32_t  res_num = 0;
-
 
728
 
-
 
729
    status = AcpiGetObjectInfo(device->handle, &info);
-
 
730
 
-
 
731
    if ( (status == AE_OK) && (info->Valid & ACPI_VALID_HID))
-
 
732
    {
-
 
733
        if( strcmp(info->HardwareId.String,"PNP0C0F") == 0)
-
 
734
        {
776
    ACPI_STATUS status;
735
            kfree(info);
Line 777... Line -...
777
 
-
 
778
    ACPI_BUFFER buffer;
-
 
779
 
-
 
780
    ACPI_DEVICE_INFO *info;
-
 
781
 
-
 
782
   // *retval = NULL;
-
 
783
 
736
            return;
784
    buffer.Length = 255;
737
        };
785
    buffer.Pointer = buff;
738
    };
786
 
-
 
Line 787... Line -...
787
    status = AcpiGetName(obj, ACPI_FULL_PATHNAME, &buffer);
-
 
788
    if (status != AE_OK) {
-
 
789
        return AE_CTRL_TERMINATE;
-
 
Line 790... Line 739...
790
    }
739
 
791
 
-
 
792
    buff[buffer.Length] = '\0';
-
 
793
 
-
 
794
    dbgprintf("device %d %s ", counter, buff);
740
    kfree(info);
-
 
741
 
-
 
742
    if(device->pci_dev == NULL)
Line 795... Line -...
795
 
-
 
796
    status = AcpiGetObjectInfo(obj, &info);
-
 
797
 
-
 
798
    if (ACPI_SUCCESS (status))
743
    {
799
    {
-
 
800
        if (info->Valid & ACPI_VALID_HID)
-
 
Line 801... Line 744...
801
            dbgprintf (" HID: %s", info->HardwareId.String);
744
        AcpiWalkResources(device->handle, METHOD_NAME__CRS,
802
 
-
 
803
    };
-
 
804
 
745
                          count_dev_resources, &res_num);
805
    dbgprintf("\n");
-
 
Line -... Line 746...
-
 
746
 
-
 
747
        if(res_num != 0)
Line 806... Line 748...
806
    counter++;
748
        {
807
 
749
            dmdev = (dmdev_t*)kzalloc(sizeof(dmdev_t),GFP_KERNEL);
808
    return AE_OK;
-
 
809
}
-
 
810
 
750
 
811
prt_walk_table(ACPI_BUFFER *prt)
-
 
812
{
-
 
813
    ACPI_PCI_ROUTING_TABLE *entry;
-
 
814
    char *prtptr;
751
            INIT_LIST_HEAD(&dmdev->list);
-
 
752
            dmdev->type = 0;
-
 
753
            dmdev->acpi_dev = device;
-
 
754
            dmdev->pci_dev = NULL;
-
 
755
            list_add_tail(&dmdev->list, &dmdev_tree);
815
 
756
        };
-
 
757
    };
-
 
758
    list_for_each_entry(child, &device->children, node)
Line -... Line 759...
-
 
759
    {
816
    /* First check to see if there is a table to walk. */
760
        dm_add_acpi(child);
817
    if (prt == NULL || prt->Pointer == NULL)
761
    };
818
        return;
762
};
-
 
763
 
-
 
764
static void create_dm_list()
Line 819... Line 765...
819
 
765
{
820
    /* Walk the table executing the handler function for each entry. */
-
 
821
    prtptr = prt->Pointer;
-
 
822
    entry = (ACPI_PCI_ROUTING_TABLE *)prtptr;
-
 
823
    while (entry->Length != 0)
766
    struct acpi_pci_root *root;
824
    {
767
 
825
 
-
 
826
        dbgprintf("adress: %x %x  ", (u32_t)(entry->Address>>32),
-
 
827
                  (u32_t)entry->Address);
-
 
828
        dbgprintf("pin: %d  index: %d  source: %s\n",
-
 
829
                   entry->Pin,
-
 
830
                   entry->SourceIndex,
-
 
831
                   entry->Source);
-
 
832
 
-
 
833
//      handler(entry, arg);
-
 
834
        prtptr += entry->Length;
-
 
835
        entry = (ACPI_PCI_ROUTING_TABLE *)prtptr;
-
 
836
    }
768
 
-
 
769
    list_for_each_entry(root, &acpi_pci_roots, node)
837
}
770
    {
838
 
771
        struct pci_bus *pbus, *tbus;
839
 
772
        struct pci_dev *dev;
Line 840... Line 773...
840
static void add_irq(unsigned dev, unsigned pin, u8_t irq)
773
 
-
 
774
        pbus = root->bus;
-
 
775
 
-
 
776
        dm_add_pci_bus(pbus);
-
 
777
    };
841
{
778
 
Line 842... Line 779...
842
//    assert(dev < PCI_MAX_DEVICES && pin < PCI_MAX_PINS);
779
    dm_add_acpi(acpi_root);
-
 
780
};
-
 
781
 
843
 
782
static void print_pci_resource(struct resource *res)
844
    irqtable[dev * PCI_MAX_PINS + pin] = irq;
783
{
-
 
784
    if(res->flags !=0 )
-
 
785
    {
-
 
786
        if(res->flags & IORESOURCE_IO)
-
 
787
            dbgprintf("  IO range ");
-
 
788
        else if(res->flags & IORESOURCE_MEM)
845
}
789
            dbgprintf("  MMIO range ");
-
 
790
        dbgprintf("%x - %x\n", res->start, res->end);
-
 
791
    };
Line 846... Line -...
846
 
-
 
847
static ACPI_STATUS get_irq_resource(ACPI_RESOURCE *res, void *context)
792
};
848
{
-
 
849
    ACPI_PCI_ROUTING_TABLE *tbl = (ACPI_PCI_ROUTING_TABLE *) context;
793
 
850
 
794
static ACPI_STATUS
Line 851... Line 795...
851
    if (res->Type == ACPI_RESOURCE_TYPE_IRQ)
795
print_acpi_resource(ACPI_RESOURCE *acpi_res, void *data)
852
    {
796
{
853
        ACPI_RESOURCE_IRQ *irq;
-
 
854
 
797
    ACPI_RESOURCE_ADDRESS64 addr;
-
 
798
    ACPI_STATUS status;
Line 855... Line -...
855
        irq = &res->Data.Irq;
-
 
856
        add_irq(tbl->Address >> 16, tbl->Pin,
799
    int i;
857
                irq->Interrupts[tbl->SourceIndex]);
-
 
858
    } else if (res->Type == ACPI_RESOURCE_TYPE_EXTENDED_IRQ)
-
 
859
    {
800
 
860
        ACPI_RESOURCE_EXTENDED_IRQ *irq;
801
    switch (acpi_res->Type)
861
 
802
    {
862
        add_irq(tbl->Address >> 16, tbl->Pin,
-
 
863
                irq->Interrupts[tbl->SourceIndex]);
803
        case ACPI_RESOURCE_TYPE_IRQ:
864
    }
-
 
865
 
804
        {
866
    return AE_OK;
805
            ACPI_RESOURCE_IRQ *irq_data = (ACPI_RESOURCE_IRQ*)&acpi_res->Data;
Line -... Line 806...
-
 
806
            dbgprintf(" IRQ %d\n", irq_data->Interrupts[0]);
-
 
807
        };
-
 
808
        break;
867
}
809
 
-
 
810
        case ACPI_RESOURCE_TYPE_EXTENDED_IRQ:
-
 
811
        {
-
 
812
            ACPI_RESOURCE_EXTENDED_IRQ *irq_data = (ACPI_RESOURCE_EXTENDED_IRQ*)&acpi_res->Data;
-
 
813
            dbgprintf(" IRQ %d\n", irq_data->Interrupts[0]);
868
 
814
        };
-
 
815
        break;
Line 869... Line -...
869
char buff[4096];
-
 
870
 
816
 
871
static ACPI_STATUS get_pci_irq_routing(ACPI_HANDLE handle)
817
        case ACPI_RESOURCE_TYPE_DMA:
872
{
818
        {
873
    ACPI_STATUS status;
819
            ACPI_RESOURCE_DMA *dma_data = (ACPI_RESOURCE_DMA*) &acpi_res->Data;
874
    ACPI_BUFFER abuff;
820
            for(i=0; i < dma_data->ChannelCount; i++)
875
    ACPI_PCI_ROUTING_TABLE *tbl;
821
            {
Line -... Line 822...
-
 
822
                dbgprintf(" DMA %s channel %d\n",
-
 
823
                          dma_data->Type == ACPI_TYPE_A ? "Type A":
876
 
824
                          dma_data->Type == ACPI_TYPE_B ? "Type B" :
877
    abuff.Length = sizeof(buff);
825
                          dma_data->Type == ACPI_TYPE_F ? "Type F" : "",
878
    abuff.Pointer = buff;
826
                          dma_data->Channels[i]);
879
 
827
            }
-
 
828
        };
-
 
829
        break;
-
 
830
 
Line 880... Line -...
880
    status = AcpiGetIrqRoutingTable(handle, &abuff);
-
 
881
    if (ACPI_FAILURE(status)) {
831
        case ACPI_RESOURCE_TYPE_IO:
-
 
832
        {
Line 882... Line -...
882
        return AE_OK;
-
 
883
    }
-
 
Line 884... Line -...
884
 
-
 
885
    for (tbl = (ACPI_PCI_ROUTING_TABLE *)abuff.Pointer; tbl->Length;
-
 
886
            tbl = (ACPI_PCI_ROUTING_TABLE *)
-
 
887
            ((char *)tbl + tbl->Length))
833
            ACPI_RESOURCE_IO *io_data = (ACPI_RESOURCE_IO*) &acpi_res->Data;
888
    {
834
 
889
        ACPI_HANDLE src_handle;
835
            dbgprintf(" IO range 0%x-0%x\n",io_data->Minimum,
890
 
836
                       io_data->Minimum+io_data->AddressLength-1);
891
        if (*(char*)tbl->Source == '\0') {
837
        }
-
 
838
        break;
Line 892... Line 839...
892
            add_irq(tbl->Address >> 16, tbl->Pin, tbl->SourceIndex);
839
 
893
            continue;
-
 
Line 894... Line 840...
894
        }
840
        case ACPI_RESOURCE_TYPE_FIXED_IO:
895
 
841
        {
896
        status = AcpiGetHandle(handle, tbl->Source, &src_handle);
842
            ACPI_RESOURCE_FIXED_IO *io_data = (ACPI_RESOURCE_FIXED_IO*) &acpi_res->Data;
897
        if (ACPI_FAILURE(status)) {
843
            dbgprintf(" Fixed IO range 0%x-0%x\n",io_data->Address,
898
            printf("Failed AcpiGetHandle\n");
844
                       io_data->Address+io_data->AddressLength-1);
899
            continue;
845
        };
900
        }
846
        break;
901
        status = AcpiWalkResources(src_handle, METHOD_NAME__CRS,
847
 
902
                get_irq_resource, tbl);
848
        case ACPI_RESOURCE_TYPE_MEMORY24:
-
 
849
        case ACPI_RESOURCE_TYPE_MEMORY32:
-
 
850
        case ACPI_RESOURCE_TYPE_FIXED_MEMORY32:
903
        if (ACPI_FAILURE(status)) {
851
        {
904
            printf("Failed IRQ resource\n");
852
            ACPI_RESOURCE_ADDRESS64 addr64;
Line -... Line 853...
-
 
853
            resource_to_addr(acpi_res, &addr64);
905
            continue;
854
            dbgprintf(" Memory range 0%x-0%x\n",
-
 
855
                       (uint32_t)addr64.Minimum, (uint32_t)addr64.Maximum);
-
 
856
        }
-
 
857
        break;
-
 
858
 
-
 
859
        case ACPI_RESOURCE_TYPE_ADDRESS16:
Line 906... Line 860...
906
        }
860
        case ACPI_RESOURCE_TYPE_ADDRESS32:
907
    }
861
        case ACPI_RESOURCE_TYPE_ADDRESS64:
908
 
-
 
909
    return AE_OK;
-
 
Line -... Line 862...
-
 
862
        {
-
 
863
            ACPI_RESOURCE_ADDRESS64 addr64;
-
 
864
            ACPI_STATUS status;
-
 
865
 
-
 
866
            status = AcpiResourceToAddress64(acpi_res, &addr64);
910
}
867
            if (ACPI_SUCCESS(status))
-
 
868
            {
Line 911... Line -...
911
 
-
 
912
static ACPI_STATUS add_pci_root_dev(ACPI_HANDLE handle,
-
 
913
                UINT32 level,
-
 
914
                void *context,
-
 
915
                void **retval)
-
 
916
{
-
 
917
    int i;
-
 
918
    static unsigned called;
-
 
919
 
-
 
920
    if (++called > 1) {
-