[ifxmips] Make it possible for boards to disable PCI REQ signals in the PCI controller, signed off by Ithamar R. Adema
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@20264 3c298f89-4303-0410-b956-a3cf2f4a3e73master
parent
f02f589999
commit
3dead2d4a1
|
@ -55,6 +55,7 @@ enum {
|
||||||
};
|
};
|
||||||
|
|
||||||
extern int ifxmips_pci_external_clock;
|
extern int ifxmips_pci_external_clock;
|
||||||
|
extern int ifxmips_pci_req_mask;
|
||||||
|
|
||||||
static unsigned int chiprev;
|
static unsigned int chiprev;
|
||||||
static int cmdline_mac;
|
static int cmdline_mac;
|
||||||
|
@ -70,6 +71,7 @@ struct ifxmips_board {
|
||||||
struct gpio_led *ifxmips_leds;
|
struct gpio_led *ifxmips_leds;
|
||||||
struct gpio_led *gpio_leds;
|
struct gpio_led *gpio_leds;
|
||||||
int pci_external_clock;
|
int pci_external_clock;
|
||||||
|
int pci_req_mask;
|
||||||
int num_devs;
|
int num_devs;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -392,6 +394,8 @@ int __init ifxmips_init_devices(void)
|
||||||
ifxmips_gpio_dev.resource = &board->gpiodev_resource;
|
ifxmips_gpio_dev.resource = &board->gpiodev_resource;
|
||||||
if (board->pci_external_clock)
|
if (board->pci_external_clock)
|
||||||
ifxmips_pci_external_clock = 1;
|
ifxmips_pci_external_clock = 1;
|
||||||
|
if (board->pci_req_mask)
|
||||||
|
ifxmips_pci_req_mask = board->pci_req_mask;
|
||||||
printk(KERN_INFO "using board definition %s\n", board->name);
|
printk(KERN_INFO "using board definition %s\n", board->name);
|
||||||
return platform_add_devices(board->devs, board->num_devs);
|
return platform_add_devices(board->devs, board->num_devs);
|
||||||
}
|
}
|
||||||
|
|
|
@ -54,6 +54,10 @@ static struct pci_controller ifxmips_pci_controller =
|
||||||
u32 ifxmips_pci_mapped_cfg;
|
u32 ifxmips_pci_mapped_cfg;
|
||||||
int ifxmips_pci_external_clock = 0;
|
int ifxmips_pci_external_clock = 0;
|
||||||
|
|
||||||
|
/* Since the PCI REQ pins can be reused for other functionality, make it possible
|
||||||
|
to exclude those from interpretation by the PCI controller */
|
||||||
|
int ifxmips_pci_req_mask = 0xf;
|
||||||
|
|
||||||
static int __init
|
static int __init
|
||||||
ifxmips_pci_set_external_clk(char *str)
|
ifxmips_pci_set_external_clk(char *str)
|
||||||
{
|
{
|
||||||
|
@ -126,7 +130,7 @@ ifxmips_pci_startup(void)
|
||||||
|
|
||||||
/* enable external 2 PCI masters */
|
/* enable external 2 PCI masters */
|
||||||
temp_buffer = ifxmips_r32(PCI_CR_PC_ARB);
|
temp_buffer = ifxmips_r32(PCI_CR_PC_ARB);
|
||||||
temp_buffer &= (~(0xf << 16));
|
temp_buffer &= (~(ifxmips_pci_req_mask << 16));
|
||||||
/* enable internal arbiter */
|
/* enable internal arbiter */
|
||||||
temp_buffer |= (1 << INTERNAL_ARB_ENABLE_BIT);
|
temp_buffer |= (1 << INTERNAL_ARB_ENABLE_BIT);
|
||||||
/* enable internal PCI master reqest */
|
/* enable internal PCI master reqest */
|
||||||
|
|
Loading…
Reference in New Issue