diff options
| author | Detlev Zundel <dzu@denx.de> | 2009-08-05 18:37:44 +0200 | 
|---|---|---|
| committer | Wolfgang Denk <wd@denx.de> | 2009-08-09 23:01:07 +0200 | 
| commit | 0b40bd439a33bde9e3cccf1acb5744225d0c6103 (patch) | |
| tree | 11ad6b22d75277c59391ac762e406da04678e966 | |
| parent | 0bf00750e082a004e5fb058925622ae72890cc56 (diff) | |
| download | olio-uboot-2014.01-0b40bd439a33bde9e3cccf1acb5744225d0c6103.tar.xz olio-uboot-2014.01-0b40bd439a33bde9e3cccf1acb5744225d0c6103.zip | |
digsy_mtc: Add delay in SPI transfers to the companion controller.
While at it, remove initialization of variables which will be set
before usage in all cases.
Signed-off-by: Detlev Zundel <dzu@denx.de>
| -rw-r--r-- | board/digsy_mtc/cmd_mtc.c | 47 | 
1 files changed, 27 insertions, 20 deletions
| diff --git a/board/digsy_mtc/cmd_mtc.c b/board/digsy_mtc/cmd_mtc.c index c9faa015d..aa3961153 100644 --- a/board/digsy_mtc/cmd_mtc.c +++ b/board/digsy_mtc/cmd_mtc.c @@ -44,6 +44,19 @@ static const char *led_names[] = {  	""  }; +static int msp430_xfer(const void *dout, void *din) +{ +	int err; + +	err = spi_xfer(NULL, MTC_TRANSFER_SIZE, dout, din, +		       SPI_XFER_BEGIN | SPI_XFER_END); + +	/* The MSP chip needs time to ready itself for the next command */ +	udelay(1000); + +	return err; +} +  static void mtc_calculate_checksum(tx_msp_cmd *packet)  {  	int i; @@ -59,7 +72,7 @@ static int do_mtc_led(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])  {  	tx_msp_cmd pcmd;  	rx_msp_cmd prx; -	int err = 0; +	int err;  	int i;  	if (argc < 2) { @@ -102,8 +115,7 @@ static int do_mtc_led(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])  		pcmd.cmd_val2 = 0;  	mtc_calculate_checksum(&pcmd); -	err = spi_xfer(NULL, MTC_TRANSFER_SIZE, &pcmd, &prx, -		       SPI_XFER_BEGIN | SPI_XFER_END); +	err = msp430_xfer(&pcmd, &prx);  	return err;  } @@ -112,7 +124,7 @@ static int do_mtc_key(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])  {  	tx_msp_cmd pcmd;  	rx_msp_cmd prx; -	int err = 0; +	int err;  	memset(&pcmd, 0, sizeof(pcmd));  	memset(&prx, 0, sizeof(prx)); @@ -120,8 +132,7 @@ static int do_mtc_key(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])  	pcmd.cmd = CMD_GET_VIM;  	mtc_calculate_checksum(&pcmd); -	err = spi_xfer(NULL, MTC_TRANSFER_SIZE, &pcmd, &prx, -		       SPI_XFER_BEGIN | SPI_XFER_END); +	err = msp430_xfer(&pcmd, &prx);  	if (!err) {  		/* function returns '0' if key is pressed */ @@ -135,7 +146,7 @@ static int do_mtc_digout(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])  {  	tx_msp_cmd pcmd;  	rx_msp_cmd prx; -	int err = 0; +	int err;  	uchar channel_mask = 0;  	if (argc < 3) { @@ -155,8 +166,7 @@ static int do_mtc_digout(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])  	pcmd.user_out = channel_mask;  	mtc_calculate_checksum(&pcmd); -	err = spi_xfer(NULL, MTC_TRANSFER_SIZE, &pcmd, &prx, -		       SPI_XFER_BEGIN | SPI_XFER_END); +	err = msp430_xfer(&pcmd, &prx);  	return err;  } @@ -165,7 +175,7 @@ static int do_mtc_digin(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])  {  	tx_msp_cmd pcmd;  	rx_msp_cmd prx; -	int err = 0; +	int err;  	uchar channel_num = 0;  	if (argc < 2) { @@ -185,8 +195,7 @@ static int do_mtc_digin(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])  	pcmd.cmd = CMD_GET_VIM;  	mtc_calculate_checksum(&pcmd); -	err = spi_xfer(NULL, MTC_TRANSFER_SIZE, &pcmd, &prx, -		       SPI_XFER_BEGIN | SPI_XFER_END); +	err = msp430_xfer(&pcmd, &prx);  	if (!err) {  		/* function returns '0' when digin is on */ @@ -213,8 +222,8 @@ static int do_mtc_appreg(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])  	pcmd.cmd_val2 = 0;	/* =0 means read appreg */  	mtc_calculate_checksum(&pcmd); -	err = spi_xfer(NULL, MTC_TRANSFER_SIZE, &pcmd, &prx, -		       SPI_XFER_BEGIN | SPI_XFER_END); +	err = msp430_xfer(&pcmd, &prx); +  	if (!err) {  		sprintf(buf, "%d", prx.ack2);  		setenv("appreg", buf); @@ -227,7 +236,7 @@ static int do_mtc_version(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])  {  	tx_msp_cmd pcmd;  	rx_msp_cmd prx; -	int err = 0; +	int err;  	memset(&pcmd, 0, sizeof(pcmd));  	memset(&prx, 0, sizeof(prx)); @@ -235,8 +244,7 @@ static int do_mtc_version(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])  	pcmd.cmd = CMD_FW_VERSION;  	mtc_calculate_checksum(&pcmd); -	err = spi_xfer(NULL, MTC_TRANSFER_SIZE, &pcmd, &prx, -		       SPI_XFER_BEGIN | SPI_XFER_END); +	err = msp430_xfer(&pcmd, &prx);  	if (!err) {  		printf("FW V%d.%d.%d / HW %d\n", @@ -250,7 +258,7 @@ static int do_mtc_state(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])  {  	tx_msp_cmd pcmd;  	rx_msp_cmd prx; -	int err = 0; +	int err;  	memset(&pcmd, 0, sizeof(pcmd));  	memset(&prx, 0, sizeof(prx)); @@ -259,8 +267,7 @@ static int do_mtc_state(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])  	pcmd.cmd_val2 = 1;  	mtc_calculate_checksum(&pcmd); -	err = spi_xfer(NULL, MTC_TRANSFER_SIZE, &pcmd, &prx, -		       SPI_XFER_BEGIN | SPI_XFER_END); +	err = msp430_xfer(&pcmd, &prx);  	if (!err) {  		printf("State     %02Xh\n", prx.state); |