hi...could you find the answer to your problem? i am facing the same issue On Sunday, January 12, 2014 11:26:44 AM UTC+5:30, Brandon Matthews wrote: > > > Hi all, I've got a real headache of a problem. First things first! > > # uname -a > Linux bbb 3.8.13-00729-g8a94e04 #1 SMP Sat Jan 11 16:48:03 PST 2014 armv7l > GNU/Linux > > After a few days of work, I'm having no luck getting the ECAP module to > generate interrupts on my BeagleBone Black running Linux. I've disabled > ECAP PWM support in the device tree, and written a brute-force style kernel > module to force register values, but I never see the interrupt come down > the line. My module performs the following steps (see below for the > resulting register values): > > - Requests an IRQ using request_irq() with line number 31 (from > section 6.3) > - Enables the module in CM_PER_EPWMSS0_CLKCTRL (8.1.12.1.36) > - Enables the clock in pwmss_ctrl (9.3.1.32) > - Muxes the ECAP0_IN_APWM_OUT pin by setting the RXACTIVE bit and mode > 0 in register conf_ecap0_in_pwm0_out (9.3.1.51) > - Clears ECEINT > - Sets ECCTL1, and ECCTL2 appropriately > - Sets the CLR bits in ECCLR > - Starts the timer by setting the TSCTRSTOP bit in ECCTL2 > - Sets all CEVTx bits in ECEINT > - Sets the "smart" idle mode in register SYSCONFIG (15.1.3.2) > - Enables the ECAP clock in CLKCONFIG (15.1.3.3) > - Checking the eCAP_CLK_EN_ACK value in CLKSTATUS for ack bits > > After doing all this, I can use a little utility that reads values of out > /dev/mem and see the following example register values: > > # ./force_int > PWMSS register values = { > IDVER: 0x47400001 > SYSCONFIG: 0x00000008 > CLKCONFIG: 0x00000111 > CLKSTATUS: 0x00000111 > } > ECAP0 register values ={ > TSCTR: 0x9225bd45 CTRPHS: 0x00000000 > CAP1: 0x004a139e CAP2: 0x068d53fe CAP3: 0x0049f5fc > CAP4: 0x0047fae1 > ECCTL1: 0x01aa ECCTL2: 0x0096 ECEINT: 0x001e > ECFLG: 0x003f ECCLR: 0x0000 ECFRC: 0x0000 > REVID: 0x44d22100 > } > > All those values look sane; TSCTR counts up, I can strobe the pin and > watch CAP values change and the ECFLG bits change correctly, but I never, > ever get an interrupt in the kernel. My /proc/interrupts looks like this: > > # !cat > cat /proc/interrupts > CPU0 > 23: 0 INTC tps65217 > 28: 1372 INTC edma > 30: 0 INTC edma_error > 31: 0 INTC ecap0 > 34: 0 INTC musb-hdrc.0.auto > 35: 1 INTC musb-hdrc.1.auto > 44: 4416 INTC mmc1 > 46: 93 INTC 4819c000.i2c > 52: 0 INTC tilcdc > 56: 0 INTC 4a100000.ethernet > 57: 2384 INTC 4a100000.ethernet > 58: 1201 INTC 4a100000.ethernet > 59: 0 INTC 4a100000.ethernet > 80: 0 INTC mmc0 > 83: 20402 INTC gp_timer > 86: 853 INTC 44e0b000.i2c > 88: 296 INTC > 91: 0 INTC rtc0 > 92: 0 INTC rtc0 > 125: 0 INTC 53100000.sham > 150: 0 GPIO mmc0 > IPI0: 0 CPU wakeup interrupts > IPI1: 0 Timer broadcast interrupts > IPI2: 0 Rescheduling interrupts > IPI3: 0 Function call interrupts > IPI4: 0 Single function call interrupts > IPI5: 0 CPU stop interrupts > Err: 0 > > As you see, I have a zero count for my ecap0 interrupt, and a zero count > for Err interrupts, but my ECFLG value indicates I should have gotten four > interrupts by now! > > I suspect, like waking up the timer modules and peripheral clocks, that > I'm just missing a crucial register value somewhere to enable the interrupt > in the controller, but I have scoured the TRM and have come up dry. > > Does anyone have a clue? I posted on TI's board but since I rolled my own > kernel based on the instructions > here<http://elinux.org/Building_BBB_Kernel#Downloading_and_building_the_Linux_Kernel>, > > I guess it's not officially supported? :( Any pointers are appreciated, > too. I don't know a thing about debugging the Linux kernel. > > -bmatt >
-- For more options, visit http://beagleboard.org/discuss --- You received this message because you are subscribed to the Google Groups "BeagleBoard" group. To unsubscribe from this group and stop receiving emails from it, send an email to beagleboard+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.