Commit 26d4fe14 authored by Tomasz Wlostowski's avatar Tomasz Wlostowski

kernel/fd-zio.c: initialize output registers to some meaningful values by default.

By default, outputs are disabled and programmed to 600 ns delay, 250 ns width, 1x repeat and 1 us period. This patch
allows safe read-modify-write operations.
parent aba569c4
......@@ -816,6 +816,31 @@ void fd_zio_unregister(void)
/* FIXME */
}
/* preinitializes the outputs to some meaningful register values */
static void __fd_init_outputs(struct fd_dev *fd)
{
uint32_t attrs [ FD_ATTR_OUT__LAST];
int i;
attrs [ FD_ATTR_OUT_MODE ] = FD_OUT_MODE_DISABLED;
attrs [ FD_ATTR_OUT_REP ] = 1;
attrs [ FD_ATTR_OUT_START_H ] = 0;
attrs [ FD_ATTR_OUT_START_L ] = 0;
attrs [ FD_ATTR_OUT_START_COARSE ] = 75; /* 600 ns delay */
attrs [ FD_ATTR_OUT_START_FINE ] = 0;
attrs [ FD_ATTR_OUT_END_H ] = 0;
attrs [ FD_ATTR_OUT_END_L ] = 0;
attrs [ FD_ATTR_OUT_END_COARSE ] = 75 + 31; /* 250 ns width */
attrs [ FD_ATTR_OUT_END_FINE ] = 1024;
attrs [ FD_ATTR_OUT_DELTA_L ] = 0;
attrs [ FD_ATTR_OUT_DELTA_COARSE ] = 125; /* 1us ns period */
attrs [ FD_ATTR_OUT_DELTA_FINE ] = 0;
for (i = 1; i <= 4; i++)
__fd_zio_output(fd, i, attrs);
}
/* Init and exit are called for each FD card we have */
int fd_zio_init(struct fd_dev *fd)
{
......@@ -838,6 +863,8 @@ int fd_zio_init(struct fd_dev *fd)
return err;
}
__fd_init_outputs(fd);
return 0;
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment