Ejemplo n.º 1
0
static void serial_omap_mdr1_errataset(struct uart_omap_port *up, u8 mdr1)
{
         u8 timeout = 255;
 
	printk("serial_omap_mdr1_errataser start\n");
         serial_out(up, UART_OMAP_MDR1, mdr1);

	 rtdm_task_sleep(2000);
         serial_out(up, UART_FCR, up->fcr | UART_FCR_CLEAR_XMIT | UART_FCR_CLEAR_RCVR);
         /*
          * Wait for FIFO to empty: when empty, RX_FIFO_E bit is 0 and
          * TX_FIFO_E bit is 1.
          */
         while (UART_LSR_THRE != (serial_in(up, UART_LSR) & (UART_LSR_THRE | UART_LSR_DR))) 
	{
                 timeout--;
                 if (!timeout) 
		 {
                         /* Should *never* happen. we warn and carry on */
                         dev_crit(up->dev, "Errata i202: timedout %x\n",serial_in(up, UART_LSR));
                         break;
                 }
		rtdm_task_sleep(1000);
         }
	 printk("serial_omap_mdr1_errataser end\n");
}
Ejemplo n.º 2
0
/* Timer task routine  */
static void loop_task_proc(void *arg)
{
	struct a4l_device *dev = (struct a4l_device*)arg;
	struct a4l_subdevice *input_subd, *output_subd;
	lpprv_t *priv = (lpprv_t *)dev->priv;

	input_subd = a4l_get_subd(dev, LOOP_INPUT_SUBD);
	output_subd = a4l_get_subd(dev, LOOP_OUTPUT_SUBD);

	if (input_subd == NULL || output_subd == NULL) {
		a4l_err(dev, "loop_task_proc: subdevices unavailable\n");
		return;
	}

	while (1) {

		int running;

		running = priv->loop_running;

		if (running) {
			uint16_t value;
			int ret=0;

			while (ret==0) {

				ret = a4l_buf_get(output_subd,
						  &value, sizeof(uint16_t));
				if (ret == 0) {

					a4l_info(dev,
						 "loop_task_proc: "
						 "data available\n");

					a4l_buf_evt(output_subd, 0);

					ret = a4l_buf_put(input_subd,
							  &value,
							  sizeof(uint16_t));

					if (ret==0)
						a4l_buf_evt(input_subd, 0);
				}
			}
		}

		rtdm_task_sleep(LOOP_TASK_PERIOD);
	}
}
Ejemplo n.º 3
0
static int rtdmtest_task(void *arg)
{
	int ret;
	nanosecs_abs_t wakeup;
	struct rttst_rtdmtest_config *config =
		(struct rttst_rtdmtest_config *)arg;

	printk("%s: started with delay=%lld\n", __FUNCTION__, task_period);
        wakeup = rtdm_clock_read();

	while (1) {
#if 0
		if ((ret = rtdm_task_sleep(task_period)))
			break;
#else
		wakeup += task_period;
		if ((ret = rtdm_task_sleep_until(wakeup)))
			break;
#endif
		//printk("%s: time=%lld\n", __FUNCTION__, rtdm_clock_read());
	}
	printk("%s terminating, ret=%d\n", __FUNCTION__, ret);
	return ret;
}