// Send a command and drain the receive buffer. static u32 ssp_putget(struct ad7877 *ad, u32 data) { u32 ret; ssp_write_word(&ad->ssp, data); ssp_read_word(&ad->ssp, &ret); return ret; }
void palmtt3_tsc2101_send(int read, int command, int *values, int numval) { u32 ret; int i; GPCR0 = GPIO_bit(PALMTT3_GPIO_TSC2101_SS); ssp_write_word(&palmtt3_ssp_dev, command | read); ssp_read_word(&palmtt3_ssp_dev, &ret); /* Dummy read */ for (i = 0; i < numval; i++) { if (read) { ssp_write_word(&palmtt3_ssp_dev, 0); ssp_read_word(&palmtt3_ssp_dev, &values[i]); } else { ssp_write_word(&palmtt3_ssp_dev, values[i]); ssp_read_word(&palmtt3_ssp_dev, &ret); /* Dummy read */ } } GPSR0 = GPIO_bit(PALMTT3_GPIO_TSC2101_SS); }
signed long a716_ssp_putget(ulong data) { unsigned long flag; u32 ret; if (a716_ssp_dev.port != 1) return -ETIMEDOUT; spin_lock_irqsave(&a716_ssp_lock, flag); ssp_write_word(&a716_ssp_dev, data); ssp_read_word(&a716_ssp_dev, &ret); spin_unlock_irqrestore(&a716_ssp_lock, flag); return ret; }