Now that the mystery of Hodor’s limited vocabulary has been solved, there’s much depend about his free will. If you have no idea what I’m talking about, go watched GoT or pick another entry because Holy SPOILERS Batman!
In Days of Future Past, they had to send Wolverine’s mind back in time to his old body because he was the only one who could handle the mental trauma. I think something similar happened to Wylis/Hodor. When Bram warged into past Hodor to get present Hodor moving, it created a strange time loop Wylis’s mind wasn’t meant to endure. It broke him.
His fundamental personality of being warm and kind remained and he could make very small decisions but he couldn’t calculate. When he was being tormented by the Night’s Watch Wildling Party, he couldn’t think enough to strike back. He knew to run away but not to fight back.
He knows who treats him well and, therefore, who he cares about. He wanted to protect Bram so he chose to hold the door. Had Bram not made Hodor move, Hodor would have likely been wight chow. Rather than run scared (a valid option), Hodor chose to stay and protect his friend.
The actor who played Hodor said that aside from the initial push, everything else was Hodor’s choice. You can even see it in his eyes. I firmly believe that when the end came, Hodor made the difficult and brave choice to die for his friends. Now we just have to find out whether the writers will torment us by making him a wight or not.