Some garage door openers (mainly newer ones) use rolling security codes. In order for me to get mine to work, I first had to "seed" the system by programming a garage door remote. This involved hitting the "learn" button on the opener unit until a learn LED indicator started flashing and then hitting the button on the remote. Then the learn LED went steady. Then I hit the button on the remote again and the LED went off. Now the remote is programmed and synced to the opener.
Next I then used the remote to seed the HomeLink system in the Jeep. I did this by following the "dumb" programming procedure which involves first holding down the button on the remote and then holding down the button on the Jeep's HomeLink system until the HomeLink indicator LED starts flashing. Now the HomeLink is seeded and can be programmed to sync with the rolling code.
The final step is the same as programming the remote. First you hit the "learn" button on the opener unit and wait for the learn indicator to flash. Then you go to the Jeep and hold down the HomeLink button. The learn indicator on the opener should go steady but of course you probably won't see this as you're inside the vehicle. So if you want to verify that this happens then have another person observe the opener. Then you have to release and push the HomeLink button again in order to "confirm" and end the programming procedure. The "learn" indicator should go out at this point.
If you have multiple garage door openers then pay attention as to which one gets programmed to which door. I have two openers and to make it easy, on all my HomeLink equipped vehicles I simply go from left to right with the left door being door one linked to operate with HomeLink button #1 and right as door two linked to operate with HomeLink button #2.
Note - do not park the Jeep directly under the door since this procedure will most likely result in the door going up and down.