[U-Boot] AHCI controller not found

Ding, ChiX chix.ding at intel.com
Mon Oct 10 14:42:49 CEST 2016


Hi there
I'm testing U-boot as Coreboot payload on Intel board. It boots into U-boot shell but fails to detect AHCI controller.
SCSI:  Error: SCSI Controller(s) 8086:19B2 8086:19C2 not found

AHCI SCSI devices are defined in coreboot.h,
#define CONFIG_SCSI_AHCI
#define CONFIG_SCSI_DEV_LIST            {PCI_VENDOR_ID_INTEL, \
                        0x19b2},              \
        {PCI_VENDOR_ID_INTEL,           \
                        0x19c2}

I debug into scsi_init(void). It goes through a loop to try to find PCI device for  the AHCI controllers defined above in coreboot.h .
I tried the new code "enable driver mode for PCI" and the old code using pci_find_device() function, but both fail to find the devices.

#ifdef CONFIG_DM_PCI
                struct udevice *dev;
                int ret;

                ret = dm_pci_find_device(scsi_device_list[i].vendor,
                                         scsi_device_list[i].device, 0, &dev);
                if (!ret) {
                        busdevfunc = dm_pci_get_bdf(dev);
                        break;
                }
#else
                busdevfunc = pci_find_device(scsi_device_list[i].vendor,
                                             scsi_device_list[i].device,
                                             0);
#endif


My device tree file below is a barebone which only defines serial port, keyboard, timer. They work fine.
I wonder that in order to find AHCI controller, shall I add some definition for PCI device into the device tree file?
What's the minimum definition shall I add?

/include/ "skeleton.dtsi"
/include/ "keyboard.dtsi"
/include/ "serial.dtsi"
/include/ "rtc.dtsi"
/include/ "tsc_timer.dtsi"

/ {
        #address-cells = <1>;
        #size-cells = <1>;
        model = "Google Alex";
        compatible = "google,alex", "intel,atom-pineview";

        config {
               silent_console = <0>;
        };

        gpio: gpio {};

        serial {
                reg = <0x1000 8>;
                clock-frequency = <115200>;
        };

        tsc-timer {
                clock-frequency = <1000000000>;
        };

        chosen {
                stdout-path = "/serial";
        };

        memory { device_type = "memory"; reg = <0 0>; };

};


Thanks a lot,
Chi
--------------------------------------------------------------
Intel Research and Development Ireland Limited
Registered in Ireland
Registered Office: Collinstown Industrial Park, Leixlip, County Kildare
Registered Number: 308263


This e-mail and any attachments may contain confidential material for the sole
use of the intended recipient(s). Any review or distribution by others is
strictly prohibited. If you are not the intended recipient, please contact the
sender and delete all copies.


More information about the U-Boot mailing list