Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 146644
b: refs/heads/master
c: 4e7b7fd
h: refs/heads/master
v: v3
  • Loading branch information
Paul Mundt committed Apr 17, 2009
1 parent 0226605 commit 8b27238
Show file tree
Hide file tree
Showing 3 changed files with 27 additions and 22 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 0bbc9bc3189f24de946777af43c9033c8c4871e4
refs/heads/master: 4e7b7fdb129995640f144b7de114e109c6b46a2a
42 changes: 24 additions & 18 deletions trunk/arch/sh/drivers/pci/pci-sh7780.c
Original file line number Diff line number Diff line change
Expand Up @@ -34,33 +34,39 @@
int __init sh7780_pci_init(struct pci_channel *chan)
{
unsigned int id;
int ret, match = 0;
const char *type = NULL;
int ret;

pr_debug("PCI: Starting intialization.\n");
printk(KERN_NOTICE "PCI: Starting intialization.\n");

chan->reg_base = 0xfe040000;
chan->io_base = 0xfe200000;

ctrl_outl(0x00000001, SH7780_PCI_VCR2); /* Enable PCIC */

/* check for SH7780/SH7780R hardware */
id = pci_read_reg(chan, SH7780_PCIVID);
if ((id & 0xffff) == SH7780_VENDOR_ID) {
switch ((id >> 16) & 0xffff) {
case SH7763_DEVICE_ID:
case SH7780_DEVICE_ID:
case SH7781_DEVICE_ID:
case SH7785_DEVICE_ID:
match = 1;
break;
}
}
/* Enable CPU access to the PCIC registers. */
__raw_writel(PCIECR_ENBL, PCIECR);

if (unlikely(!match)) {
printk(KERN_ERR "PCI: This is not an SH7780 (%x)\n", id);
id = __raw_readw(chan->reg_base + SH7780_PCIVID);
if (id != SH7780_VENDOR_ID) {
printk(KERN_ERR "PCI: Unknown vendor ID 0x%04x.\n", id);
return -ENODEV;
}

id = __raw_readw(chan->reg_base + SH7780_PCIDID);
type = (id == SH7763_DEVICE_ID) ? "SH7763" :
(id == SH7780_DEVICE_ID) ? "SH7780" :
(id == SH7781_DEVICE_ID) ? "SH7781" :
(id == SH7785_DEVICE_ID) ? "SH7785" :
NULL;
if (unlikely(!type)) {
printk(KERN_ERR "PCI: Found an unsupported Renesas host "
"controller, device id 0x%04x.\n", id);
return -EINVAL;
}

printk(KERN_NOTICE "PCI: Found a Renesas %s host "
"controller, revision %d.\n", type,
__raw_readb(chan->reg_base + SH7780_PCIRID));

if ((ret = sh4_pci_check_direct(chan)) != 0)
return ret;

Expand Down
5 changes: 2 additions & 3 deletions trunk/arch/sh/drivers/pci/pci-sh7780.h
Original file line number Diff line number Diff line change
Expand Up @@ -20,9 +20,8 @@
#define SH7785_DEVICE_ID 0x0007

/* SH7780 Control Registers */
#define SH7780_PCI_VCR0 0xFE000000
#define SH7780_PCI_VCR1 0xFE000004
#define SH7780_PCI_VCR2 0xFE000008
#define PCIECR 0xFE000008
#define PCIECR_ENBL 0x01

/* SH7780 Specific Values */
#define SH7780_PCI_CONFIG_BASE 0xFD000000 /* Config space base addr */
Expand Down

0 comments on commit 8b27238

Please sign in to comment.