Forum Discussion
Altera_Forum
Honored Contributor
19 years agoThe ISP116x driver shipped with the kernel works OK for me (tested with 2.6.15, 2.6.16 and 2.6.17). arch/nios2nommu/kernel/usb.c needs patching though:
Index: arch/nios2nommu/kernel/usb.c =================================================================== --- arch/nios2nommu/kernel/usb.c (revision 92) +++ arch/nios2nommu/kernel/usb.c (revision 93) @@ -26,6 +26,7 @@ # include <linux/init.h> # include <linux/device.h> # include <linux/delay.h> +#include <linux/platform_device.h> # include <asm/io.h> # include <asm/irq.h> @@ -139,27 +140,14 @@ static struct isp116x_platform_data isp116x_data = { // Enable internal resistors on downstream ports .sel15Kres = 0, - // Clock cannot be stopped - .clknotstop = 1, // On-chip overcurrent protection .oc_enable = 0, // INT output polarity .int_act_high = 0, // INT edge or level triggered .int_edge_triggered = 0, - // End-of-transfer input polarity - .eot_act_high = 0, - // DREQ output polarity - .dreq_act_high = 1, - // WAKEUP pin connected - .remote_wakeup_connected= 0, // Wakeup by devices on usb bus enabled .remote_wakeup_enable = 0, - // Switch or not to switch (keep always powered) - .no_power_switching = 1, - // Ganged port power switching (0) or individual port power switching (1) - .power_switching_mode = 0, - .reset = NULL /* isp116x_reset */, .delay = isp116x_delay, }; The problem with the kernel halting is because an active HIGH level-triggered interrupt is expected, and the 116x default has an active LOW interrupt line (at least it was for me). I tried programming the interrupt polarity in the driver, but that did not help, so I ended up inverting the IRQ signal in my FPGA Image. - Atle