If lcd_init() is not exiting, it's probably due to the read function (called by the write function - look in the lcd header) which checks for the LCD-BUSY flag (LCD pin data bit 7 iirc). The read function is called to make sure that the LCD has finished processing the previous command andis ready for the next character or command. If you haven't connected it properly so that the LCD-BUSY flag is never seen to go low, then the read function will be called endlessly.
Personally I don't use that method, instead just making sure enough time has passed after a write based on the LCD's datahseet. I modified CCS's code to accomplish that.
Yes, this is exactly what I'm getting as I step thru debugging: the CCS default routine keeps reading bit 7, I'm gonna try darck_khronos
snippet and post the results