x86: ivybridge: Use the SATA driver to do the init
Instead of manually initing the device, probe the SATA device and move the init there. Signed-off-by: Simon Glass <sjg@chromium.org> Reviewed-by: Bin Meng <bmeng.cn@gmail.com>
This commit is contained in:
parent
82935b751b
commit
01a679084b
@ -22,7 +22,7 @@ static int bd82x6x_probe(struct udevice *dev)
|
|||||||
{
|
{
|
||||||
const void *blob = gd->fdt_blob;
|
const void *blob = gd->fdt_blob;
|
||||||
struct pci_controller *hose;
|
struct pci_controller *hose;
|
||||||
int sata_node, gma_node;
|
int gma_node;
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
if (!(gd->flags & GD_FLG_RELOC))
|
if (!(gd->flags & GD_FLG_RELOC))
|
||||||
@ -31,13 +31,10 @@ static int bd82x6x_probe(struct udevice *dev)
|
|||||||
hose = pci_bus_to_hose(0);
|
hose = pci_bus_to_hose(0);
|
||||||
lpc_enable(PCH_LPC_DEV);
|
lpc_enable(PCH_LPC_DEV);
|
||||||
lpc_init_extra(hose, PCH_LPC_DEV);
|
lpc_init_extra(hose, PCH_LPC_DEV);
|
||||||
sata_node = fdtdec_next_compatible(blob, 0,
|
|
||||||
COMPAT_INTEL_PANTHERPOINT_AHCI);
|
/* Cause the SATA device to do its init */
|
||||||
if (sata_node < 0) {
|
uclass_first_device(UCLASS_DISK, &dev);
|
||||||
debug("%s: Cannot find SATA node\n", __func__);
|
|
||||||
return -EINVAL;
|
|
||||||
}
|
|
||||||
bd82x6x_sata_init(PCH_SATA_DEV, blob, sata_node);
|
|
||||||
bd82x6x_usb_ehci_init(PCH_EHCI1_DEV);
|
bd82x6x_usb_ehci_init(PCH_EHCI1_DEV);
|
||||||
bd82x6x_usb_ehci_init(PCH_EHCI2_DEV);
|
bd82x6x_usb_ehci_init(PCH_EHCI2_DEV);
|
||||||
|
|
||||||
|
@ -47,7 +47,7 @@ static void common_sata_init(pci_dev_t dev, unsigned int port_map)
|
|||||||
x86_pci_write_config32(dev, 0x94, ((port_map ^ 0x3f) << 24) | 0x183);
|
x86_pci_write_config32(dev, 0x94, ((port_map ^ 0x3f) << 24) | 0x183);
|
||||||
}
|
}
|
||||||
|
|
||||||
void bd82x6x_sata_init(pci_dev_t dev, const void *blob, int node)
|
static void bd82x6x_sata_init(pci_dev_t dev, const void *blob, int node)
|
||||||
{
|
{
|
||||||
unsigned int port_map, speed_support, port_tx;
|
unsigned int port_map, speed_support, port_tx;
|
||||||
struct pci_controller *hose = pci_bus_to_hose(0);
|
struct pci_controller *hose = pci_bus_to_hose(0);
|
||||||
@ -232,6 +232,8 @@ static int bd82x6x_sata_probe(struct udevice *dev)
|
|||||||
{
|
{
|
||||||
if (!(gd->flags & GD_FLG_RELOC))
|
if (!(gd->flags & GD_FLG_RELOC))
|
||||||
bd82x6x_sata_enable(PCH_SATA_DEV, gd->fdt_blob, dev->of_offset);
|
bd82x6x_sata_enable(PCH_SATA_DEV, gd->fdt_blob, dev->of_offset);
|
||||||
|
else
|
||||||
|
bd82x6x_sata_init(PCH_SATA_DEV, gd->fdt_blob, dev->of_offset);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -7,7 +7,6 @@
|
|||||||
#ifndef _ASM_ARCH_BD82X6X_H
|
#ifndef _ASM_ARCH_BD82X6X_H
|
||||||
#define _ASM_ARCH_BD82X6X_H
|
#define _ASM_ARCH_BD82X6X_H
|
||||||
|
|
||||||
void bd82x6x_sata_init(pci_dev_t dev, const void *blob, int node);
|
|
||||||
void bd82x6x_usb_ehci_init(pci_dev_t dev);
|
void bd82x6x_usb_ehci_init(pci_dev_t dev);
|
||||||
void bd82x6x_usb_xhci_init(pci_dev_t dev);
|
void bd82x6x_usb_xhci_init(pci_dev_t dev);
|
||||||
int gma_func0_init(struct udevice *dev, const void *blob, int node);
|
int gma_func0_init(struct udevice *dev, const void *blob, int node);
|
||||||
|
Loading…
Reference in New Issue
Block a user