示例#1
0
文件: lcd.c 项目: traffaillac/uC-sdk
int lcd_init(lcd_t *lcd, ssp_port_t ssp_port, pin_t cs, pin_t rs, pin_t rw, pin_t e)
{
    lcd->ssp = ssp_port.ssp;
    lcd->cs = cs;
    lcd->rs = rs;
    lcd->rw = rw;
    lcd->e = e;
    //lcd->type = COM8BITS;

    gpio_config(cs, pin_dir_write, pull_up);
    gpio_set(cs, 1);
    gpio_config(rs, pin_dir_write, pull_down);
    gpio_set(rs, 0);
    gpio_config(rw, pin_dir_write, pull_down);
    gpio_set(rw, 0);
    gpio_config(e, pin_dir_write, pull_down);    
    gpio_set(e, 0);

    ssp_config(ssp_port, 8 * 1000 * 1000);

    delay(lcd, 1000);

    lcd_clear_display(lcd);
    lcd_return_home(lcd);
    lcd_set_display(lcd,1, 1, 1);

    return 1;
}
示例#2
0
static int ad_probe(struct platform_device *pdev)
{
	struct ad7877_platform_data *pdata = pdev->dev.platform_data;
	struct ad7877 *ad;
	int ret;
	int i;

	// Initialize ad data structure.
	ad = kzalloc(sizeof(*ad), GFP_KERNEL);
	if (!ad)
		return -ENOMEM;

	init_completion(&ad->comp);

	ret = request_irq(pdata->dav_irq, davirq
			  , IRQF_DISABLED | IRQF_TRIGGER_FALLING
			  , "ad7877-dav", ad);
	if (ret) {
		kfree(ad);
		return ret;
	}

	ret = ssp_init(&ad->ssp, 1, 0);
	if (ret) {
		printk(KERN_ERR "Unable to register SSP handler!\n");
		free_irq(pdata->dav_irq, ad);
		kfree(ad);
		return ret;
	}
	platform_set_drvdata(pdev, ad);

	ssp_disable(&ad->ssp);
	ssp_config(&ad->ssp, SSCR0_DataSize(16), 0, 0, SSCR0_SerClkDiv(6));
	ssp_enable(&ad->ssp);
	initChip(ad);

	for (i = 0; i < ARRAY_SIZE(acdevs); i++) {
		acdevs[i].sense = sense;

		ret = adc_classdev_register(&pdev->dev, &acdevs[i]);
		if (ret) {
			printk("ad7877: failed to register adc class "
			       "device %s\n", acdevs[i].name);
			goto adc_cdev_register_failed;
		}
	}

	return 0;

adc_cdev_register_failed:
	while (--i >= 0)
		adc_classdev_unregister(&acdevs[i]);

	return ret;
}
示例#3
0
static int __init a716_ssp_probe(struct platform_device *pdev)
{
	int ret;

	if (!machine_is_a716()) {
		return -ENODEV;
	}

	a716_gpo_set(0x4000);

	ret = ssp_init(&a716_ssp_dev, 1, 0);

	if (ret) {
		printk(KERN_ERR "Unable to register SSP handler!\n");
		return ret;
	} else {
		ssp_disable(&a716_ssp_dev);
		ssp_config(&a716_ssp_dev, (SSCR0_National | 0x0b), 0, 0, SSCR0_SerClkDiv(36));
		ssp_enable(&a716_ssp_dev);
	}

	a716_ssp_putget(CTRL_YPOS | CTRL_START);
	mdelay(1);
	a716_ssp_putget(CTRL_Z1POS | CTRL_START);
	mdelay(1);
	a716_ssp_putget(CTRL_Z2POS | CTRL_START);
	mdelay(1);
	a716_ssp_putget(CTRL_XPOS | CTRL_START);

	init_timer(&timer_pen);
	timer_pen.function = a716_ts_timer;
	timer_pen.data = (unsigned long)NULL;

	idev = input_allocate_device();
	if (!idev)
		return -ENOMEM;

	idev->name = "ad7873";
	idev->phys = "touchscreen/ad7873";

	set_bit(EV_ABS, idev->evbit);
	set_bit(EV_KEY, idev->evbit);
	set_bit(ABS_X, idev->absbit);
	set_bit(ABS_Y, idev->absbit);
	set_bit(ABS_PRESSURE, idev->absbit);
	set_bit(BTN_TOUCH, idev->keybit);
	idev->absmax[ABS_PRESSURE] = 1;
	idev->absmin[ABS_X] = 212;
	idev->absmin[ABS_Y] = 180;
	idev->absmax[ABS_X] = 3880;
	idev->absmax[ABS_Y] = 3940;

	input_register_device(idev);

	touch_pressed = 0;
	irq_disable = 0;

	set_irq_type(IRQ_GPIO(GPIO_NR_A716_STYLUS_IRQ_N), IRQT_FALLING);
	request_irq(IRQ_GPIO(GPIO_NR_A716_STYLUS_IRQ_N), a716_stylus, SA_SAMPLE_RANDOM, "ad7873 stylus", NULL);

	return 0;
}