PCI still doesn't work on sh7785lcr 29bit 256M map mode. On SH7785, PCI -> SHwy address translation is not base+offset but somewhat like base|offset (See HW Manual (rej09b0261) Fig. 13.11). So, you can't export CS2,3,4,5 by 256M at CS2 (results CS0,1,2,3 exported, I guess). There are two candidates. a) 128M@CS2 + 128M@CS4 b) 512M@CS0 Attached patch is B. It maps 512M Byte at 0 independently of memory size. It results CS0 to CS6 and perhaps some more being accessible from PCI. Tested on 7785lcr 29bit 128M map 7785lcr 29bit 256M map (NOT tested on 32bit) Signed-off-by: Takashi YOSHII <yoshii.takashi@renesas.com> Signed-off-by: Paul Mundt <lethal@linux-sh.org>
61 lines
1.4 KiB
C
61 lines
1.4 KiB
C
/*
|
|
* Author: Ian DaSilva (idasilva@mvista.com)
|
|
*
|
|
* Highly leveraged from pci-bigsur.c, written by Dustin McIntire.
|
|
*
|
|
* May be copied or modified under the terms of the GNU General Public
|
|
* License. See linux/COPYING for more information.
|
|
*
|
|
* PCI initialization for the Renesas R0P7785LC0011RL board
|
|
* Based on arch/sh/drivers/pci/ops-r7780rp.c
|
|
*
|
|
*/
|
|
#include <linux/kernel.h>
|
|
#include <linux/types.h>
|
|
#include <linux/init.h>
|
|
#include <linux/delay.h>
|
|
#include <linux/pci.h>
|
|
#include "pci-sh4.h"
|
|
|
|
static char irq_tab[] __initdata = {
|
|
65, 66, 67, 68,
|
|
};
|
|
|
|
int __init pcibios_map_platform_irq(struct pci_dev *pdev, u8 slot, u8 pin)
|
|
{
|
|
return irq_tab[slot];
|
|
}
|
|
|
|
static struct resource sh7785_io_resource = {
|
|
.name = "SH7785_IO",
|
|
.start = SH7780_PCI_IO_BASE,
|
|
.end = SH7780_PCI_IO_BASE + SH7780_PCI_IO_SIZE - 1,
|
|
.flags = IORESOURCE_IO
|
|
};
|
|
|
|
static struct resource sh7785_mem_resource = {
|
|
.name = "SH7785_mem",
|
|
.start = SH7780_PCI_MEMORY_BASE,
|
|
.end = SH7780_PCI_MEMORY_BASE + SH7780_PCI_MEM_SIZE - 1,
|
|
.flags = IORESOURCE_MEM
|
|
};
|
|
|
|
struct pci_channel board_pci_channels[] = {
|
|
{ &sh4_pci_ops, &sh7785_io_resource, &sh7785_mem_resource, 0, 0xff },
|
|
{ NULL, NULL, NULL, 0, 0 },
|
|
};
|
|
EXPORT_SYMBOL(board_pci_channels);
|
|
|
|
static struct sh4_pci_address_map sh7785_pci_map = {
|
|
.window0 = {
|
|
.base = SH7780_CS0_BASE_ADDR,
|
|
.size = 0x20000000,
|
|
},
|
|
|
|
.flags = SH4_PCIC_NO_RESET,
|
|
};
|
|
|
|
int __init pcibios_init_platform(void)
|
|
{
|
|
return sh7780_pcic_init(&sh7785_pci_map);
|
|
}
|