Beispiel #1
0
/**
 * @ingroup SPI-LCD
 *
 * @param device_info
 */
void bw_spi_lcd_cls(const device_info_t *device_info) {
	char cmd[] = { (char) 0x00, (char) BW_PORT_WRITE_CLEAR_SCREEN, (char) ' ' };
	cmd[0] = (char) device_info->slave_address;

	lcd_spi_setup(device_info);
	FUNC_PREFIX(spi_writenb(cmd, sizeof(cmd) / sizeof(cmd[0])));
	udelay(BW_LCD_SPI_BYTE_WAIT_US);
}
Beispiel #2
0
/**
 * @ingroup SPI-LCD
 *
 * @param device_info
 * @param line
 * @param pos
 */
void bw_spi_lcd_set_cursor(const device_info_t *device_info, const uint8_t line, const uint8_t pos) {
	char cmd[] = { (char) 0x00, (char) BW_PORT_WRITE_MOVE_CURSOR, (char) 0x00 };
	cmd[0] = (char) device_info->slave_address;
	cmd[2] = (char) (((line & 0x03) << 5) | (pos & 0x1f));

	lcd_spi_setup(device_info);
	FUNC_PREFIX(spi_writenb(cmd, sizeof(cmd) / sizeof(cmd[0])));
	udelay(BW_LCD_SPI_BYTE_WAIT_US);
}
Beispiel #3
0
/**
 * @ingroup SPI-LCD
 *
 * @param device_info
 * @param value
 */
void bw_spi_lcd_get_contrast(const device_info_t *device_info, uint8_t *value) {
	char cmd[] = { (char) 0x00, (char) BW_PORT_READ_CURRENT_CONTRAST, (char) 0x00 };
	cmd[0] = (char) (device_info->slave_address | 1);

	lcd_spi_setup(device_info);
	FUNC_PREFIX(spi_transfern(cmd, sizeof(cmd) / sizeof(char)));
	udelay(BW_LCD_SPI_BYTE_WAIT_US);
	*value = (uint8_t)cmd[2];
}
Beispiel #4
0
/**
 * @ingroup SPI-LCD
 *
 * @param device_info
 * @param value
 */
void bw_spi_lcd_set_backlight(const device_info_t *device_info,	const uint8_t value) {
	char cmd[] = { (char) 0x00, (char) BW_PORT_WRITE_SET_BACKLIGHT, (char) 0x00 };
	cmd[0] = (char) device_info->slave_address;
	cmd[2] = (char) value;

	lcd_spi_setup(device_info);
	FUNC_PREFIX(spi_writenb(cmd, sizeof(cmd) / sizeof(cmd[0])));
	udelay(BW_LCD_SPI_BYTE_WAIT_US);
}
Beispiel #5
0
/**
 * @ingroup SPI-LCD
 *
 * @param device_info
 * @param text
 * @param length
 */
void bw_spi_lcd_text(const device_info_t *device_info, const char *text, uint8_t length) {
	char data[BW_LCD_MAX_CHARACTERS + 2];
	uint8_t i;

	data[0] = (char) device_info->slave_address;
	data[1] = (char) BW_PORT_WRITE_DISPLAY_DATA;

	if (length > BW_LCD_MAX_CHARACTERS)
		length = BW_LCD_MAX_CHARACTERS;

	for (i = 0; i < length; i++)
		data[i + 2] = text[i];

	lcd_spi_setup(device_info);
	FUNC_PREFIX(spi_writenb(data, length + 2));
	udelay(BW_LCD_SPI_BYTE_WAIT_US);
}
/*!
 * This function is called whenever the SPI slave device is detected.
 *
 * @param	spi	the SPI slave device
 *
 * @return 	Returns 0 on SUCCESS and error on FAILURE.
 */
static int __devinit lcd_spi_probe(struct spi_device *spi)
{
	int i;
	struct mxc_lcd_platform_data *plat = spi->dev.platform_data;
	lcd_spi = spi;
	
	lcd_24bpp_ioinit();
	
	if (plat) {
		io_reg = regulator_get(&spi->dev, plat->io_reg);
		if (!IS_ERR(io_reg)) {
			regulator_set_voltage(io_reg, 1800000);
			regulator_enable(io_reg);
		}
		core_reg = regulator_get(&spi->dev, plat->core_reg);
		if (!IS_ERR(core_reg)) {
			regulator_set_voltage(core_reg, 2800000);
			regulator_enable(core_reg);
		}

		lcd_reset = plat->reset;
		if (lcd_reset)
			lcd_reset();
	}
	
	lcd_spi_setup(lcd_spi);

	for (i = 0; i < num_registered_fb; i++) {
		if (strcmp(registered_fb[i]->fix.id, "DISP3 BG") == 0) {
			lcd_init_fb(registered_fb[i]);
			fb_show_logo(registered_fb[i], 0);
			lcd_poweron(); 
		}
	}

	fb_register_client(&nb);

	return 0;
}