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 [email protected].
For more options, visit https://groups.google.com/d/optout.