diff options
author | Ganesan Ramalingam <ganesanr@broadcom.com> | 2015-01-07 06:28:36 -0500 |
---|---|---|
committer | Ralf Baechle <ralf@linux-mips.org> | 2015-04-01 11:21:53 -0400 |
commit | c982232a3c3627d5735fbc1be0ed9a77bf8e3de1 (patch) | |
tree | 841b8f1633bee385103dd291affccfa4c5b34196 /arch/mips/netlogic | |
parent | 94e2b96ecea3ee2a3cbd5147fa380e05a6c4b4bc (diff) |
MIPS: Netlogic: Add irq mapping and setup for XHCI port 3
Add support for third XHCI port in XLPII processors.
Signed-off-by: Ganesan Ramalingam <ganesanr@broadcom.com>
Signed-off-by: Jayachandran C <jchandra@broadcom.com>
Cc: linux-mips@linux-mips.org
Patchwork: https://patchwork.linux-mips.org/patch/8895/
Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
Diffstat (limited to 'arch/mips/netlogic')
-rw-r--r-- | arch/mips/netlogic/xlp/nlm_hal.c | 2 | ||||
-rw-r--r-- | arch/mips/netlogic/xlp/usb-init-xlp2.c | 10 |
2 files changed, 11 insertions, 1 deletions
diff --git a/arch/mips/netlogic/xlp/nlm_hal.c b/arch/mips/netlogic/xlp/nlm_hal.c index c6c31e3c0949..8d743d08fd73 100644 --- a/arch/mips/netlogic/xlp/nlm_hal.c +++ b/arch/mips/netlogic/xlp/nlm_hal.c | |||
@@ -75,6 +75,8 @@ static int xlp9xx_irq_to_irt(int irq) | |||
75 | return 114; | 75 | return 114; |
76 | case PIC_9XX_XHCI_1_IRQ: | 76 | case PIC_9XX_XHCI_1_IRQ: |
77 | return 115; | 77 | return 115; |
78 | case PIC_9XX_XHCI_2_IRQ: | ||
79 | return 116; | ||
78 | case PIC_UART_0_IRQ: | 80 | case PIC_UART_0_IRQ: |
79 | return 133; | 81 | return 133; |
80 | case PIC_UART_1_IRQ: | 82 | case PIC_UART_1_IRQ: |
diff --git a/arch/mips/netlogic/xlp/usb-init-xlp2.c b/arch/mips/netlogic/xlp/usb-init-xlp2.c index 17ade1ce5dfd..2524939a5e3a 100644 --- a/arch/mips/netlogic/xlp/usb-init-xlp2.c +++ b/arch/mips/netlogic/xlp/usb-init-xlp2.c | |||
@@ -128,6 +128,9 @@ static void xlp9xx_usb_ack(struct irq_data *data) | |||
128 | case PIC_9XX_XHCI_1_IRQ: | 128 | case PIC_9XX_XHCI_1_IRQ: |
129 | port_addr = nlm_xlpii_get_usb_regbase(node, 2); | 129 | port_addr = nlm_xlpii_get_usb_regbase(node, 2); |
130 | break; | 130 | break; |
131 | case PIC_9XX_XHCI_2_IRQ: | ||
132 | port_addr = nlm_xlpii_get_usb_regbase(node, 3); | ||
133 | break; | ||
131 | default: | 134 | default: |
132 | pr_err("No matching USB irq %d node %d!\n", irq, node); | 135 | pr_err("No matching USB irq %d node %d!\n", irq, node); |
133 | return; | 136 | return; |
@@ -222,14 +225,16 @@ static int __init nlm_platform_xlpii_usb_init(void) | |||
222 | } | 225 | } |
223 | 226 | ||
224 | /* XLP 9XX, multi-node */ | 227 | /* XLP 9XX, multi-node */ |
225 | pr_info("Initializing 9XX USB Interface\n"); | 228 | pr_info("Initializing 9XX/5XX USB Interface\n"); |
226 | for (node = 0; node < NLM_NR_NODES; node++) { | 229 | for (node = 0; node < NLM_NR_NODES; node++) { |
227 | if (!nlm_node_present(node)) | 230 | if (!nlm_node_present(node)) |
228 | continue; | 231 | continue; |
229 | nlm_xlpii_usb_hw_reset(node, 1); | 232 | nlm_xlpii_usb_hw_reset(node, 1); |
230 | nlm_xlpii_usb_hw_reset(node, 2); | 233 | nlm_xlpii_usb_hw_reset(node, 2); |
234 | nlm_xlpii_usb_hw_reset(node, 3); | ||
231 | nlm_set_pic_extra_ack(node, PIC_9XX_XHCI_0_IRQ, xlp9xx_usb_ack); | 235 | nlm_set_pic_extra_ack(node, PIC_9XX_XHCI_0_IRQ, xlp9xx_usb_ack); |
232 | nlm_set_pic_extra_ack(node, PIC_9XX_XHCI_1_IRQ, xlp9xx_usb_ack); | 236 | nlm_set_pic_extra_ack(node, PIC_9XX_XHCI_1_IRQ, xlp9xx_usb_ack); |
237 | nlm_set_pic_extra_ack(node, PIC_9XX_XHCI_2_IRQ, xlp9xx_usb_ack); | ||
233 | } | 238 | } |
234 | return 0; | 239 | return 0; |
235 | } | 240 | } |
@@ -253,6 +258,9 @@ static void nlm_xlp9xx_usb_fixup_final(struct pci_dev *dev) | |||
253 | case 0x22: | 258 | case 0x22: |
254 | dev->irq = nlm_irq_to_xirq(node, PIC_9XX_XHCI_1_IRQ); | 259 | dev->irq = nlm_irq_to_xirq(node, PIC_9XX_XHCI_1_IRQ); |
255 | break; | 260 | break; |
261 | case 0x23: | ||
262 | dev->irq = nlm_irq_to_xirq(node, PIC_9XX_XHCI_2_IRQ); | ||
263 | break; | ||
256 | } | 264 | } |
257 | } | 265 | } |
258 | 266 | ||