$Name$
Definition in file ltv350qv.c.
#include "spi.h"
#include "pm.h"
#include <stdio.h>
#include <sys/sysregs.h>
Go to the source code of this file.
Defines | |
| #define | sysreg_read(addr) __builtin_mfsr(addr) |
| #define | sysreg_write(addr, value) __builtin_mtsr(addr, value) |
| #define | write_reg(spi, reg, val) |
Functions | |
| static unsigned int | get_count (void) |
| void | ltv350qv_power_off (volatile avr32_spi_t *spi, unsigned char chip_select) |
| Power off sequence for the dispaly. | |
| void | ltv350qv_power_on (volatile avr32_spi_t *spi, unsigned char chip_select) |
| Power on sequence for the display. | |
| static int | ltv350qv_write_reg (volatile avr32_spi_t *spi, unsigned char reg, unsigned short val) |
| Write to a display register. | |
| void | usart_print (volatile struct avr32_usart_t *usart, char *str) |
| void | usdelay (unsigned long usec) |
| Delay execution for a specificated time. | |
Variables | |
| struct avr32_usart_t * | usart |
| USART used for console output. | |
| #define sysreg_read | ( | addr | ) | __builtin_mfsr(addr) |
| #define sysreg_write | ( | addr, | |||
| value | ) | __builtin_mtsr(addr, value) |
Definition at line 53 of file ltv350qv.c.
| #define write_reg | ( | spi, | |||
| reg, | |||||
| val | ) |
Value:
do { \ ret = ltv350qv_write_reg(spi, reg, val); \ if (ret){ \ usart_print(usart, "Error spi timeout\n");\ goto out; \ }\ } while (0)
Definition at line 56 of file ltv350qv.c.
Referenced by ltv350qv_power_off(), and ltv350qv_power_on().
| static unsigned int get_count | ( | void | ) | [inline, static] |
Definition at line 68 of file ltv350qv.c.
References sysreg_read.
Referenced by usdelay().
00069 { 00070 return sysreg_read(SYSREG_COUNT); 00071 }
| void ltv350qv_power_off | ( | volatile avr32_spi_t * | spi, | |
| unsigned char | chip_select | |||
| ) |
Power off sequence for the dispaly.
| spi | Pointer to the SPI interface | |
| chip_select | Chip select number |
Definition at line 172 of file ltv350qv.c.
References spi_selectChip(), usart, usart_print(), usdelay(), and write_reg.
00173 { 00174 int ret; 00175 spi_selectChip(spi, chip_select); 00176 usart_print(usart,"ltv350qv: do power off sequence\n"); 00177 /* GON -> 0, POC -> 0 */ 00178 write_reg(spi, 9, 0x4055); 00179 /* DSC -> 0 */ 00180 write_reg(spi, 5, 0x4003); 00181 /* VCOMG -> 0 */ 00182 write_reg(spi, 10, 0x2103); 00183 00184 usdelay(1000000); 00185 00186 /* AP[2:0] -> 000 */ 00187 write_reg(spi, 9, 0x4050); 00188 00189 usart_print(usart,"ltv350qv: power off sequence done\n"); 00190 out: 00191 return; 00192 }
| void ltv350qv_power_on | ( | volatile avr32_spi_t * | spi, | |
| unsigned char | chip_select | |||
| ) |
Power on sequence for the display.
| spi | Pointer to the SPI interface | |
| chip_select | Chip select number |
Definition at line 127 of file ltv350qv.c.
References spi_selectChip(), usart, usart_print(), usdelay(), and write_reg.
Referenced by main().
00128 { 00129 int ret; 00130 00131 usart_print(usart,"ltv350qv: do power on sequence\n"); 00132 spi_selectChip(spi, chip_select); 00133 /* write startup procedure */ 00134 write_reg(spi, 9, 0x0000); 00135 usdelay(15000); 00136 write_reg(spi, 9, 0x4000); 00137 write_reg(spi, 10, 0x2000); 00138 write_reg(spi, 9, 0x4055); 00139 usdelay(55000); 00140 write_reg(spi, 1, 0x409d); 00141 write_reg(spi, 2, 0x0204); 00142 write_reg(spi, 3, 0x0100); 00143 write_reg(spi, 4, 0x3000); 00144 write_reg(spi, 5, 0x4003); 00145 write_reg(spi, 6, 0x000a); 00146 write_reg(spi, 7, 0x0021); 00147 write_reg(spi, 8, 0x0c00); 00148 write_reg(spi, 10, 0x0103); 00149 write_reg(spi, 11, 0x0301); 00150 write_reg(spi, 12, 0x1f0f); 00151 write_reg(spi, 13, 0x1f0f); 00152 write_reg(spi, 14, 0x0707); 00153 write_reg(spi, 15, 0x0307); 00154 write_reg(spi, 16, 0x0707); 00155 write_reg(spi, 17, 0x0000); 00156 write_reg(spi, 18, 0x0004); 00157 write_reg(spi, 19, 0x0000); 00158 00159 usdelay(20000); 00160 write_reg(spi, 9, 0x4a55); 00161 write_reg(spi, 5, 0x5003); 00162 00163 usart_print(usart,"ltv350qv: power on sequence done\n"); 00164 out: 00165 return; 00166 }
| static int ltv350qv_write_reg | ( | volatile avr32_spi_t * | spi, | |
| unsigned char | reg, | |||
| unsigned short | val | |||
| ) | [static] |
Write to a display register.
| spi | Pointer to the SPI interface | |
| reg | Register | |
| val | Register value |
Definition at line 97 of file ltv350qv.c.
References SPI_OK, and spi_variableSlaveWrite().
00098 { 00099 int i; 00100 unsigned char buffer[3]; 00101 00102 buffer[0] = 0x74; 00103 buffer[1] = 0x00; 00104 buffer[2] = reg & 0x7f; 00105 00106 for( i = 0; i <= 2; i++){ 00107 if( spi_variableSlaveWrite(spi, buffer[i], 1, (i == 2 ? 1 : 0)) != SPI_OK) 00108 return -1; 00109 } 00110 00111 buffer[0] = 0x76; 00112 buffer[1] = val >> 8; 00113 buffer[2] = val; 00114 00115 for( i = 0; i <= 2; i++){ 00116 if( spi_variableSlaveWrite(spi, buffer[i], 1, (i == 2 ? 1 : 0)) != SPI_OK) 00117 return -1; 00118 } 00119 return 0; 00120 }
| void usart_print | ( | volatile struct avr32_usart_t * | usart, | |
| char * | str | |||
| ) |
Definition at line 29 of file at32stk1000.c.
References usart_putchar().
Referenced by board_init(), ltv350qv_power_off(), ltv350qv_power_on(), main(), and usart_printHex().
00030 { 00031 while (*str != '\0') 00032 usart_putchar(usart, *str++); 00033 }
| void usdelay | ( | unsigned long | usec | ) |
Delay execution for a specificated time.
| usec | Delay in microseconds |
Definition at line 77 of file ltv350qv.c.
References get_count(), and pm_read_mclk().
Referenced by ltv350qv_power_off(), ltv350qv_power_on(), and main().
00078 { 00079 unsigned long start, stop; 00080 unsigned long ticks; 00081 00082 start = get_count(); 00083 ticks = usec * (pm_read_mclk() / 1000000); 00084 stop = start + ticks; 00085 00086 if (start > stop) 00087 while (get_count() > start) ; 00088 00089 while (get_count() < stop) ; 00090 }
| struct avr32_usart_t* usart |
USART used for console output.
Definition at line 130 of file lcdc_moving_bitmap_example.c.
Referenced by board_init(), init_uart_a(), ltv350qv_power_off(), ltv350qv_power_on(), and main().
1.5.3-20071008