@ -125,6 +125,44 @@ static void quark_pcie_early_init(void)
msg_port_io_write ( MSG_PORT_PCIE_AFE , PCIE_RXPICTRL0_L1 , pcie_cfg ) ;
}
static void quark_usb_early_init ( void )
{
u32 usb ;
/* The sequence below comes from Quark firmware writer guide */
usb = msg_port_alt_read ( MSG_PORT_USB_AFE , USB2_GLOBAL_PORT ) ;
usb & = ~ ( 1 < < 1 ) ;
usb | = ( ( 1 < < 6 ) | ( 1 < < 7 ) ) ;
msg_port_alt_write ( MSG_PORT_USB_AFE , USB2_GLOBAL_PORT , usb ) ;
usb = msg_port_alt_read ( MSG_PORT_USB_AFE , USB2_COMPBG ) ;
usb & = ~ ( ( 1 < < 8 ) | ( 1 < < 9 ) ) ;
usb | = ( ( 1 < < 7 ) | ( 1 < < 10 ) ) ;
msg_port_alt_write ( MSG_PORT_USB_AFE , USB2_COMPBG , usb ) ;
usb = msg_port_alt_read ( MSG_PORT_USB_AFE , USB2_PLL2 ) ;
usb | = ( 1 < < 29 ) ;
msg_port_alt_write ( MSG_PORT_USB_AFE , USB2_PLL2 , usb ) ;
usb = msg_port_alt_read ( MSG_PORT_USB_AFE , USB2_PLL1 ) ;
usb | = ( 1 < < 1 ) ;
msg_port_alt_write ( MSG_PORT_USB_AFE , USB2_PLL1 , usb ) ;
usb = msg_port_alt_read ( MSG_PORT_USB_AFE , USB2_PLL1 ) ;
usb & = ~ ( ( 1 < < 3 ) | ( 1 < < 4 ) | ( 1 < < 5 ) ) ;
usb | = ( 1 < < 6 ) ;
msg_port_alt_write ( MSG_PORT_USB_AFE , USB2_PLL1 , usb ) ;
usb = msg_port_alt_read ( MSG_PORT_USB_AFE , USB2_PLL2 ) ;
usb & = ~ ( 1 < < 29 ) ;
msg_port_alt_write ( MSG_PORT_USB_AFE , USB2_PLL2 , usb ) ;
usb = msg_port_alt_read ( MSG_PORT_USB_AFE , USB2_PLL2 ) ;
usb | = ( 1 < < 24 ) ;
msg_port_alt_write ( MSG_PORT_USB_AFE , USB2_PLL2 , usb ) ;
}
static void quark_enable_legacy_seg ( void )
{
u32 hmisc2 ;
@ -164,6 +202,9 @@ int arch_cpu_init(void)
*/
quark_pcie_early_init ( ) ;
/* Initialize USB2 PHY */
quark_usb_early_init ( ) ;
/* Turn on legacy segments (A/B/E/F) decode to system RAM */
quark_enable_legacy_seg ( ) ;