> +/*
> + * The configuration of device is composed of 12 steps.
> + * This function is called by the initialization process.
> + *
> + * We don't know the meaning of these steps! We only replay the USB log.
> + */
> +static int stk1135_configure_device(struct stk11xx *dev, int step)
> +{
> + int value;
> +
> + /* 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,
> + 10, 11, 12, 13 */
> +
> + const u8 values_001B[] = {
> + 0x0E, 0x03, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x07,
> + 0x07, 0x07, 0x07, 0x07
> + };
> + const u8 values_001C[] = {
> + 0x06, 0x02, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x06, 0x06,
> + 0x06, 0x06, 0x06, 0x07
> + };
> + const u8 values_0202[] = {
> + 0x1E, 0x0A, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E,
> + 0x1E, 0x1E, 0x1E, 0x1E
> + };
> + const u8 values_0110[] = {
> + 0x07, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x3E, 0x00, 0x04, 0x00,
> + 0x00, 0x00, 0x00, 0x00
> + };
> + const u8 values_0112[] = {
> + 0x07, 0x00, 0x00, 0x00, 0x00, 0x09, 0x09, 0x00, 0x04, 0x00,
> + 0x00, 0x00, 0x00, 0x00
> + };
> + const u8 values_0114[] = {
> + 0x87, 0x80, 0x80, 0x80, 0x80, 0xBE, 0xBE, 0x80, 0x84, 0x80,
> + 0x80, 0x80, 0x80, 0x80
> + };
> + const u8 values_0116[] = {
> + 0xE7, 0xE0, 0xE0, 0xE0, 0xE0, 0xE9, 0xE9, 0xE0, 0xE4, 0xE0,
> + 0xE0, 0xE0, 0xE0, 0xE0
> + };
> + const u8 values_0100[] = {
> + 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x23, 0x20,
> + 0x20, 0x20, 0x20, 0x20
> + };
> +
> + dev_dbg(&dev->udev->dev, "stk1135_configure_device: %d\n", step);
> +
> + stk11xx_write_registry(dev, 0x0000, 0x0024);
> + stk11xx_write_registry(dev, 0x0002, 0x0068);
> + stk11xx_write_registry(dev, 0x0003, 0x0080);
> + stk11xx_write_registry(dev, 0x0005, 0x0000);
> +
> + stk11xx_write_registry(dev, 0x0007, 0x0003);
> + stk11xx_write_registry(dev, 0x000d, 0x0000);
> + stk11xx_write_registry(dev, 0x000f, 0x0002);
> + stk11xx_write_registry(dev, 0x0300, 0x0012);
> + stk11xx_write_registry(dev, 0x0350, 0x0041);
> +
> + stk11xx_write_registry(dev, 0x0351, 0x0000);
> + stk11xx_write_registry(dev, 0x0352, 0x0000);
> + stk11xx_write_registry(dev, 0x0353, 0x0000);
> + stk11xx_write_registry(dev, 0x0018, 0x0010);
> + stk11xx_write_registry(dev, 0x0019, 0x0000);
> +
> + stk11xx_write_registry(dev, 0x001b, values_001B[step]);
> + stk11xx_write_registry(dev, 0x001c, values_001C[step]);
> + stk11xx_write_registry(dev, 0x0300, 0x0080);
> + stk11xx_write_registry(dev, 0x001a, 0x0004);
> + stk11xx_write_registry(dev, 0x0202, values_0202[step]);
> +
> + stk11xx_write_registry(dev, 0x0110, values_0110[step]);
> + stk11xx_write_registry(dev, 0x0111, 0x0000);
> + stk11xx_write_registry(dev, 0x0112, values_0112[step]);
> + stk11xx_write_registry(dev, 0x0113, 0x0000);
> + stk11xx_write_registry(dev, 0x0114, values_0114[step]);
> +
if possible some error checking would be nice here, if you unplug the
device you'll rely on the underlying subsystem to handle your errors I
don't think that's a good way to go.
Did you test unplugging your device while it's in use with mplayer/xawtv/..?