Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 22450e03 authored by Linus Torvalds's avatar Linus Torvalds
Browse files
Pull PCI fix from Bjorn Helgaas:
 "Move alpha PCI IRQ map/swizzle functions out of initdata to fix
  regression from PCI core IRQ mapping changes (Lorenzo Pieralisi)"

* tag 'pci-v4.14-fixes-6' of git://git.kernel.org/pub/scm/linux/kernel/git/helgaas/pci:
  alpha/PCI: Move pci_map_irq()/pci_swizzle() out of initdata
parents b35f0ca7 814eae59
Loading
Loading
Loading
Loading
+2 −2
Original line number Original line Diff line number Diff line
@@ -181,10 +181,10 @@ alcor_init_irq(void)
 * comes in on.  This makes interrupt processing much easier.
 * comes in on.  This makes interrupt processing much easier.
 */
 */


static int __init
static int
alcor_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
alcor_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
{
{
	static char irq_tab[7][5] __initdata = {
	static char irq_tab[7][5] = {
		/*INT    INTA   INTB   INTC   INTD */
		/*INT    INTA   INTB   INTC   INTD */
		/* note: IDSEL 17 is XLT only */
		/* note: IDSEL 17 is XLT only */
		{16+13, 16+13, 16+13, 16+13, 16+13},	/* IdSel 17,  TULIP  */
		{16+13, 16+13, 16+13, 16+13, 16+13},	/* IdSel 17,  TULIP  */
+6 −6
Original line number Original line Diff line number Diff line
@@ -173,10 +173,10 @@ pc164_init_irq(void)
 * because it is the Saturn IO (SIO) PCI/ISA Bridge Chip.
 * because it is the Saturn IO (SIO) PCI/ISA Bridge Chip.
 */
 */


static inline int __init
static inline int
eb66p_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
eb66p_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
{
{
	static char irq_tab[5][5] __initdata = {
	static char irq_tab[5][5] = {
		/*INT  INTA  INTB  INTC   INTD */
		/*INT  INTA  INTB  INTC   INTD */
		{16+0, 16+0, 16+5,  16+9, 16+13},  /* IdSel 6,  slot 0, J25 */
		{16+0, 16+0, 16+5,  16+9, 16+13},  /* IdSel 6,  slot 0, J25 */
		{16+1, 16+1, 16+6, 16+10, 16+14},  /* IdSel 7,  slot 1, J26 */
		{16+1, 16+1, 16+6, 16+10, 16+14},  /* IdSel 7,  slot 1, J26 */
@@ -203,10 +203,10 @@ eb66p_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
 * because it is the Saturn IO (SIO) PCI/ISA Bridge Chip.
 * because it is the Saturn IO (SIO) PCI/ISA Bridge Chip.
 */
 */


static inline int __init
static inline int
cabriolet_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
cabriolet_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
{
{
	static char irq_tab[5][5] __initdata = {
	static char irq_tab[5][5] = {
		/*INT   INTA  INTB  INTC   INTD */
		/*INT   INTA  INTB  INTC   INTD */
		{ 16+2, 16+2, 16+7, 16+11, 16+15}, /* IdSel 5,  slot 2, J21 */
		{ 16+2, 16+2, 16+7, 16+11, 16+15}, /* IdSel 5,  slot 2, J21 */
		{ 16+0, 16+0, 16+5,  16+9, 16+13}, /* IdSel 6,  slot 0, J19 */
		{ 16+0, 16+0, 16+5,  16+9, 16+13}, /* IdSel 6,  slot 0, J19 */
@@ -287,10 +287,10 @@ cia_cab_init_pci(void)
 * 
 * 
 */
 */


static inline int __init
static inline int
alphapc164_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
alphapc164_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
{
{
	static char irq_tab[7][5] __initdata = {
	static char irq_tab[7][5] = {
		/*INT   INTA  INTB   INTC   INTD */
		/*INT   INTA  INTB   INTC   INTD */
		{ 16+2, 16+2, 16+9,  16+13, 16+17}, /* IdSel  5, slot 2, J20 */
		{ 16+2, 16+2, 16+9,  16+13, 16+17}, /* IdSel  5, slot 2, J20 */
		{ 16+0, 16+0, 16+7,  16+11, 16+15}, /* IdSel  6, slot 0, J29 */
		{ 16+0, 16+0, 16+7,  16+11, 16+15}, /* IdSel  6, slot 0, J29 */
+10 −10
Original line number Original line Diff line number Diff line
@@ -356,7 +356,7 @@ clipper_init_irq(void)
 *  10	 64 bit PCI option slot 3 (not bus 0)
 *  10	 64 bit PCI option slot 3 (not bus 0)
 */
 */


static int __init
static int
isa_irq_fixup(const struct pci_dev *dev, int irq)
isa_irq_fixup(const struct pci_dev *dev, int irq)
{
{
	u8 irq8;
	u8 irq8;
@@ -372,10 +372,10 @@ isa_irq_fixup(const struct pci_dev *dev, int irq)
	return irq8 & 0xf;
	return irq8 & 0xf;
}
}


static int __init
static int
dp264_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
dp264_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
{
{
	static char irq_tab[6][5] __initdata = {
	static char irq_tab[6][5] = {
		/*INT    INTA   INTB   INTC   INTD */
		/*INT    INTA   INTB   INTC   INTD */
		{    -1,    -1,    -1,    -1,    -1}, /* IdSel 5 ISA Bridge */
		{    -1,    -1,    -1,    -1,    -1}, /* IdSel 5 ISA Bridge */
		{ 16+ 3, 16+ 3, 16+ 2, 16+ 2, 16+ 2}, /* IdSel 6 SCSI builtin*/
		{ 16+ 3, 16+ 3, 16+ 2, 16+ 2, 16+ 2}, /* IdSel 6 SCSI builtin*/
@@ -394,10 +394,10 @@ dp264_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
	return isa_irq_fixup(dev, irq);
	return isa_irq_fixup(dev, irq);
}
}


static int __init
static int
monet_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
monet_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
{
{
	static char irq_tab[13][5] __initdata = {
	static char irq_tab[13][5] = {
		/*INT    INTA   INTB   INTC   INTD */
		/*INT    INTA   INTB   INTC   INTD */
		{    45,    45,    45,    45,    45}, /* IdSel 3 21143 PCI1 */
		{    45,    45,    45,    45,    45}, /* IdSel 3 21143 PCI1 */
		{    -1,    -1,    -1,    -1,    -1}, /* IdSel 4 unused */
		{    -1,    -1,    -1,    -1,    -1}, /* IdSel 4 unused */
@@ -423,7 +423,7 @@ monet_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
	return isa_irq_fixup(dev, COMMON_TABLE_LOOKUP);
	return isa_irq_fixup(dev, COMMON_TABLE_LOOKUP);
}
}


static u8 __init
static u8
monet_swizzle(struct pci_dev *dev, u8 *pinp)
monet_swizzle(struct pci_dev *dev, u8 *pinp)
{
{
	struct pci_controller *hose = dev->sysdata;
	struct pci_controller *hose = dev->sysdata;
@@ -456,10 +456,10 @@ monet_swizzle(struct pci_dev *dev, u8 *pinp)
	return slot;
	return slot;
}
}


static int __init
static int
webbrick_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
webbrick_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
{
{
	static char irq_tab[13][5] __initdata = {
	static char irq_tab[13][5] = {
		/*INT    INTA   INTB   INTC   INTD */
		/*INT    INTA   INTB   INTC   INTD */
		{    -1,    -1,    -1,    -1,    -1}, /* IdSel 7 ISA Bridge */
		{    -1,    -1,    -1,    -1,    -1}, /* IdSel 7 ISA Bridge */
		{    -1,    -1,    -1,    -1,    -1}, /* IdSel 8 unused */
		{    -1,    -1,    -1,    -1,    -1}, /* IdSel 8 unused */
@@ -478,10 +478,10 @@ webbrick_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
	return isa_irq_fixup(dev, COMMON_TABLE_LOOKUP);
	return isa_irq_fixup(dev, COMMON_TABLE_LOOKUP);
}
}


static int __init
static int
clipper_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
clipper_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
{
{
	static char irq_tab[7][5] __initdata = {
	static char irq_tab[7][5] = {
		/*INT    INTA   INTB   INTC   INTD */
		/*INT    INTA   INTB   INTC   INTD */
		{ 16+ 8, 16+ 8, 16+ 9, 16+10, 16+11}, /* IdSel 1 slot 1 */
		{ 16+ 8, 16+ 8, 16+ 9, 16+10, 16+11}, /* IdSel 1 slot 1 */
		{ 16+12, 16+12, 16+13, 16+14, 16+15}, /* IdSel 2 slot 2 */
		{ 16+12, 16+12, 16+13, 16+14, 16+15}, /* IdSel 2 slot 2 */
+2 −2
Original line number Original line Diff line number Diff line
@@ -167,10 +167,10 @@ eb64p_init_irq(void)
 * comes in on.  This makes interrupt processing much easier.
 * comes in on.  This makes interrupt processing much easier.
 */
 */


static int __init
static int
eb64p_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
eb64p_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
{
{
	static char irq_tab[5][5] __initdata = {
	static char irq_tab[5][5] = {
		/*INT  INTA  INTB  INTC   INTD */
		/*INT  INTA  INTB  INTC   INTD */
		{16+7, 16+7, 16+7, 16+7,  16+7},  /* IdSel 5,  slot ?, ?? */
		{16+7, 16+7, 16+7, 16+7,  16+7},  /* IdSel 5,  slot ?, ?? */
		{16+0, 16+0, 16+2, 16+4,  16+9},  /* IdSel 6,  slot ?, ?? */
		{16+0, 16+0, 16+2, 16+4,  16+9},  /* IdSel 6,  slot ?, ?? */
+2 −2
Original line number Original line Diff line number Diff line
@@ -141,7 +141,7 @@ eiger_init_irq(void)
	}
	}
}
}


static int __init
static int
eiger_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
eiger_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
{
{
	u8 irq_orig;
	u8 irq_orig;
@@ -158,7 +158,7 @@ eiger_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
	return irq_orig - 0x80;
	return irq_orig - 0x80;
}
}


static u8 __init
static u8
eiger_swizzle(struct pci_dev *dev, u8 *pinp)
eiger_swizzle(struct pci_dev *dev, u8 *pinp)
{
{
	struct pci_controller *hose = dev->sysdata;
	struct pci_controller *hose = dev->sysdata;
Loading