diff options
author | Antti Palosaari <crope@iki.fi> | 2012-06-12 15:25:01 -0400 |
---|---|---|
committer | Mauro Carvalho Chehab <mchehab@redhat.com> | 2012-08-04 06:56:30 -0400 |
commit | f093c388ef8ceff605f267ae9bc212ad98543ce6 (patch) | |
tree | 357bfa22d10d7965a4ff7a69b5fe21e33eb54650 | |
parent | 53dc194f0c0b29c085baf33225b0c549876ad5f7 (diff) |
[media] dvb_usb_v2: use pointers to properties
Use pointers to properties as device and adapter properties are
constant. No need to embed and copy those structures.
Signed-off-by: Antti Palosaari <crope@iki.fi>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
-rw-r--r-- | drivers/media/dvb/dvb-usb/dvb_usb.h | 4 | ||||
-rw-r--r-- | drivers/media/dvb/dvb-usb/dvb_usb_dvb.c | 64 | ||||
-rw-r--r-- | drivers/media/dvb/dvb-usb/dvb_usb_init.c | 69 | ||||
-rw-r--r-- | drivers/media/dvb/dvb-usb/dvb_usb_remote.c | 6 | ||||
-rw-r--r-- | drivers/media/dvb/dvb-usb/dvb_usb_urb.c | 10 |
5 files changed, 75 insertions, 78 deletions
diff --git a/drivers/media/dvb/dvb-usb/dvb_usb.h b/drivers/media/dvb/dvb-usb/dvb_usb.h index b4438173b25..a972de6f848 100644 --- a/drivers/media/dvb/dvb-usb/dvb_usb.h +++ b/drivers/media/dvb/dvb-usb/dvb_usb.h | |||
@@ -270,7 +270,7 @@ struct dvb_usb_adapter { | |||
270 | #define DVB_USB_ADAP_STATE_DVB 0x001 | 270 | #define DVB_USB_ADAP_STATE_DVB 0x001 |
271 | int state; | 271 | int state; |
272 | struct dvb_usb_device *dev; | 272 | struct dvb_usb_device *dev; |
273 | struct dvb_usb_adapter_properties props; | 273 | const struct dvb_usb_adapter_properties *props; |
274 | struct usb_data_stream stream; | 274 | struct usb_data_stream stream; |
275 | u8 id; | 275 | u8 id; |
276 | 276 | ||
@@ -316,7 +316,7 @@ struct dvb_usb_adapter { | |||
316 | * in size_of_priv of dvb_usb_properties). | 316 | * in size_of_priv of dvb_usb_properties). |
317 | */ | 317 | */ |
318 | struct dvb_usb_device { | 318 | struct dvb_usb_device { |
319 | struct dvb_usb_device_properties props; | 319 | const struct dvb_usb_device_properties *props; |
320 | const char *name; | 320 | const char *name; |
321 | const char *rc_map; | 321 | const char *rc_map; |
322 | struct dvb_usb_rc rc; | 322 | struct dvb_usb_rc rc; |
diff --git a/drivers/media/dvb/dvb-usb/dvb_usb_dvb.c b/drivers/media/dvb/dvb-usb/dvb_usb_dvb.c index 11ac592270f..a0f76eb2b6d 100644 --- a/drivers/media/dvb/dvb-usb/dvb_usb_dvb.c +++ b/drivers/media/dvb/dvb-usb/dvb_usb_dvb.c | |||
@@ -41,13 +41,13 @@ int dvb_usbv2_adapter_stream_init(struct dvb_usb_adapter *adap) | |||
41 | adap->stream.user_priv = adap; | 41 | adap->stream.user_priv = adap; |
42 | 42 | ||
43 | /* resolve USB stream configuration for buffer alloc */ | 43 | /* resolve USB stream configuration for buffer alloc */ |
44 | if (adap->dev->props.get_usb_stream_config) { | 44 | if (adap->dev->props->get_usb_stream_config) { |
45 | ret = adap->dev->props.get_usb_stream_config(NULL, | 45 | ret = adap->dev->props->get_usb_stream_config(NULL, |
46 | &stream_props); | 46 | &stream_props); |
47 | if (ret < 0) | 47 | if (ret < 0) |
48 | return ret; | 48 | return ret; |
49 | } else { | 49 | } else { |
50 | stream_props = adap->props.stream; | 50 | stream_props = adap->props->stream; |
51 | } | 51 | } |
52 | 52 | ||
53 | /* FIXME: can be removed as set later in anyway */ | 53 | /* FIXME: can be removed as set later in anyway */ |
@@ -80,8 +80,8 @@ static int dvb_usb_ctrl_feed(struct dvb_demux_feed *dvbdmxfeed, int onoff) | |||
80 | pr_debug("%s: stop feeding\n", __func__); | 80 | pr_debug("%s: stop feeding\n", __func__); |
81 | usb_urb_killv2(&adap->stream); | 81 | usb_urb_killv2(&adap->stream); |
82 | 82 | ||
83 | if (adap->dev->props.streaming_ctrl != NULL) { | 83 | if (adap->dev->props->streaming_ctrl != NULL) { |
84 | ret = adap->dev->props.streaming_ctrl(adap, 0); | 84 | ret = adap->dev->props->streaming_ctrl(adap, 0); |
85 | if (ret < 0) { | 85 | if (ret < 0) { |
86 | pr_err("%s: error while stopping stream\n", | 86 | pr_err("%s: error while stopping stream\n", |
87 | KBUILD_MODNAME); | 87 | KBUILD_MODNAME); |
@@ -97,10 +97,10 @@ static int dvb_usb_ctrl_feed(struct dvb_demux_feed *dvbdmxfeed, int onoff) | |||
97 | adap->pid_filtering ? "yes" : "no", dvbdmxfeed->pid, | 97 | adap->pid_filtering ? "yes" : "no", dvbdmxfeed->pid, |
98 | dvbdmxfeed->pid, dvbdmxfeed->index, | 98 | dvbdmxfeed->pid, dvbdmxfeed->index, |
99 | onoff ? "on" : "off"); | 99 | onoff ? "on" : "off"); |
100 | if (adap->props.caps & DVB_USB_ADAP_HAS_PID_FILTER && | 100 | if (adap->props->caps & DVB_USB_ADAP_HAS_PID_FILTER && |
101 | adap->pid_filtering && | 101 | adap->pid_filtering && |
102 | adap->props.pid_filter != NULL) | 102 | adap->props->pid_filter != NULL) |
103 | adap->props.pid_filter(adap, dvbdmxfeed->index, | 103 | adap->props->pid_filter(adap, dvbdmxfeed->index, |
104 | dvbdmxfeed->pid, onoff); | 104 | dvbdmxfeed->pid, onoff); |
105 | 105 | ||
106 | /* start the feed if this was the first feed and there is still a feed | 106 | /* start the feed if this was the first feed and there is still a feed |
@@ -111,8 +111,8 @@ static int dvb_usb_ctrl_feed(struct dvb_demux_feed *dvbdmxfeed, int onoff) | |||
111 | unsigned int ts_props; | 111 | unsigned int ts_props; |
112 | 112 | ||
113 | /* resolve TS configuration */ | 113 | /* resolve TS configuration */ |
114 | if (adap->dev->props.get_ts_config) { | 114 | if (adap->dev->props->get_ts_config) { |
115 | ret = adap->dev->props.get_ts_config( | 115 | ret = adap->dev->props->get_ts_config( |
116 | adap->fe[adap->active_fe], | 116 | adap->fe[adap->active_fe], |
117 | &ts_props); | 117 | &ts_props); |
118 | if (ret < 0) | 118 | if (ret < 0) |
@@ -129,14 +129,14 @@ static int dvb_usb_ctrl_feed(struct dvb_demux_feed *dvbdmxfeed, int onoff) | |||
129 | adap->stream.complete = dvb_usb_data_complete; | 129 | adap->stream.complete = dvb_usb_data_complete; |
130 | 130 | ||
131 | /* resolve USB stream configuration */ | 131 | /* resolve USB stream configuration */ |
132 | if (adap->dev->props.get_usb_stream_config) { | 132 | if (adap->dev->props->get_usb_stream_config) { |
133 | ret = adap->dev->props.get_usb_stream_config( | 133 | ret = adap->dev->props->get_usb_stream_config( |
134 | adap->fe[adap->active_fe], | 134 | adap->fe[adap->active_fe], |
135 | &stream_props); | 135 | &stream_props); |
136 | if (ret < 0) | 136 | if (ret < 0) |
137 | return ret; | 137 | return ret; |
138 | } else { | 138 | } else { |
139 | stream_props = adap->props.stream; | 139 | stream_props = adap->props->stream; |
140 | } | 140 | } |
141 | 141 | ||
142 | pr_debug("%s: submitting all URBs\n", __func__); | 142 | pr_debug("%s: submitting all URBs\n", __func__); |
@@ -144,11 +144,11 @@ static int dvb_usb_ctrl_feed(struct dvb_demux_feed *dvbdmxfeed, int onoff) | |||
144 | usb_urb_submitv2(&adap->stream, &stream_props); | 144 | usb_urb_submitv2(&adap->stream, &stream_props); |
145 | 145 | ||
146 | pr_debug("%s: controlling pid parser\n", __func__); | 146 | pr_debug("%s: controlling pid parser\n", __func__); |
147 | if (adap->props.caps & DVB_USB_ADAP_HAS_PID_FILTER && | 147 | if (adap->props->caps & DVB_USB_ADAP_HAS_PID_FILTER && |
148 | adap->props.caps & | 148 | adap->props->caps & |
149 | DVB_USB_ADAP_PID_FILTER_CAN_BE_TURNED_OFF && | 149 | DVB_USB_ADAP_PID_FILTER_CAN_BE_TURNED_OFF && |
150 | adap->props.pid_filter_ctrl != NULL) { | 150 | adap->props->pid_filter_ctrl != NULL) { |
151 | ret = adap->props.pid_filter_ctrl(adap, | 151 | ret = adap->props->pid_filter_ctrl(adap, |
152 | adap->pid_filtering); | 152 | adap->pid_filtering); |
153 | if (ret < 0) { | 153 | if (ret < 0) { |
154 | pr_err("%s: could not handle pid_parser\n", | 154 | pr_err("%s: could not handle pid_parser\n", |
@@ -157,8 +157,8 @@ static int dvb_usb_ctrl_feed(struct dvb_demux_feed *dvbdmxfeed, int onoff) | |||
157 | } | 157 | } |
158 | } | 158 | } |
159 | pr_debug("%s: start feeding\n", __func__); | 159 | pr_debug("%s: start feeding\n", __func__); |
160 | if (adap->dev->props.streaming_ctrl != NULL) { | 160 | if (adap->dev->props->streaming_ctrl != NULL) { |
161 | ret = adap->dev->props.streaming_ctrl(adap, 1); | 161 | ret = adap->dev->props->streaming_ctrl(adap, 1); |
162 | if (ret < 0) { | 162 | if (ret < 0) { |
163 | pr_err("%s: error while enabling fifo\n", | 163 | pr_err("%s: error while enabling fifo\n", |
164 | KBUILD_MODNAME); | 164 | KBUILD_MODNAME); |
@@ -190,18 +190,18 @@ static int dvb_usb_stop_feed(struct dvb_demux_feed *dvbdmxfeed) | |||
190 | int dvb_usbv2_adapter_dvb_init(struct dvb_usb_adapter *adap) | 190 | int dvb_usbv2_adapter_dvb_init(struct dvb_usb_adapter *adap) |
191 | { | 191 | { |
192 | int ret = dvb_register_adapter(&adap->dvb_adap, adap->dev->name, | 192 | int ret = dvb_register_adapter(&adap->dvb_adap, adap->dev->name, |
193 | adap->dev->props.owner, | 193 | adap->dev->props->owner, |
194 | &adap->dev->udev->dev, | 194 | &adap->dev->udev->dev, |
195 | adap->dev->props.adapter_nr); | 195 | adap->dev->props->adapter_nr); |
196 | if (ret < 0) { | 196 | if (ret < 0) { |
197 | pr_debug("%s: dvb_register_adapter failed=%d\n", __func__, ret); | 197 | pr_debug("%s: dvb_register_adapter failed=%d\n", __func__, ret); |
198 | goto err; | 198 | goto err; |
199 | } | 199 | } |
200 | adap->dvb_adap.priv = adap; | 200 | adap->dvb_adap.priv = adap; |
201 | adap->dvb_adap.fe_ioctl_override = adap->props.fe_ioctl_override; | 201 | adap->dvb_adap.fe_ioctl_override = adap->props->fe_ioctl_override; |
202 | 202 | ||
203 | if (adap->dev->props.read_mac_address) { | 203 | if (adap->dev->props->read_mac_address) { |
204 | if (adap->dev->props.read_mac_address(adap->dev, | 204 | if (adap->dev->props->read_mac_address(adap->dev, |
205 | adap->dvb_adap.proposed_mac) == 0) | 205 | adap->dvb_adap.proposed_mac) == 0) |
206 | pr_info("%s: MAC address: %pM\n", KBUILD_MODNAME, | 206 | pr_info("%s: MAC address: %pM\n", KBUILD_MODNAME, |
207 | adap->dvb_adap.proposed_mac); | 207 | adap->dvb_adap.proposed_mac); |
@@ -279,8 +279,8 @@ static int dvb_usb_fe_wakeup(struct dvb_frontend *fe) | |||
279 | if (ret < 0) | 279 | if (ret < 0) |
280 | goto err; | 280 | goto err; |
281 | 281 | ||
282 | if (adap->dev->props.frontend_ctrl) { | 282 | if (adap->dev->props->frontend_ctrl) { |
283 | ret = adap->dev->props.frontend_ctrl(fe, 1); | 283 | ret = adap->dev->props->frontend_ctrl(fe, 1); |
284 | if (ret < 0) | 284 | if (ret < 0) |
285 | goto err; | 285 | goto err; |
286 | } | 286 | } |
@@ -310,8 +310,8 @@ static int dvb_usb_fe_sleep(struct dvb_frontend *fe) | |||
310 | goto err; | 310 | goto err; |
311 | } | 311 | } |
312 | 312 | ||
313 | if (adap->dev->props.frontend_ctrl) { | 313 | if (adap->dev->props->frontend_ctrl) { |
314 | ret = adap->dev->props.frontend_ctrl(fe, 0); | 314 | ret = adap->dev->props->frontend_ctrl(fe, 0); |
315 | if (ret < 0) | 315 | if (ret < 0) |
316 | goto err; | 316 | goto err; |
317 | } | 317 | } |
@@ -337,8 +337,8 @@ int dvb_usbv2_adapter_frontend_init(struct dvb_usb_adapter *adap) | |||
337 | memset(adap->fe, 0, sizeof(adap->fe)); | 337 | memset(adap->fe, 0, sizeof(adap->fe)); |
338 | adap->active_fe = -1; | 338 | adap->active_fe = -1; |
339 | 339 | ||
340 | if (adap->dev->props.frontend_attach) { | 340 | if (adap->dev->props->frontend_attach) { |
341 | ret = adap->dev->props.frontend_attach(adap); | 341 | ret = adap->dev->props->frontend_attach(adap); |
342 | if (ret < 0) { | 342 | if (ret < 0) { |
343 | pr_debug("%s: frontend_attach() failed=%d\n", __func__, | 343 | pr_debug("%s: frontend_attach() failed=%d\n", __func__, |
344 | ret); | 344 | ret); |
@@ -350,8 +350,8 @@ int dvb_usbv2_adapter_frontend_init(struct dvb_usb_adapter *adap) | |||
350 | goto err; | 350 | goto err; |
351 | } | 351 | } |
352 | 352 | ||
353 | if (adap->dev->props.tuner_attach) { | 353 | if (adap->dev->props->tuner_attach) { |
354 | ret = adap->dev->props.tuner_attach(adap); | 354 | ret = adap->dev->props->tuner_attach(adap); |
355 | if (ret < 0) { | 355 | if (ret < 0) { |
356 | pr_debug("%s: tuner_attach() failed=%d\n", __func__, | 356 | pr_debug("%s: tuner_attach() failed=%d\n", __func__, |
357 | ret); | 357 | ret); |
diff --git a/drivers/media/dvb/dvb-usb/dvb_usb_init.c b/drivers/media/dvb/dvb-usb/dvb_usb_init.c index 60011f56cc9..be58b8422a3 100644 --- a/drivers/media/dvb/dvb-usb/dvb_usb_init.c +++ b/drivers/media/dvb/dvb-usb/dvb_usb_init.c | |||
@@ -30,14 +30,14 @@ static int dvb_usbv2_download_firmware(struct dvb_usb_device *d) | |||
30 | const char *name; | 30 | const char *name; |
31 | 31 | ||
32 | /* resolve firmware name */ | 32 | /* resolve firmware name */ |
33 | name = d->props.firmware; | 33 | name = d->props->firmware; |
34 | if (d->props.get_firmware_name) { | 34 | if (d->props->get_firmware_name) { |
35 | ret = d->props.get_firmware_name(d, &name); | 35 | ret = d->props->get_firmware_name(d, &name); |
36 | if (ret < 0) | 36 | if (ret < 0) |
37 | goto err; | 37 | goto err; |
38 | } | 38 | } |
39 | 39 | ||
40 | if (!d->props.download_firmware) { | 40 | if (!d->props->download_firmware) { |
41 | ret = -EINVAL; | 41 | ret = -EINVAL; |
42 | goto err; | 42 | goto err; |
43 | } | 43 | } |
@@ -54,7 +54,7 @@ static int dvb_usbv2_download_firmware(struct dvb_usb_device *d) | |||
54 | pr_info("%s: downloading firmware from file '%s'\n", KBUILD_MODNAME, | 54 | pr_info("%s: downloading firmware from file '%s'\n", KBUILD_MODNAME, |
55 | name); | 55 | name); |
56 | 56 | ||
57 | ret = d->props.download_firmware(d, fw); | 57 | ret = d->props->download_firmware(d, fw); |
58 | 58 | ||
59 | release_firmware(fw); | 59 | release_firmware(fw); |
60 | 60 | ||
@@ -71,13 +71,13 @@ static int dvb_usbv2_i2c_init(struct dvb_usb_device *d) | |||
71 | { | 71 | { |
72 | int ret; | 72 | int ret; |
73 | 73 | ||
74 | if (!d->props.i2c_algo) { | 74 | if (!d->props->i2c_algo) { |
75 | ret = 0; | 75 | ret = 0; |
76 | goto err; | 76 | goto err; |
77 | } | 77 | } |
78 | 78 | ||
79 | strlcpy(d->i2c_adap.name, d->name, sizeof(d->i2c_adap.name)); | 79 | strlcpy(d->i2c_adap.name, d->name, sizeof(d->i2c_adap.name)); |
80 | d->i2c_adap.algo = d->props.i2c_algo; | 80 | d->i2c_adap.algo = d->props->i2c_algo; |
81 | d->i2c_adap.algo_data = NULL; | 81 | d->i2c_adap.algo_data = NULL; |
82 | d->i2c_adap.dev.parent = &d->udev->dev; | 82 | d->i2c_adap.dev.parent = &d->udev->dev; |
83 | 83 | ||
@@ -113,9 +113,9 @@ static int dvb_usbv2_adapter_init(struct dvb_usb_device *d) | |||
113 | int ret, i, adapter_count; | 113 | int ret, i, adapter_count; |
114 | 114 | ||
115 | /* resolve adapter count */ | 115 | /* resolve adapter count */ |
116 | adapter_count = d->props.num_adapters; | 116 | adapter_count = d->props->num_adapters; |
117 | if (d->props.get_adapter_count) { | 117 | if (d->props->get_adapter_count) { |
118 | ret = d->props.get_adapter_count(d); | 118 | ret = d->props->get_adapter_count(d); |
119 | if (ret < 0) | 119 | if (ret < 0) |
120 | goto err; | 120 | goto err; |
121 | 121 | ||
@@ -125,28 +125,26 @@ static int dvb_usbv2_adapter_init(struct dvb_usb_device *d) | |||
125 | for (i = 0; i < adapter_count; i++) { | 125 | for (i = 0; i < adapter_count; i++) { |
126 | adap = &d->adapter[i]; | 126 | adap = &d->adapter[i]; |
127 | adap->dev = d; | 127 | adap->dev = d; |
128 | adap->id = i; | 128 | adap->id = i; |
129 | 129 | adap->props = &d->props->adapter[i]; | |
130 | memcpy(&adap->props, &d->props.adapter[i], | ||
131 | sizeof(struct dvb_usb_adapter_properties)); | ||
132 | 130 | ||
133 | /* speed - when running at FULL speed we need a HW PID filter */ | 131 | /* speed - when running at FULL speed we need a HW PID filter */ |
134 | if (d->udev->speed == USB_SPEED_FULL && | 132 | if (d->udev->speed == USB_SPEED_FULL && |
135 | !(adap->props.caps & DVB_USB_ADAP_HAS_PID_FILTER)) { | 133 | !(adap->props->caps & DVB_USB_ADAP_HAS_PID_FILTER)) { |
136 | pr_err("%s: this USB2.0 device cannot be run on a " \ | 134 | pr_err("%s: this USB2.0 device cannot be run on a " \ |
137 | "USB1.1 port (it lacks a hardware " \ | 135 | "USB1.1 port (it lacks a hardware " \ |
138 | "PID filter)\n", KBUILD_MODNAME); | 136 | "PID filter)\n", KBUILD_MODNAME); |
139 | ret = -ENODEV; | 137 | ret = -ENODEV; |
140 | goto err; | 138 | goto err; |
141 | } else if ((d->udev->speed == USB_SPEED_FULL && | 139 | } else if ((d->udev->speed == USB_SPEED_FULL && |
142 | adap->props.caps & DVB_USB_ADAP_HAS_PID_FILTER) || | 140 | adap->props->caps & DVB_USB_ADAP_HAS_PID_FILTER) || |
143 | (adap->props.caps & DVB_USB_ADAP_NEED_PID_FILTERING)) { | 141 | (adap->props->caps & DVB_USB_ADAP_NEED_PID_FILTERING)) { |
144 | pr_info("%s: will use the device's hardware PID " \ | 142 | pr_info("%s: will use the device's hardware PID " \ |
145 | "filter (table count: %d)\n", | 143 | "filter (table count: %d)\n", |
146 | KBUILD_MODNAME, | 144 | KBUILD_MODNAME, |
147 | adap->props.pid_filter_count); | 145 | adap->props->pid_filter_count); |
148 | adap->pid_filtering = 1; | 146 | adap->pid_filtering = 1; |
149 | adap->max_feed_count = adap->props.pid_filter_count; | 147 | adap->max_feed_count = adap->props->pid_filter_count; |
150 | } else { | 148 | } else { |
151 | pr_info("%s: will pass the complete MPEG2 transport " \ | 149 | pr_info("%s: will pass the complete MPEG2 transport " \ |
152 | "stream to the software demuxer\n", | 150 | "stream to the software demuxer\n", |
@@ -156,11 +154,11 @@ static int dvb_usbv2_adapter_init(struct dvb_usb_device *d) | |||
156 | } | 154 | } |
157 | 155 | ||
158 | if (!adap->pid_filtering && dvb_usb_force_pid_filter_usage && | 156 | if (!adap->pid_filtering && dvb_usb_force_pid_filter_usage && |
159 | adap->props.caps & DVB_USB_ADAP_HAS_PID_FILTER) { | 157 | adap->props->caps & DVB_USB_ADAP_HAS_PID_FILTER) { |
160 | pr_info("%s: pid filter enabled by module option\n", | 158 | pr_info("%s: pid filter enabled by module option\n", |
161 | KBUILD_MODNAME); | 159 | KBUILD_MODNAME); |
162 | adap->pid_filtering = 1; | 160 | adap->pid_filtering = 1; |
163 | adap->max_feed_count = adap->props.pid_filter_count; | 161 | adap->max_feed_count = adap->props->pid_filter_count; |
164 | } | 162 | } |
165 | 163 | ||
166 | ret = dvb_usbv2_adapter_stream_init(adap); | 164 | ret = dvb_usbv2_adapter_stream_init(adap); |
@@ -229,8 +227,8 @@ static int dvb_usbv2_init(struct dvb_usb_device *d) | |||
229 | /* check the capabilities and set appropriate variables */ | 227 | /* check the capabilities and set appropriate variables */ |
230 | dvb_usbv2_device_power_ctrl(d, 1); | 228 | dvb_usbv2_device_power_ctrl(d, 1); |
231 | 229 | ||
232 | if (d->props.read_config) { | 230 | if (d->props->read_config) { |
233 | ret = d->props.read_config(d); | 231 | ret = d->props->read_config(d); |
234 | if (ret < 0) | 232 | if (ret < 0) |
235 | goto err; | 233 | goto err; |
236 | } | 234 | } |
@@ -243,8 +241,8 @@ static int dvb_usbv2_init(struct dvb_usb_device *d) | |||
243 | if (ret < 0) | 241 | if (ret < 0) |
244 | goto err; | 242 | goto err; |
245 | 243 | ||
246 | if (d->props.init) { | 244 | if (d->props->init) { |
247 | ret = d->props.init(d); | 245 | ret = d->props->init(d); |
248 | if (ret < 0) | 246 | if (ret < 0) |
249 | goto err; | 247 | goto err; |
250 | } | 248 | } |
@@ -274,8 +272,8 @@ int dvb_usbv2_device_power_ctrl(struct dvb_usb_device *d, int onoff) | |||
274 | if (d->powered == 0 || (onoff && d->powered == 1)) { | 272 | if (d->powered == 0 || (onoff && d->powered == 1)) { |
275 | /* when switching from 1 to 0 or from 0 to 1 */ | 273 | /* when switching from 1 to 0 or from 0 to 1 */ |
276 | pr_debug("%s: power control=%d\n", __func__, onoff); | 274 | pr_debug("%s: power control=%d\n", __func__, onoff); |
277 | if (d->props.power_ctrl) { | 275 | if (d->props->power_ctrl) { |
278 | ret = d->props.power_ctrl(d, onoff); | 276 | ret = d->props->power_ctrl(d, onoff); |
279 | goto err; | 277 | goto err; |
280 | } | 278 | } |
281 | } | 279 | } |
@@ -304,8 +302,8 @@ static void dvb_usbv2_init_work(struct work_struct *work) | |||
304 | 302 | ||
305 | pr_debug("%s: work_pid=%d\n", __func__, d->work_pid); | 303 | pr_debug("%s: work_pid=%d\n", __func__, d->work_pid); |
306 | 304 | ||
307 | if (d->props.size_of_priv) { | 305 | if (d->props->size_of_priv) { |
308 | d->priv = kzalloc(d->props.size_of_priv, GFP_KERNEL); | 306 | d->priv = kzalloc(d->props->size_of_priv, GFP_KERNEL); |
309 | if (!d->priv) { | 307 | if (!d->priv) { |
310 | pr_err("%s: kzalloc() failed\n", KBUILD_MODNAME); | 308 | pr_err("%s: kzalloc() failed\n", KBUILD_MODNAME); |
311 | ret = -ENOMEM; | 309 | ret = -ENOMEM; |
@@ -313,8 +311,8 @@ static void dvb_usbv2_init_work(struct work_struct *work) | |||
313 | } | 311 | } |
314 | } | 312 | } |
315 | 313 | ||
316 | if (d->props.identify_state) { | 314 | if (d->props->identify_state) { |
317 | ret = d->props.identify_state(d); | 315 | ret = d->props->identify_state(d); |
318 | if (ret == 0) { | 316 | if (ret == 0) { |
319 | ; | 317 | ; |
320 | } else if (ret == COLD) { | 318 | } else if (ret == COLD) { |
@@ -388,11 +386,10 @@ int dvb_usbv2_probe(struct usb_interface *intf, | |||
388 | d->rc_map = driver_info->rc_map; | 386 | d->rc_map = driver_info->rc_map; |
389 | d->udev = interface_to_usbdev(intf); | 387 | d->udev = interface_to_usbdev(intf); |
390 | d->intf = intf; | 388 | d->intf = intf; |
391 | memcpy(&d->props, driver_info->props, | 389 | d->props = driver_info->props; |
392 | sizeof(struct dvb_usb_device_properties)); | ||
393 | 390 | ||
394 | if (d->intf->cur_altsetting->desc.bInterfaceNumber != | 391 | if (d->intf->cur_altsetting->desc.bInterfaceNumber != |
395 | d->props.bInterfaceNumber) { | 392 | d->props->bInterfaceNumber) { |
396 | ret = -ENODEV; | 393 | ret = -ENODEV; |
397 | goto err_kfree; | 394 | goto err_kfree; |
398 | } | 395 | } |
@@ -428,8 +425,8 @@ void dvb_usbv2_disconnect(struct usb_interface *intf) | |||
428 | if (d->work_pid != current->pid) | 425 | if (d->work_pid != current->pid) |
429 | cancel_work_sync(&d->probe_work); | 426 | cancel_work_sync(&d->probe_work); |
430 | 427 | ||
431 | if (d->props.disconnect) | 428 | if (d->props->disconnect) |
432 | d->props.disconnect(d); | 429 | d->props->disconnect(d); |
433 | 430 | ||
434 | name = d->name; | 431 | name = d->name; |
435 | dvb_usbv2_exit(d); | 432 | dvb_usbv2_exit(d); |
diff --git a/drivers/media/dvb/dvb-usb/dvb_usb_remote.c b/drivers/media/dvb/dvb-usb/dvb_usb_remote.c index 4b7cd0e29bf..f856ab6648c 100644 --- a/drivers/media/dvb/dvb-usb/dvb_usb_remote.c +++ b/drivers/media/dvb/dvb-usb/dvb_usb_remote.c | |||
@@ -43,10 +43,10 @@ int dvb_usbv2_remote_init(struct dvb_usb_device *d) | |||
43 | int ret; | 43 | int ret; |
44 | struct rc_dev *dev; | 44 | struct rc_dev *dev; |
45 | 45 | ||
46 | if (dvb_usbv2_disable_rc_polling || !d->props.get_rc_config) | 46 | if (dvb_usbv2_disable_rc_polling || !d->props->get_rc_config) |
47 | return 0; | 47 | return 0; |
48 | 48 | ||
49 | ret = d->props.get_rc_config(d, &d->rc); | 49 | ret = d->props->get_rc_config(d, &d->rc); |
50 | if (ret < 0) | 50 | if (ret < 0) |
51 | goto err; | 51 | goto err; |
52 | 52 | ||
@@ -63,7 +63,7 @@ int dvb_usbv2_remote_init(struct dvb_usb_device *d) | |||
63 | dev->input_phys = d->rc_phys; | 63 | dev->input_phys = d->rc_phys; |
64 | usb_to_input_id(d->udev, &dev->input_id); | 64 | usb_to_input_id(d->udev, &dev->input_id); |
65 | /* TODO: likely RC-core should took const char * */ | 65 | /* TODO: likely RC-core should took const char * */ |
66 | dev->driver_name = (char *) d->props.driver_name; | 66 | dev->driver_name = (char *) d->props->driver_name; |
67 | dev->driver_type = d->rc.driver_type; | 67 | dev->driver_type = d->rc.driver_type; |
68 | dev->allowed_protos = d->rc.allowed_protos; | 68 | dev->allowed_protos = d->rc.allowed_protos; |
69 | dev->change_protocol = d->rc.change_protocol; | 69 | dev->change_protocol = d->rc.change_protocol; |
diff --git a/drivers/media/dvb/dvb-usb/dvb_usb_urb.c b/drivers/media/dvb/dvb-usb/dvb_usb_urb.c index a32722087a0..75b7ac43810 100644 --- a/drivers/media/dvb/dvb-usb/dvb_usb_urb.c +++ b/drivers/media/dvb/dvb-usb/dvb_usb_urb.c | |||
@@ -16,7 +16,7 @@ int dvb_usbv2_generic_rw(struct dvb_usb_device *d, u8 *wbuf, u16 wlen, u8 *rbuf, | |||
16 | if (!d || wbuf == NULL || wlen == 0) | 16 | if (!d || wbuf == NULL || wlen == 0) |
17 | return -EINVAL; | 17 | return -EINVAL; |
18 | 18 | ||
19 | if (d->props.generic_bulk_ctrl_endpoint == 0) { | 19 | if (d->props->generic_bulk_ctrl_endpoint == 0) { |
20 | pr_err("%s: endpoint for generic control not specified\n", | 20 | pr_err("%s: endpoint for generic control not specified\n", |
21 | KBUILD_MODNAME); | 21 | KBUILD_MODNAME); |
22 | return -EINVAL; | 22 | return -EINVAL; |
@@ -30,7 +30,7 @@ int dvb_usbv2_generic_rw(struct dvb_usb_device *d, u8 *wbuf, u16 wlen, u8 *rbuf, | |||
30 | 32, 1, wbuf, wlen, 0); | 30 | 32, 1, wbuf, wlen, 0); |
31 | 31 | ||
32 | ret = usb_bulk_msg(d->udev, usb_sndbulkpipe(d->udev, | 32 | ret = usb_bulk_msg(d->udev, usb_sndbulkpipe(d->udev, |
33 | d->props.generic_bulk_ctrl_endpoint), wbuf, wlen, | 33 | d->props->generic_bulk_ctrl_endpoint), wbuf, wlen, |
34 | &actlen, 2000); | 34 | &actlen, 2000); |
35 | 35 | ||
36 | if (ret) | 36 | if (ret) |
@@ -45,9 +45,9 @@ int dvb_usbv2_generic_rw(struct dvb_usb_device *d, u8 *wbuf, u16 wlen, u8 *rbuf, | |||
45 | msleep(delay_ms); | 45 | msleep(delay_ms); |
46 | 46 | ||
47 | ret = usb_bulk_msg(d->udev, usb_rcvbulkpipe(d->udev, | 47 | ret = usb_bulk_msg(d->udev, usb_rcvbulkpipe(d->udev, |
48 | d->props.generic_bulk_ctrl_endpoint_response ? | 48 | d->props->generic_bulk_ctrl_endpoint_response ? |
49 | d->props.generic_bulk_ctrl_endpoint_response : | 49 | d->props->generic_bulk_ctrl_endpoint_response : |
50 | d->props.generic_bulk_ctrl_endpoint), | 50 | d->props->generic_bulk_ctrl_endpoint), |
51 | rbuf, rlen, &actlen, 2000); | 51 | rbuf, rlen, &actlen, 2000); |
52 | 52 | ||
53 | if (ret) | 53 | if (ret) |