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; }
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; }
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; }