
Originally Posted by
kafowler10
Has anyone determined whether the new silver Tivos can support USB 2.0?
The BCM7315 is USB 1.1 only, but USB 2.0 support could be one of the differences between the BCM7315 and the BCM7317 in the new "Series 2.5" Tivo.
Well, it didn't work for me, but there is some sort of (hacked-in) 7317 special handling in drivers/usb/tivo/bcm-usb.h:
Code:
static int brcm_ehcd_init (void)
{
int status = 0;
{ // Init BRCM USB setup registers for board and HC specific issues
__u32 *setup = (__u32 *) HC_BASE_ADDR;
writel( BRCM_USB_SETUP_REG_VAL, &setup[BrcmUsbSetup] );
writel( BRCM_PLL_CONTROL_REG_VAL, &setup[BrcmPllControl] );
}
#if 1 //for BCM7317 only
//straighten out frame length
writel( 0x000c0020, (volatile u32 *) 0xfffe81f8 );
//set generic_ctl_11 (USB_UTMICTRL)
writel( (readl( (u32 *) 0xfffe81ec ) | (1 << 11)), (u32 *) 0xfffe81ec );
#endif
Pci_ehci_dev = kmalloc( sizeof( struct pci_dev ), GFP_KERNEL );
if( !Pci_ehci_dev )
return -ENOMEM;
strcpy( Pci_ehci_dev->name, "BRCM-EHCI" );
strcpy( Pci_ehci_dev->slot_name, "EHCI-Direct" );
pci_resource_start(Pci_ehci_dev, 0) = EHC_BASE_ADDR;
pci_resource_end(Pci_ehci_dev, 0) = EHC_END_ADDR;
Pci_ehci_dev->irq = EHC_INT_VECTOR;
status = usb_hcd_pci_probe (Pci_ehci_dev, &brcm_ehci_pci_ids[0]);
return( status );
}
I'm pretty sure that's not a real PCI device though - especially because the default Uma2c kernels don't even build PCI support (CONFIG_PCI), and because bcm-usb.h overrides any PCI support functions that are called by the Linux USB code. Thus, the PCI probe is faked, although it does look like usb_hcd_pci_probe() attempts to initialize the hardware and would fail if the EHCI hardware was not present.
They also don't build the EHCI driver, which makes sense because it is very broken when I build it. The whole USB setup on these chips is a bit curious and needs to be explored further.