Skip to content

Commit

Permalink
powerpc: Correct USB support for GE Fanuc SBC610
Browse files Browse the repository at this point in the history
Support for the SBC610 VPX Single Board Computer from GE Fanuc (PowerPC
MPC8641D).

Fixup to correctly reconfigure USB, provided by an NEC uPD720101, after
device is reset. This requires a set of chip specific registers in the
devices configuration space to be correctly written, enabling all ports
and switching the device to use an external 48-MHz Oscillator.

Signed-off-by: Martyn Welch <martyn.welch@gefanuc.com>
Signed-off-by: Kumar Gala <galak@kernel.crashing.org>
  • Loading branch information
Martyn Welch authored and Kumar Gala committed Sep 29, 2008
1 parent 0161dca commit a969e76
Showing 1 changed file with 17 additions and 0 deletions.
17 changes: 17 additions & 0 deletions arch/powerpc/platforms/86xx/gef_sbc610.c
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,8 @@
*
* Based on: mpc86xx_hpcn.c (MPC86xx HPCN board specific routines)
* Copyright 2006 Freescale Semiconductor Inc.
*
* NEC fixup adapted from arch/mips/pci/fixup-lm2e.c
*/

#include <linux/stddef.h>
Expand Down Expand Up @@ -75,6 +77,21 @@ static void gef_sbc610_show_cpuinfo(struct seq_file *m)
seq_printf(m, "Memory\t\t: %d MB\n", memsize / (1024 * 1024));
}

static void __init gef_sbc610_nec_fixup(struct pci_dev *pdev)
{
unsigned int val;

printk(KERN_INFO "Running NEC uPD720101 Fixup\n");

/* Ensure ports 1, 2, 3, 4 & 5 are enabled */
pci_read_config_dword(pdev, 0xe0, &val);
pci_write_config_dword(pdev, 0xe0, (val & ~7) | 0x5);

/* System clock is 48-MHz Oscillator and EHCI Enabled. */
pci_write_config_dword(pdev, 0xe4, 1 << 5);
}
DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_NEC, PCI_DEVICE_ID_NEC_USB,
gef_sbc610_nec_fixup);

/*
* Called very early, device-tree isn't unflattened
Expand Down

0 comments on commit a969e76

Please sign in to comment.