I have successfully used this code with an 18F2221 and it worked fine, and as far as I can tell everything is configured to work with the 18F4620 but I can not get usable results from the CCP2 input. CCP1 works fine and I'm using the same configs and pulse on both pins. It successfully interrupts but the value returned is always 65,534 regardless of the pulse length. I'm sure I'm missing a config somewhere, but could use some help finding it.

Code:
'****************************************************************
'*  Version : 1.0  PIC18F4620 11/18/2015   (Works on 18F2221)   *
'*  Notes   : proto board 1 testing                             *
'*          : pulse input on CCP1 works fine                    *
'*          : pulse input on CCP2 does not work, shows 65,534   *
'****************************************************************
OSCCON=%01110000            ' SET TO 8 MHZ internal oscillator
DEFINE OSC 08               ' 8MHZ clock speed 
DEFINE INTHAND X_CCP_INT    ' Declare interrupt handler
ADCON1 = 15                 ' All digital (AN0-AN3 will be used)
CMCON = 7                   ' Turns off comparators 

define LCD_COMMANDUS 1500   ' set command delay in us
define LCD_DATAUS 50        ' set data delay in us
define LCD_DREG PORTD       ' set LCD data port
define LCD_DBIT 4           ' set LCD starting data bit
define LCD_RSREG PORTD      ' define RS port
define LCD_RSBIT 2          ' define RS bit
define LCD_EREG PORTD       ' set LCD ENABLE port
define LCD_EBIT 3           ' set LCD ENABLE bit
define LCD_BITS 4           ' set LCD bits 4 or 8
define LCD_LINES 2          ' set # of LCD rows 2 or 4     

Symbol Capture   = PIR1.2      ' CCP1 capture flag
SYMBOL CapIE     = PIE1.2      ' CCP1 interrupt enable bit
SYMBOL CapPriEn  = IPR1.2      ' priority enable bit for CCP1 interrupt
SYMBOL PriEnable = RCON.7      ' set to enable priority levels on interrupts  
_T1             VAR WORD BANKA SYSTEM  ' 1st capture value
PW              VAR WORD BANKA SYSTEM  ' 2nd capture value & ultimately final pulse width
CF              VAR BYTE BANKA SYSTEM  ' indicates when last capture is ready
Period          var word
Symbol Capture2   = PIR2.0      ' CCP2 capture flag
SYMBOL CapIE2     = PIE2.0      ' CCP2 interrupt enable bit
SYMBOL CapPriEn2  = IPR2.0      ' priority enable bit for CCP2 interrupt
_T2             VAR WORD BANKA SYSTEM  ' 1st capture value
PW2             VAR WORD BANKA SYSTEM  ' 2nd capture value & ultimately final pulse width
CF2             VAR BYTE BANKA SYSTEM  ' indicates when last capture is ready
Period2         var word

pause 500
LCDOUT $FE,1

CLEAR                  ' clear RAM on POR
TRISC.2 = 1            ' CCP1 input pin (Capture1 input on 18F4620)
TRISC.1 = 1            ' CCP2 input pin (Capture2 input on 18F4620)
INTCON  = 0            ' Interrupts off for now
GOTO start             ' jump over interrupt handler

ASM
X_CCP_INT
  BTFSC PIR1,2          ; if ccp1
  BRA CCP_INT           ; goto CCP_INT
  BTFSC PIR2,0          ; if ccp2
  BRA CCP2_INT          ; goto CCP2_INT
  RETFIE FAST           ; outta here 
CCP_INT
  BTFSS CCP1CON,0       ; capture from rising edge?
  BRA Fall              ; no .. goto falling edge
  MOVFF CCPR1L, _T1     ; get low capture byte into _T1
  MOVFF CCPR1H, _T1+1   ; get high capture byte into _T1
  BRA IntExit           ; outta here
Fall
  MOVFF CCPR1L, PW      ; get low capture byte into PW
  MOVFF CCPR1H, PW+1    ; get high capture byte into PW
  BSF CF,0              ; indicate last capture
IntExit
  BTG CCP1CON,0         ; toggle between rising/falling edge captures
  BCF PIR1,2            ; clear capture interrupt flag bit
  RETFIE FAST           ; return/restore W, STATUS and BSR
CCP2_INT
  BTFSS CCP2CON,0       ; capture from rising edge?
  BRA Fall2             ; no .. goto falling edge
  MOVFF CCPR2L, _T2     ; get low capture byte into _T1
  MOVFF CCPR2H, _T2+1   ; get high capture byte into _T1
  BRA IntExit2          ; outta here
Fall2
  MOVFF CCPR2L, PW2     ; get low capture byte into PW
  MOVFF CCPR2H, PW2+1   ; get high capture byte into PW
  BSF CF2,0             ; indicate last capture
IntExit2
  BTG CCP2CON,0         ; toggle between rising/falling edge captures
  BCF PIR2,0            ; clear capture interrupt flag bit
  RETFIE FAST           ; return/restore W, STATUS and BSR
ENDASM

start: 
'******************** CCP1 / CCP2 / Timer 1 ********************
CCP1CON = %00000110    'Capture mode, capture on 4th rising edge
CCP2CON = %00000110    'Capture mode, capture on 4th rising edge
T1CON.7=1              'Enable timer  16 bit `   
T1CON.6=1              'Timer1 OSC
T1CON.5=1              '1:8 prescaler   
T1CON.4=1              '1:8 prescaler   
T1CON.3=0              'Timer1 OSC off
T1CON.2=0              'sychro clock
T1CON.1=0              'Internal clock
TMR1H = 0              'Clear high byte of TMR1 counter
TMR1L = 0              'Clear low byte
PriEnable = 1          'Enable priority levels on interrupts
Capture = 0            'Clear capture flag bit
Capture2 = 0           'Clear capture flag bit
CapPriEn = 1           'Set CCP1 int to high priority
CapPriEn2 = 1          'Set CCP2 int to high priority
CapIE = 1              'Enable the CCP1 capture interrupt
CapIE2 = 1             'Enable the CCP2 capture interrupt
INTCON = %11000000     'Global + peripheral ints enabled
T1CON.0 = 1            'Turn TMR1 on here

main:
IF CF.0 THEN         
  period = PW-_T1  
  CF.0 = 0          
ENDIF
      
IF CF2.0 THEN         
  period2 = PW2-_T2  
  CF2.0 = 0          
ENDIF

lcdout $fe, $80, "CCP1= ", dec5 period
lcdout $fe, $C0, "CCP2= ", dec5 period2
 
goto main
end