Perhaps you could try dropping the nap and then putting him to bed at 7pm, kids still need 12/13 hours a night, it may help him sleep through to 7am.
Have you tried blacking out the room. My son loves his sleep especially if its dark in the room. He hardly ever gets up before 7:30am and is always in bed by 7pm. And has a nap during the day!
Just a suggestion...try some background noise. My friends son used to be like that and she finally put a radio on in his bedroom during the night and he sleeps well now. Good luck.