From 3dc12c1e19181bb9bacebeda706c39cfb57eb326 Mon Sep 17 00:00:00 2001 From: Vladimir Serbinenko Date: Wed, 17 Sep 2014 02:38:51 +0200 Subject: bd82x6x: Consolidate early native USB init Change-Id: I6189930fd3c69c3497e4cf1a78035e6614761b13 Signed-off-by: Vladimir Serbinenko Reviewed-on: http://review.coreboot.org/6923 Tested-by: build bot (Jenkins) Reviewed-by: Ronald G. Minnich --- src/mainboard/lenovo/t530/romstage.c | 56 +++++++++++------------------------- src/mainboard/lenovo/x220/romstage.c | 56 +++++++++++------------------------- src/mainboard/lenovo/x230/romstage.c | 56 +++++++++++------------------------- 3 files changed, 48 insertions(+), 120 deletions(-) (limited to 'src/mainboard/lenovo') diff --git a/src/mainboard/lenovo/t530/romstage.c b/src/mainboard/lenovo/t530/romstage.c index c2f0a4bc79..89a5cb4af8 100644 --- a/src/mainboard/lenovo/t530/romstage.c +++ b/src/mainboard/lenovo/t530/romstage.c @@ -110,45 +110,6 @@ static void rcba_config(void) RCBA32(BUC) = 0; } -static void init_usb(void) -{ - const u32 rcba_dump[64] = { - /* 3500 */ 0x20000f57, 0x20000f57, 0x2000055b, 0x20000f57, - /* 3510 */ 0x20000f57, 0x20000153, 0x20000153, 0x2000055b, - /* 3520 */ 0x20000153, 0x20000f57, 0x20000153, 0x20000153, - /* 3530 */ 0x20000f51, 0x20000f57, 0x00000000, 0x00000000, - /* 3540 */ 0x00000000, 0x00000000, 0x00000000, 0x00000000, - /* 3550 */ 0x00000000, 0x00000000, 0x00000000, 0x00000000, - /* 3560 */ 0x024c8001, 0x000024a3, 0x00040002, 0x01000050, - /* 3570 */ 0x02000772, 0x16000f9f, 0x1800ff4f, 0x0001d630, - /* 3580 */ 0x00000000, 0x00000000, 0x00000000, 0x00000000, - /* 3590 */ 0x00000000, 0x00000000, 0x00000000, 0x00001448, - /* 35a0 */ 0x04000201, 0x00000200, 0x00000000, 0x00000000, - /* 35b0 */ 0x00000000, 0x00000000, 0x00000000, 0x00000000, - /* 35c0 */ 0x00000000, 0x00000000, 0x00000000, 0x00000000, - /* 35d0 */ 0x00000000, 0x00000000, 0x00000000, 0x00000000, - /* 35e0 */ 0x00000000, 0x00000000, 0x00000000, 0x00000000, - /* 35f0 */ 0x00000000, 0x00000000, 0x00000000, 0x00000000, - }; - int i; - /* Activate PMBAR. */ - pci_write_config32(PCI_DEV(0, 0x1f, 0), PMBASE, DEFAULT_PMBASE | 1); - pci_write_config32(PCI_DEV(0, 0x1f, 0), PMBASE + 4, 0); - pci_write_config8(PCI_DEV(0, 0x1f, 0), 0x44 /* ACPI_CNTL */ , 0x80); /* Enable ACPI BAR */ - - /* Unlock registers. */ - outw (inw (DEFAULT_PMBASE | 0x003c) | 2, DEFAULT_PMBASE | 0x003c); - - for (i = 0; i < 64; i++) - write32 (DEFAULT_RCBABASE | (0x3500 + 4 * i), rcba_dump[i]); - - pcie_write_config32 (PCI_DEV (0, 0x14, 0), 0xe4, 0x00000000); - - /* Relock registers. */ - outw (0x0000, DEFAULT_PMBASE | 0x003c); -} - - void main(unsigned long bist) { int s3resume = 0; @@ -184,7 +145,22 @@ void main(unsigned long bist) outl(0x00000fff, DEFAULT_GPIOBASE + GP_IO_SEL3); outl(0x00000f4f, DEFAULT_GPIOBASE + GP_LVL3); - init_usb(); + early_usb_init((struct southbridge_usb_port []) { + { 1, 1, 0 }, + { 1, 1, 1 }, + { 1, 2, 3 }, + { 1, 1, -1 }, + { 1, 1, -1 }, + { 1, 0, -1 }, + { 0, 0, -1 }, + { 1, 2, -1 }, + { 1, 0, -1 }, + { 1, 1, 5 }, + { 1, 0, -1 }, + { 1, 0, -1 }, + { 1, 3, -1 }, + { 1, 1, -1 }, + }); /* Initialize console device(s) */ console_init(); diff --git a/src/mainboard/lenovo/x220/romstage.c b/src/mainboard/lenovo/x220/romstage.c index 5ea91cf4a9..33d9b5e00e 100644 --- a/src/mainboard/lenovo/x220/romstage.c +++ b/src/mainboard/lenovo/x220/romstage.c @@ -105,45 +105,6 @@ static void rcba_config(void) RCBA32(BUC) = 0; } -static void -init_usb (void) -{ - const u32 rcba_dump[64] = { - /* 3500 */ 0x20000153, 0x20000f57, 0x20000f57, 0x20000f57, - /* 3510 */ 0x20000f57, 0x20000f57, 0x20000153, 0x20000153, - /* 3520 */ 0x20000f57, 0x20000f57, 0x20000f57, 0x20000f57, - /* 3530 */ 0x20000f57, 0x20000f57, 0x00000000, 0x00000000, - /* 3540 */ 0x00000000, 0x00000000, 0x00000000, 0x00000000, - /* 3550 */ 0x00000000, 0x00000000, 0x00000000, 0x00000000, - /* 3560 */ 0x020c0001, 0x000024a3, 0x00040002, 0x01000050, - /* 3570 */ 0x02000772, 0x16000f9f, 0x1800ff4f, 0x0001d630, - /* 3580 */ 0x00000000, 0x00000000, 0x00000000, 0x00000000, - /* 3590 */ 0x00000003, 0x000000c0, 0x00000000, 0x00000000, - /* 35a0 */ 0x0fc00201, 0x102d0200, 0x00000000, 0x00000000, - /* 35b0 */ 0x00000000, 0x00000000, 0x00000000, 0x00000000, - /* 35c0 */ 0x00000000, 0x00000000, 0x00000000, 0x00000000, - /* 35d0 */ 0x00000000, 0x00000000, 0x00000000, 0x00000000, - /* 35e0 */ 0x00000000, 0x00000000, 0x00000000, 0x00000000, - /* 35f0 */ 0x00000000, 0x00000000, 0x00000000, 0x00000000, - }; - int i; - /* Activate PMBAR. */ - pci_write_config32(PCI_DEV(0, 0x1f, 0), PMBASE, DEFAULT_PMBASE | 1); - pci_write_config32(PCI_DEV(0, 0x1f, 0), PMBASE + 4, 0); - pci_write_config8(PCI_DEV(0, 0x1f, 0), 0x44 /* ACPI_CNTL */ , 0x80); /* Enable ACPI BAR */ - - /* Unlock registers. */ - outw (inw (DEFAULT_PMBASE | 0x003c) | 2, DEFAULT_PMBASE | 0x003c); - - for (i = 0; i < 64; i++) - write32 (DEFAULT_RCBABASE | (0x3500 + 4 * i), rcba_dump[i]); - - pcie_write_config32 (PCI_DEV (0, 0x14, 0), 0xe4, 0x00000000); - - /* Relock registers. */ - outw (0x0000, DEFAULT_PMBASE | 0x003c); -} - #include void main(unsigned long bist) { @@ -179,7 +140,22 @@ void main(unsigned long bist) outl(0x00000ff0, DEFAULT_GPIOBASE + 0x44); outl(0x00000fcf, DEFAULT_GPIOBASE + 0x48); - init_usb(); + early_usb_init((struct southbridge_usb_port []) { + { 1, 0, 0 }, + { 1, 1, 1 }, + { 1, 1, 3 }, + { 1, 1, 3 }, + { 1, 1, -1 }, + { 1, 1, -1 }, + { 1, 0, 2 }, + { 1, 0, 2 }, + { 1, 1, 6 }, + { 1, 1, 5 }, + { 1, 1, 6 }, + { 1, 1, 6 }, + { 1, 1, 7 }, + { 1, 1, 6 }, + }); /* Initialize console device(s) */ console_init(); diff --git a/src/mainboard/lenovo/x230/romstage.c b/src/mainboard/lenovo/x230/romstage.c index 16a17c282f..c2a0ae7af7 100644 --- a/src/mainboard/lenovo/x230/romstage.c +++ b/src/mainboard/lenovo/x230/romstage.c @@ -109,45 +109,6 @@ static void rcba_config(void) RCBA32(BUC) = 0; } -static void -init_usb (void) -{ - const u32 rcba_dump[64] = { - /* 3500 */ 0x20000153, 0x20000153, 0x20000f57, 0x20000f57, - /* 3510 */ 0x20000f57, 0x20000f57, 0x20000153, 0x2000055b, - /* 3520 */ 0x20000153, 0x2000055b, 0x20000f57, 0x20000f57, - /* 3530 */ 0x20000f57, 0x20000f57, 0x00000000, 0x00000000, - /* 3540 */ 0x00000000, 0x00000000, 0x00000000, 0x00000000, - /* 3550 */ 0x00000000, 0x00000000, 0x00000000, 0x00000000, - /* 3560 */ 0x024c8001, 0x000024a3, 0x00040002, 0x01000050, - /* 3570 */ 0x02000772, 0x16000f9f, 0x1800ff4f, 0x0001d630, - /* 3580 */ 0x00000000, 0x00000000, 0x00000000, 0x00000000, - /* 3590 */ 0x00000000, 0x00000000, 0x00000000, 0x00000040, - /* 35a0 */ 0x04000201, 0x00000200, 0x00000000, 0x00000000, - /* 35b0 */ 0x00000000, 0x00000000, 0x00000000, 0x00000000, - /* 35c0 */ 0x00000000, 0x00000000, 0x00000000, 0x00000000, - /* 35d0 */ 0x00000000, 0x00000000, 0x00000000, 0x00000000, - /* 35e0 */ 0x00000000, 0x00000000, 0x00000000, 0x00000000, - /* 35f0 */ 0x00000000, 0x00000000, 0x00000000, 0x00000000, - }; - int i; - /* Activate PMBAR. */ - pci_write_config32(PCI_DEV(0, 0x1f, 0), PMBASE, DEFAULT_PMBASE | 1); - pci_write_config32(PCI_DEV(0, 0x1f, 0), PMBASE + 4, 0); - pci_write_config8(PCI_DEV(0, 0x1f, 0), 0x44 /* ACPI_CNTL */ , 0x80); /* Enable ACPI BAR */ - - /* Unlock registers. */ - outw (inw (DEFAULT_PMBASE | 0x003c) | 2, DEFAULT_PMBASE | 0x003c); - - for (i = 0; i < 64; i++) - write32 (DEFAULT_RCBABASE | (0x3500 + 4 * i), rcba_dump[i]); - - pcie_write_config32 (PCI_DEV (0, 0x14, 0), 0xe4, 0x00000000); - - /* Relock registers. */ - outw (0x0000, DEFAULT_PMBASE | 0x003c); -} - #include void main(unsigned long bist) { @@ -173,7 +134,22 @@ void main(unsigned long bist) setup_pch_gpios(&x230_gpio_map); - init_usb(); + early_usb_init((struct southbridge_usb_port []) { + { 1, 0, 0 }, /* P0 (left, fan side), OC 0 */ + { 1, 0, 1 }, /* P1 (left touchpad side), OC 1 */ + { 1, 1, 3 }, /* P2: dock, OC 3 */ + { 1, 1, -1 }, /* P3: wwan, no OC */ + { 1, 1, -1 }, /* P4: Wacom tablet on X230t, otherwise empty */ + { 1, 1, -1 }, /* P5: Expresscard, no OC */ + { 0, 0, -1 }, /* P6: Empty */ + { 1, 2, -1 }, /* P7: dock, no OC */ + { 1, 0, -1 }, + { 1, 2, 5 }, /* P9: Right (EHCI debug), OC 5 */ + { 1, 1, -1 }, /* P10: fingerprint reader, no OC */ + { 1, 1, -1 }, /* P11: bluetooth, no OC. */ + { 1, 1, -1 }, /* P12: wlan, no OC */ + { 1, 1, -1 }, /* P13: webcam, no OC */ + }); /* Initialize console device(s) */ console_init(); -- cgit v1.2.3