I haven't looked at your SERCOM configuration in detail since it's been a while since I messed with SAMD series, but you're powering on the peripheral and hooking it up to a clock, so that's good.
Two much more fundamental problems jump out, though:
1) You're calling writeData_uart with a string instead of the 8 bit uint that it expects. I think you meant to call uart_send_string. Your compiler should be giving you warnings about this.
2) You have the code that handles the UART before the main while(1) loop. That means that the only time your MCU could possible receive and respond to any UART data is the time between enabling the UART and getting to your "if" statement. At 48MHz, that's going to be a few hundred nanoseconds at absolute most, while it takes about one millisecond to transmit a single character at 9600 baud, so there's no way your MCU will ever manage to catch a character before it hits the empty while loop! You need to move the whole if() block inside the while loop.