<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:x="urn:schemas-microsoft-com:office:excel" xmlns:p="urn:schemas-microsoft-com:office:powerpoint" xmlns:a="urn:schemas-microsoft-com:office:access" xmlns:dt="uuid:C2F41010-65B3-11d1-A29F-00AA00C14882" xmlns:s="uuid:BDC6E3F0-6DA3-11d1-A2A3-00AA00C14882" xmlns:rs="urn:schemas-microsoft-com:rowset" xmlns:z="#RowsetSchema" xmlns:b="urn:schemas-microsoft-com:office:publisher" xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet" xmlns:c="urn:schemas-microsoft-com:office:component:spreadsheet" xmlns:odc="urn:schemas-microsoft-com:office:odc" xmlns:oa="urn:schemas-microsoft-com:office:activation" xmlns:html="http://www.w3.org/TR/REC-html40" xmlns:q="http://schemas.xmlsoap.org/soap/envelope/" xmlns:rtc="http://microsoft.com/officenet/conferencing" xmlns:D="DAV:" xmlns:Repl="http://schemas.microsoft.com/repl/" xmlns:mt="http://schemas.microsoft.com/sharepoint/soap/meetings/" xmlns:x2="http://schemas.microsoft.com/office/excel/2003/xml" xmlns:ppda="http://www.passport.com/NameSpace.xsd" xmlns:ois="http://schemas.microsoft.com/sharepoint/soap/ois/" xmlns:dir="http://schemas.microsoft.com/sharepoint/soap/directory/" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:dsp="http://schemas.microsoft.com/sharepoint/dsp" xmlns:udc="http://schemas.microsoft.com/data/udc" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:sub="http://schemas.microsoft.com/sharepoint/soap/2002/1/alerts/" xmlns:ec="http://www.w3.org/2001/04/xmlenc#" xmlns:sp="http://schemas.microsoft.com/sharepoint/" xmlns:sps="http://schemas.microsoft.com/sharepoint/soap/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:udcs="http://schemas.microsoft.com/data/udc/soap" xmlns:udcxf="http://schemas.microsoft.com/data/udc/xmlfile" xmlns:udcp2p="http://schemas.microsoft.com/data/udc/parttopart" xmlns:wf="http://schemas.microsoft.com/sharepoint/soap/workflow/" xmlns:dsss="http://schemas.microsoft.com/office/2006/digsig-setup" xmlns:dssi="http://schemas.microsoft.com/office/2006/digsig" xmlns:mdssi="http://schemas.openxmlformats.org/package/2006/digital-signature" xmlns:mver="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns:mrels="http://schemas.openxmlformats.org/package/2006/relationships" xmlns:spwp="http://microsoft.com/sharepoint/webpartpages" xmlns:ex12t="http://schemas.microsoft.com/exchange/services/2006/types" xmlns:ex12m="http://schemas.microsoft.com/exchange/services/2006/messages" xmlns:pptsl="http://schemas.microsoft.com/sharepoint/soap/SlideLibrary/" xmlns:spsl="http://microsoft.com/webservices/SharePointPortalServer/PublishedLinksService" xmlns:Z="urn:schemas-microsoft-com:" xmlns:st="" xmlns="http://www.w3.org/TR/REC-html40"><head><meta http-equiv=Content-Type content="text/html; charset=us-ascii"><meta name=Generator content="Microsoft Word 12 (filtered medium)"><style><!--
/* Font Definitions */
@font-face
        {font-family:PMingLiU;
        panose-1:2 2 5 0 0 0 0 0 0 0;}
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
        {font-family:PMingLiU;
        panose-1:2 2 5 0 0 0 0 0 0 0;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0cm;
        margin-bottom:.0001pt;
        font-size:12.0pt;
        font-family:"Calibri","sans-serif";}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
span.EmailStyle17
        {mso-style-type:personal;
        font-family:"Calibri","sans-serif";
        color:windowtext;}
span.EmailStyle18
        {mso-style-type:personal-reply;
        font-family:"Calibri","sans-serif";
        color:#1F497D;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-size:10.0pt;}
@page WordSection1
        {size:612.0pt 792.0pt;
        margin:72.0pt 90.0pt 72.0pt 90.0pt;}
div.WordSection1
        {page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]--></head><body lang=ZH-TW link=blue vlink=purple style='text-justify-trim:punctuation'><div class=WordSection1><p class=MsoNormal><span lang=EN-US>Hi,<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US>I add one config ‘IDE_TO_AHCI’ in ‘seabios\src\Kconfig’ and modify ‘seabios\src\ata.c’. Please help me to review and check-in.<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US>This ‘IDE_TO_AHCI’ function can let SeaBIOS handle AHCI controller as IDE controller when ‘ATA’ enable, and also let Windows OS to load AHCI inbox driver or chipset vender’s AHCI driver. In other words, it means that SATA Hard Disk ran as IDE mode in SeaBIOS but AHCI mode in Windows OS.<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US>Best regards,<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>Alex<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US style='color:red'>In ‘seabios\src\Kconfig’:<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>menu "Hardware support"<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>    config ATA<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>        depends on DRIVES<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>        bool "ATA controllers"<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>        default y<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>        help<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>            Support for IDE disk code.<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>   config ATA_DMA<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>        depends on ATA<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>        bool "ATA DMA"<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>        default n<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>        help<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>            Detect and try to use ATA bus mastering DMA controllers.<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>    config ATA_PIO32<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>        depends on ATA<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>        bool "ATA 32bit PIO"<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>        default n<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>        help<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>            Use 32bit PIO accesses on ATA (minor optimization on PCI transfers).<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US style='color:red'>    config IDE_TO_AHCI                                                                     <- New add.<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US style='color:red'>        depends on ATA                                                                         <- New add.<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US style='color:red'>        bool "IDE to AHCI support"                                                     <- New add.<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US style='color:red'>        default n                                                                                      <- New add.<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US style='color:red'>        help                                                                                               <- New add.<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US style='color:red'>            Handle AHCI controller as ATA controller when POST.  <- New add.<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>    config AHCI<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>        depends on DRIVES<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>        bool "AHCI controllers"<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>        default n<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>        help<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>            Support for AHCI disk code.<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US style='color:red'>In ‘seabios\src\ata.c’:<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>static void<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>ata_init(void)<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>{<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>    // Scan PCI bus for ATA adapters<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>    int count=0, pcicount=0;<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>    int bdf, max;<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>    foreachpci(bdf, max) {<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>        pcicount++;<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>        if (pci_config_readw(bdf, PCI_CLASS_DEVICE) != PCI_CLASS_STORAGE_IDE)<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US style='color:red'>                        if ((! CONFIG_IDE_TO_AHCI) || (pci_config_readw(bdf, PCI_CLASS_DEVICE) != 0x0106))  <- New add.<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>                                continue;<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US>        u8 pciirq = pci_config_readb(bdf, PCI_INTERRUPT_LINE);<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>        u8 prog_if = pci_config_readb(bdf, PCI_CLASS_PROG);<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US style='color:red'>                if (CONFIG_IDE_TO_AHCI && (pci_config_readw(bdf, PCI_CLASS_DEVICE) == 0x0106))            <- New add.<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US style='color:red'>                        prog_if = 0x8F;                                                                                                                                </span><span lang=EN-US style='color:#1F497D'>     </span><span lang=EN-US style='color:red'><- New add.<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>        int master = 0;<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p></div></body></html>