diff options
Diffstat (limited to 'drivers/media/dvb/b2c2/flexcop.c')
-rw-r--r-- | drivers/media/dvb/b2c2/flexcop.c | 29 |
1 files changed, 21 insertions, 8 deletions
diff --git a/drivers/media/dvb/b2c2/flexcop.c b/drivers/media/dvb/b2c2/flexcop.c index 2df1b0214dcd..b1e8c99f469b 100644 --- a/drivers/media/dvb/b2c2/flexcop.c +++ b/drivers/media/dvb/b2c2/flexcop.c | |||
@@ -86,7 +86,8 @@ static int flexcop_dvb_init(struct flexcop_device *fc) | |||
86 | fc->demux.stop_feed = flexcop_dvb_stop_feed; | 86 | fc->demux.stop_feed = flexcop_dvb_stop_feed; |
87 | fc->demux.write_to_decoder = NULL; | 87 | fc->demux.write_to_decoder = NULL; |
88 | 88 | ||
89 | if ((ret = dvb_dmx_init(&fc->demux)) < 0) { | 89 | ret = dvb_dmx_init(&fc->demux); |
90 | if (ret < 0) { | ||
90 | err("dvb_dmx failed: error %d", ret); | 91 | err("dvb_dmx failed: error %d", ret); |
91 | goto err_dmx; | 92 | goto err_dmx; |
92 | } | 93 | } |
@@ -96,32 +97,42 @@ static int flexcop_dvb_init(struct flexcop_device *fc) | |||
96 | fc->dmxdev.filternum = fc->demux.feednum; | 97 | fc->dmxdev.filternum = fc->demux.feednum; |
97 | fc->dmxdev.demux = &fc->demux.dmx; | 98 | fc->dmxdev.demux = &fc->demux.dmx; |
98 | fc->dmxdev.capabilities = 0; | 99 | fc->dmxdev.capabilities = 0; |
99 | if ((ret = dvb_dmxdev_init(&fc->dmxdev, &fc->dvb_adapter)) < 0) { | 100 | ret = dvb_dmxdev_init(&fc->dmxdev, &fc->dvb_adapter); |
101 | if (ret < 0) { | ||
100 | err("dvb_dmxdev_init failed: error %d", ret); | 102 | err("dvb_dmxdev_init failed: error %d", ret); |
101 | goto err_dmx_dev; | 103 | goto err_dmx_dev; |
102 | } | 104 | } |
103 | 105 | ||
104 | if ((ret = fc->demux.dmx.add_frontend(&fc->demux.dmx, &fc->hw_frontend)) < 0) { | 106 | ret = fc->demux.dmx.add_frontend(&fc->demux.dmx, &fc->hw_frontend); |
107 | if (ret < 0) { | ||
105 | err("adding hw_frontend to dmx failed: error %d", ret); | 108 | err("adding hw_frontend to dmx failed: error %d", ret); |
106 | goto err_dmx_add_hw_frontend; | 109 | goto err_dmx_add_hw_frontend; |
107 | } | 110 | } |
108 | 111 | ||
109 | fc->mem_frontend.source = DMX_MEMORY_FE; | 112 | fc->mem_frontend.source = DMX_MEMORY_FE; |
110 | if ((ret = fc->demux.dmx.add_frontend(&fc->demux.dmx, &fc->mem_frontend)) < 0) { | 113 | ret = fc->demux.dmx.add_frontend(&fc->demux.dmx, &fc->mem_frontend); |
114 | if (ret < 0) { | ||
111 | err("adding mem_frontend to dmx failed: error %d", ret); | 115 | err("adding mem_frontend to dmx failed: error %d", ret); |
112 | goto err_dmx_add_mem_frontend; | 116 | goto err_dmx_add_mem_frontend; |
113 | } | 117 | } |
114 | 118 | ||
115 | if ((ret = fc->demux.dmx.connect_frontend(&fc->demux.dmx, &fc->hw_frontend)) < 0) { | 119 | ret = fc->demux.dmx.connect_frontend(&fc->demux.dmx, &fc->hw_frontend); |
120 | if (ret < 0) { | ||
116 | err("connect frontend failed: error %d", ret); | 121 | err("connect frontend failed: error %d", ret); |
117 | goto err_connect_frontend; | 122 | goto err_connect_frontend; |
118 | } | 123 | } |
119 | 124 | ||
120 | dvb_net_init(&fc->dvb_adapter, &fc->dvbnet, &fc->demux.dmx); | 125 | ret = dvb_net_init(&fc->dvb_adapter, &fc->dvbnet, &fc->demux.dmx); |
126 | if (ret < 0) { | ||
127 | err("dvb_net_init failed: error %d", ret); | ||
128 | goto err_net; | ||
129 | } | ||
121 | 130 | ||
122 | fc->init_state |= FC_STATE_DVB_INIT; | 131 | fc->init_state |= FC_STATE_DVB_INIT; |
123 | return 0; | 132 | return 0; |
124 | 133 | ||
134 | err_net: | ||
135 | fc->demux.dmx.disconnect_frontend(&fc->demux.dmx); | ||
125 | err_connect_frontend: | 136 | err_connect_frontend: |
126 | fc->demux.dmx.remove_frontend(&fc->demux.dmx, &fc->mem_frontend); | 137 | fc->demux.dmx.remove_frontend(&fc->demux.dmx, &fc->mem_frontend); |
127 | err_dmx_add_mem_frontend: | 138 | err_dmx_add_mem_frontend: |
@@ -254,7 +265,8 @@ int flexcop_device_initialize(struct flexcop_device *fc) | |||
254 | flexcop_hw_filter_init(fc); | 265 | flexcop_hw_filter_init(fc); |
255 | flexcop_smc_ctrl(fc, 0); | 266 | flexcop_smc_ctrl(fc, 0); |
256 | 267 | ||
257 | if ((ret = flexcop_dvb_init(fc))) | 268 | ret = flexcop_dvb_init(fc); |
269 | if (ret) | ||
258 | goto error; | 270 | goto error; |
259 | 271 | ||
260 | /* i2c has to be done before doing EEProm stuff - | 272 | /* i2c has to be done before doing EEProm stuff - |
@@ -272,7 +284,8 @@ int flexcop_device_initialize(struct flexcop_device *fc) | |||
272 | } else | 284 | } else |
273 | warn("reading of MAC address failed.\n"); | 285 | warn("reading of MAC address failed.\n"); |
274 | 286 | ||
275 | if ((ret = flexcop_frontend_init(fc))) | 287 | ret = flexcop_frontend_init(fc); |
288 | if (ret) | ||
276 | goto error; | 289 | goto error; |
277 | 290 | ||
278 | flexcop_device_name(fc,"initialization of","complete"); | 291 | flexcop_device_name(fc,"initialization of","complete"); |