Fix usb debug dongle support
- move enable_usbdebug() declaration to usbdebug.h - reinitialize debug driver in ramstage, as copying the data structure from romstage doesn't work right now. This way of copying data from romstage to ramstage is really board/cpu specific, and is likely to break often. So don't do it. Change-Id: I394678ded6679c1803e29eb691b926182bdcab68 Signed-off-by: Sven Schnelle <svens@stackframe.org> Reviewed-on: http://review.coreboot.org/355 Tested-by: build bot (Jenkins) Reviewed-by: Stefan Reinauer <stefan.reinauer@coreboot.org>
This commit is contained in:
parent
28f6a43755
commit
20fc631ad2
@ -30,6 +30,10 @@
|
|||||||
#include <console/ne2k.h>
|
#include <console/ne2k.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if CONFIG_USBDEBUG
|
||||||
|
#include <usbdebug.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifndef __PRE_RAM__
|
#ifndef __PRE_RAM__
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <pc80/mc146818rtc.h>
|
#include <pc80/mc146818rtc.h>
|
||||||
|
@ -50,15 +50,7 @@ unsigned get_ehci_debug(void)
|
|||||||
|
|
||||||
static void dbgp_init(void)
|
static void dbgp_init(void)
|
||||||
{
|
{
|
||||||
struct ehci_debug_info *dbg_infox;
|
usbdebug_init(CONFIG_EHCI_BAR, CONFIG_EHCI_DEBUG_OFFSET, &dbg_info);
|
||||||
|
|
||||||
/* At this point, all we have to do is copy the fixed address
|
|
||||||
* debug_info data structure to our version defined above. */
|
|
||||||
|
|
||||||
dbg_infox = (struct ehci_debug_info *)
|
|
||||||
((CONFIG_RAMTOP) - sizeof(struct ehci_debug_info));
|
|
||||||
|
|
||||||
memcpy(&dbg_info, dbg_infox, sizeof(struct ehci_debug_info));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void dbgp_tx_byte(unsigned char data)
|
static void dbgp_tx_byte(unsigned char data)
|
||||||
|
@ -25,6 +25,7 @@
|
|||||||
|
|
||||||
#define EHCI_BAR_INDEX 0x10
|
#define EHCI_BAR_INDEX 0x10
|
||||||
|
|
||||||
|
#ifndef __ROMCC__
|
||||||
/* EHCI register interface, corresponds to EHCI Revision 0.95 specification */
|
/* EHCI register interface, corresponds to EHCI Revision 0.95 specification */
|
||||||
|
|
||||||
/* Section 2.2 Host Controller Capability Registers */
|
/* Section 2.2 Host Controller Capability Registers */
|
||||||
@ -199,5 +200,5 @@ struct ehci_dbg_port {
|
|||||||
u32 address;
|
u32 address;
|
||||||
#define DBGP_EPADDR(dev, ep) (((dev)<<8)|(ep))
|
#define DBGP_EPADDR(dev, ep) (((dev)<<8)|(ep))
|
||||||
} __attribute__ ((packed));
|
} __attribute__ ((packed));
|
||||||
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
@ -32,6 +32,8 @@ struct ehci_debug_info {
|
|||||||
u32 endpoint_in;
|
u32 endpoint_in;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
#ifndef __ROMCC__
|
||||||
|
void enable_usbdebug(unsigned int port);
|
||||||
int dbgp_bulk_write_x(struct ehci_debug_info *dbg_info, const char *bytes, int size);
|
int dbgp_bulk_write_x(struct ehci_debug_info *dbg_info, const char *bytes, int size);
|
||||||
int dbgp_bulk_read_x(struct ehci_debug_info *dbg_info, void *data, int size);
|
int dbgp_bulk_read_x(struct ehci_debug_info *dbg_info, void *data, int size);
|
||||||
void set_ehci_base(unsigned ehci_base);
|
void set_ehci_base(unsigned ehci_base);
|
||||||
@ -40,5 +42,6 @@ unsigned get_ehci_debug(void);
|
|||||||
void set_debug_port(unsigned port);
|
void set_debug_port(unsigned port);
|
||||||
int early_usbdebug_init(void);
|
int early_usbdebug_init(void);
|
||||||
void usbdebug_tx_byte(unsigned char data);
|
void usbdebug_tx_byte(unsigned char data);
|
||||||
|
int usbdebug_init(unsigned ehci_bar, unsigned offset, struct ehci_debug_info *info);
|
||||||
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
@ -40,5 +40,6 @@ driver-$(CONFIG_CONSOLE_NE2K) += ne2k.c
|
|||||||
smm-y += memcpy.c cbfs.c memset.c memcmp.c
|
smm-y += memcpy.c cbfs.c memset.c memcmp.c
|
||||||
smm-$(CONFIG_CONSOLE_SERIAL8250) += uart8250.c
|
smm-$(CONFIG_CONSOLE_SERIAL8250) += uart8250.c
|
||||||
smm-$(CONFIG_CONSOLE_SERIAL8250MEM) += uart8250mem.c
|
smm-$(CONFIG_CONSOLE_SERIAL8250MEM) += uart8250mem.c
|
||||||
|
smm-$(CONFIG_USBDEBUG) += usbdebug.c
|
||||||
|
|
||||||
$(obj)/lib/version.ramstage.o : $(obj)/build.h
|
$(obj)/lib/version.ramstage.o : $(obj)/build.h
|
||||||
|
@ -238,7 +238,6 @@ int dbgp_bulk_read_x(struct ehci_debug_info *dbg_info, void *data, int size)
|
|||||||
dbg_info->endpoint_in, data, size);
|
dbg_info->endpoint_in, data, size);
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef __PRE_RAM__
|
|
||||||
static void dbgp_mdelay(int ms)
|
static void dbgp_mdelay(int ms)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
@ -356,7 +355,7 @@ static int ehci_wait_for_port(struct ehci_regs *ehci_regs, int port)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static int usbdebug_init(unsigned ehci_bar, unsigned offset, struct ehci_debug_info *info)
|
int usbdebug_init(unsigned ehci_bar, unsigned offset, struct ehci_debug_info *info)
|
||||||
{
|
{
|
||||||
struct ehci_caps *ehci_caps;
|
struct ehci_caps *ehci_caps;
|
||||||
struct ehci_regs *ehci_regs;
|
struct ehci_regs *ehci_regs;
|
||||||
@ -566,8 +565,6 @@ next_debug_port:
|
|||||||
return -10;
|
return -10;
|
||||||
}
|
}
|
||||||
|
|
||||||
// **** This part is probably x86 specific and used by romstage.c **** //
|
|
||||||
|
|
||||||
int early_usbdebug_init(void)
|
int early_usbdebug_init(void)
|
||||||
{
|
{
|
||||||
struct ehci_debug_info *dbg_info = (struct ehci_debug_info *)
|
struct ehci_debug_info *dbg_info = (struct ehci_debug_info *)
|
||||||
@ -588,4 +585,3 @@ void usbdebug_tx_byte(unsigned char data)
|
|||||||
dbgp_bulk_write_x(dbg_info, (char*)&data, 1);
|
dbgp_bulk_write_x(dbg_info, (char*)&data, 1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
@ -8,4 +8,6 @@ driver-y += hda.c
|
|||||||
driver-y += ac97.c
|
driver-y += ac97.c
|
||||||
driver-y += pci.c
|
driver-y += pci.c
|
||||||
ramstage-y += reset.c
|
ramstage-y += reset.c
|
||||||
romstage-y += enable_usbdebug.c
|
romstage-$(CONFIG_USBDEBUG) += enable_usbdebug.c
|
||||||
|
ramstage-$(CONFIG_USBDEBUG) += enable_usbdebug.c
|
||||||
|
smm-$(CONFIG_USBDEBUG) += enable_usbdebug.c
|
||||||
|
@ -40,5 +40,4 @@ void sb600_enable(device_t dev);
|
|||||||
void sb600_lpc_port80(void);
|
void sb600_lpc_port80(void);
|
||||||
void sb600_pci_port80(void);
|
void sb600_pci_port80(void);
|
||||||
|
|
||||||
void enable_usbdebug(unsigned int port);
|
|
||||||
#endif /* SB600_H */
|
#endif /* SB600_H */
|
||||||
|
@ -10,7 +10,9 @@ driver-y += pci.c
|
|||||||
ramstage-$(CONFIG_GENERATE_ACPI_TABLES) += fadt.c
|
ramstage-$(CONFIG_GENERATE_ACPI_TABLES) += fadt.c
|
||||||
romstage-y += reset.c
|
romstage-y += reset.c
|
||||||
ramstage-y += reset.c
|
ramstage-y += reset.c
|
||||||
romstage-y += enable_usbdebug.c
|
romstage-$(CONFIG_USBDEBUG) += enable_usbdebug.c
|
||||||
|
ramstage-$(CONFIG_USBDEBUG) += enable_usbdebug.c
|
||||||
|
smm-$(CONFIG_USBDEBUG) += enable_usbdebug.c
|
||||||
|
|
||||||
romstage-y += early_setup.c
|
romstage-y += early_setup.c
|
||||||
romstage-y += smbus.c
|
romstage-y += smbus.c
|
||||||
|
@ -82,8 +82,6 @@ int acpi_is_wakeup_early(void);
|
|||||||
int s3_save_nvram_early(u32 dword, int size, int nvram_pos);
|
int s3_save_nvram_early(u32 dword, int size, int nvram_pos);
|
||||||
int s3_load_nvram_early(int size, u32 *old_dword, int nvram_pos);
|
int s3_load_nvram_early(int size, u32 *old_dword, int nvram_pos);
|
||||||
|
|
||||||
void enable_usbdebug(unsigned int port);
|
|
||||||
|
|
||||||
u32 __attribute__ ((weak)) get_sbdn(u32 bus);
|
u32 __attribute__ ((weak)) get_sbdn(u32 bus);
|
||||||
void __attribute__((weak)) enable_fid_change_on_sb(u32 sbbusn, u32 sbdn);
|
void __attribute__((weak)) enable_fid_change_on_sb(u32 sbbusn, u32 sbdn);
|
||||||
#endif /* SB700_H */
|
#endif /* SB700_H */
|
||||||
|
@ -9,4 +9,6 @@ driver-y += pci.c
|
|||||||
driver-y += pcie.c
|
driver-y += pcie.c
|
||||||
ramstage-$(CONFIG_GENERATE_ACPI_TABLES) += fadt.c
|
ramstage-$(CONFIG_GENERATE_ACPI_TABLES) += fadt.c
|
||||||
ramstage-y += reset.c
|
ramstage-y += reset.c
|
||||||
romstage-y += enable_usbdebug.c
|
romstage-$(CONFIG_USBDEBUG) += enable_usbdebug.c
|
||||||
|
ramstage-$(CONFIG_USBDEBUG) += enable_usbdebug.c
|
||||||
|
smm-$(CONFIG_USBDEBUG) += enable_usbdebug.c
|
||||||
|
@ -58,7 +58,6 @@ void sb800_clk_output_48Mhz(void);
|
|||||||
int s3_save_nvram_early(u32 dword, int size, int nvram_pos);
|
int s3_save_nvram_early(u32 dword, int size, int nvram_pos);
|
||||||
int s3_load_nvram_early(int size, u32 *old_dword, int nvram_pos);
|
int s3_load_nvram_early(int size, u32 *old_dword, int nvram_pos);
|
||||||
|
|
||||||
void enable_usbdebug(unsigned int port);
|
|
||||||
#else
|
#else
|
||||||
void sb800_enable(device_t dev);
|
void sb800_enable(device_t dev);
|
||||||
void __attribute__((weak)) sb800_setup_sata_phys(struct device *dev);
|
void __attribute__((weak)) sb800_setup_sata_phys(struct device *dev);
|
||||||
|
@ -38,4 +38,6 @@ smm-$(CONFIG_HAVE_SMI_HANDLER) += smihandler.c
|
|||||||
|
|
||||||
romstage-y += early_smbus.c
|
romstage-y += early_smbus.c
|
||||||
romstage-$(CONFIG_USBDEBUG) += usb_debug.c
|
romstage-$(CONFIG_USBDEBUG) += usb_debug.c
|
||||||
|
ramstage-$(CONFIG_USBDEBUG) += usb_debug.c
|
||||||
|
smm-$(CONFIG_USBDEBUG) += usb_debug.c
|
||||||
|
|
||||||
|
@ -46,7 +46,6 @@ extern void i82801gx_enable(device_t dev);
|
|||||||
void enable_smbus(void);
|
void enable_smbus(void);
|
||||||
int smbus_read_byte(unsigned device, unsigned address);
|
int smbus_read_byte(unsigned device, unsigned address);
|
||||||
#endif
|
#endif
|
||||||
void enable_usbdebug(unsigned int port);
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#define MAINBOARD_POWER_OFF 0
|
#define MAINBOARD_POWER_OFF 0
|
||||||
|
@ -15,7 +15,9 @@ ramstage-y += reset.c
|
|||||||
|
|
||||||
ramstage-$(CONFIG_GENERATE_ACPI_TABLES) += fadt.c
|
ramstage-$(CONFIG_GENERATE_ACPI_TABLES) += fadt.c
|
||||||
|
|
||||||
romstage-y += enable_usbdebug.c
|
romstage-$(CONFIG_USBDEBUG) += enable_usbdebug.c
|
||||||
|
ramstage-$(CONFIG_USBDEBUG) += enable_usbdebug.c
|
||||||
|
smm-$(CONFIG_USBDEBUG) += enable_usbdebug.c
|
||||||
romstage-y += early_smbus.c
|
romstage-y += early_smbus.c
|
||||||
|
|
||||||
chipset_bootblock_inc += $(src)/southbridge/nvidia/ck804/romstrap.inc
|
chipset_bootblock_inc += $(src)/southbridge/nvidia/ck804/romstrap.inc
|
||||||
|
@ -24,7 +24,6 @@
|
|||||||
#include "chip.h"
|
#include "chip.h"
|
||||||
|
|
||||||
void ck804_enable(device_t dev);
|
void ck804_enable(device_t dev);
|
||||||
void enable_usbdebug(unsigned int port);
|
|
||||||
|
|
||||||
extern struct pci_operations ck804_pci_ops;
|
extern struct pci_operations ck804_pci_ops;
|
||||||
|
|
||||||
|
@ -15,7 +15,9 @@ driver-$(CONFIG_GENERATE_ACPI_TABLES) += fadt.c
|
|||||||
|
|
||||||
ramstage-y += reset.c
|
ramstage-y += reset.c
|
||||||
|
|
||||||
romstage-y += enable_usbdebug.c
|
romstage-$(CONFIG_USBDEBUG) += enable_usbdebug.c
|
||||||
|
ramstage-$(CONFIG_USBDEBUG) += enable_usbdebug.c
|
||||||
|
smm-$(CONFIG_USBDEBUG) += enable_usbdebug.c
|
||||||
|
|
||||||
chipset_bootblock_inc += $(src)/southbridge/nvidia/mcp55/romstrap.inc
|
chipset_bootblock_inc += $(src)/southbridge/nvidia/mcp55/romstrap.inc
|
||||||
chipset_bootblock_lds += $(src)/southbridge/nvidia/mcp55/romstrap.lds
|
chipset_bootblock_lds += $(src)/southbridge/nvidia/mcp55/romstrap.lds
|
||||||
|
@ -35,7 +35,6 @@ extern struct pci_operations mcp55_pci_ops;
|
|||||||
#else
|
#else
|
||||||
#if !defined(__ROMCC__)
|
#if !defined(__ROMCC__)
|
||||||
void enable_fid_change_on_sb(unsigned sbbusn, unsigned sbdn);
|
void enable_fid_change_on_sb(unsigned sbbusn, unsigned sbdn);
|
||||||
void enable_usbdebug(unsigned int port);
|
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -9,7 +9,10 @@ driver-y += sata.c
|
|||||||
driver-y += pcie.c
|
driver-y += pcie.c
|
||||||
driver-y += aza.c
|
driver-y += aza.c
|
||||||
ramstage-y += reset.c
|
ramstage-y += reset.c
|
||||||
romstage-y += enable_usbdebug.c
|
|
||||||
|
romstage-$(CONFIG_USBDEBUG) += enable_usbdebug.c
|
||||||
|
ramstage-$(CONFIG_USBDEBUG) += enable_usbdebug.c
|
||||||
|
smm-$(CONFIG_USBDEBUG) += enable_usbdebug.c
|
||||||
|
|
||||||
chipset_bootblock_inc += $(src)/southbridge/sis/sis966/romstrap.inc
|
chipset_bootblock_inc += $(src)/southbridge/sis/sis966/romstrap.inc
|
||||||
chipset_bootblock_lds += $(src)/southbridge/sis/sis966/romstrap.lds
|
chipset_bootblock_lds += $(src)/southbridge/sis/sis966/romstrap.lds
|
||||||
|
@ -39,8 +39,4 @@
|
|||||||
void sis966_enable(device_t dev);
|
void sis966_enable(device_t dev);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if defined(__PRE_RAM__) && !defined(__ROMCC__)
|
|
||||||
void enable_usbdebug(unsigned int port);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif /* SIS966_H */
|
#endif /* SIS966_H */
|
||||||
|
Loading…
x
Reference in New Issue
Block a user