aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLaurent Pinchart <laurent.pinchart@ideasonboard.com>2011-09-22 15:59:26 -0400
committerMauro Carvalho Chehab <mchehab@redhat.com>2011-11-03 16:29:16 -0400
commit39099d09ae4605003696919d7c3a6e8a96607c4b (patch)
treef89d402db0ad2f54c02b58f0ce698f6aafbd679a
parent63b4ca23ed2b35742bebf8cb2af49b84b24442c6 (diff)
[media] omap3isp: Move *_init_entities() functions to the init/cleanup section
Group all init/cleanup functions together to make the code more readable. Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
-rw-r--r--drivers/media/video/omap3isp/ispccdc.c62
-rw-r--r--drivers/media/video/omap3isp/ispccp2.c112
-rw-r--r--drivers/media/video/omap3isp/ispcsi2.c84
-rw-r--r--drivers/media/video/omap3isp/isppreview.c94
-rw-r--r--drivers/media/video/omap3isp/ispresizer.c90
-rw-r--r--drivers/media/video/omap3isp/ispstat.c36
6 files changed, 239 insertions, 239 deletions
diff --git a/drivers/media/video/omap3isp/ispccdc.c b/drivers/media/video/omap3isp/ispccdc.c
index 98804d5f89c..c30cc59d703 100644
--- a/drivers/media/video/omap3isp/ispccdc.c
+++ b/drivers/media/video/omap3isp/ispccdc.c
@@ -2152,6 +2152,37 @@ static const struct media_entity_operations ccdc_media_ops = {
2152 .link_setup = ccdc_link_setup, 2152 .link_setup = ccdc_link_setup,
2153}; 2153};
2154 2154
2155void omap3isp_ccdc_unregister_entities(struct isp_ccdc_device *ccdc)
2156{
2157 v4l2_device_unregister_subdev(&ccdc->subdev);
2158 omap3isp_video_unregister(&ccdc->video_out);
2159}
2160
2161int omap3isp_ccdc_register_entities(struct isp_ccdc_device *ccdc,
2162 struct v4l2_device *vdev)
2163{
2164 int ret;
2165
2166 /* Register the subdev and video node. */
2167 ret = v4l2_device_register_subdev(vdev, &ccdc->subdev);
2168 if (ret < 0)
2169 goto error;
2170
2171 ret = omap3isp_video_register(&ccdc->video_out, vdev);
2172 if (ret < 0)
2173 goto error;
2174
2175 return 0;
2176
2177error:
2178 omap3isp_ccdc_unregister_entities(ccdc);
2179 return ret;
2180}
2181
2182/* -----------------------------------------------------------------------------
2183 * ISP CCDC initialisation and cleanup
2184 */
2185
2155/* 2186/*
2156 * ccdc_init_entities - Initialize V4L2 subdev and media entity 2187 * ccdc_init_entities - Initialize V4L2 subdev and media entity
2157 * @ccdc: ISP CCDC module 2188 * @ccdc: ISP CCDC module
@@ -2204,37 +2235,6 @@ static int ccdc_init_entities(struct isp_ccdc_device *ccdc)
2204 return 0; 2235 return 0;
2205} 2236}
2206 2237
2207void omap3isp_ccdc_unregister_entities(struct isp_ccdc_device *ccdc)
2208{
2209 v4l2_device_unregister_subdev(&ccdc->subdev);
2210 omap3isp_video_unregister(&ccdc->video_out);
2211}
2212
2213int omap3isp_ccdc_register_entities(struct isp_ccdc_device *ccdc,
2214 struct v4l2_device *vdev)
2215{
2216 int ret;
2217
2218 /* Register the subdev and video node. */
2219 ret = v4l2_device_register_subdev(vdev, &ccdc->subdev);
2220 if (ret < 0)
2221 goto error;
2222
2223 ret = omap3isp_video_register(&ccdc->video_out, vdev);
2224 if (ret < 0)
2225 goto error;
2226
2227 return 0;
2228
2229error:
2230 omap3isp_ccdc_unregister_entities(ccdc);
2231 return ret;
2232}
2233
2234/* -----------------------------------------------------------------------------
2235 * ISP CCDC initialisation and cleanup
2236 */
2237
2238/* 2238/*
2239 * omap3isp_ccdc_init - CCDC module initialization. 2239 * omap3isp_ccdc_init - CCDC module initialization.
2240 * @dev: Device pointer specific to the OMAP3 ISP. 2240 * @dev: Device pointer specific to the OMAP3 ISP.
diff --git a/drivers/media/video/omap3isp/ispccp2.c b/drivers/media/video/omap3isp/ispccp2.c
index b8e0863b194..883a2825cb4 100644
--- a/drivers/media/video/omap3isp/ispccp2.c
+++ b/drivers/media/video/omap3isp/ispccp2.c
@@ -1032,6 +1032,48 @@ static const struct media_entity_operations ccp2_media_ops = {
1032}; 1032};
1033 1033
1034/* 1034/*
1035 * omap3isp_ccp2_unregister_entities - Unregister media entities: subdev
1036 * @ccp2: Pointer to ISP CCP2 device
1037 */
1038void omap3isp_ccp2_unregister_entities(struct isp_ccp2_device *ccp2)
1039{
1040 v4l2_device_unregister_subdev(&ccp2->subdev);
1041 omap3isp_video_unregister(&ccp2->video_in);
1042}
1043
1044/*
1045 * omap3isp_ccp2_register_entities - Register the subdev media entity
1046 * @ccp2: Pointer to ISP CCP2 device
1047 * @vdev: Pointer to v4l device
1048 * return negative error code or zero on success
1049 */
1050
1051int omap3isp_ccp2_register_entities(struct isp_ccp2_device *ccp2,
1052 struct v4l2_device *vdev)
1053{
1054 int ret;
1055
1056 /* Register the subdev and video nodes. */
1057 ret = v4l2_device_register_subdev(vdev, &ccp2->subdev);
1058 if (ret < 0)
1059 goto error;
1060
1061 ret = omap3isp_video_register(&ccp2->video_in, vdev);
1062 if (ret < 0)
1063 goto error;
1064
1065 return 0;
1066
1067error:
1068 omap3isp_ccp2_unregister_entities(ccp2);
1069 return ret;
1070}
1071
1072/* -----------------------------------------------------------------------------
1073 * ISP ccp2 initialisation and cleanup
1074 */
1075
1076/*
1035 * ccp2_init_entities - Initialize ccp2 subdev and media entity. 1077 * ccp2_init_entities - Initialize ccp2 subdev and media entity.
1036 * @ccp2: Pointer to ISP CCP2 device 1078 * @ccp2: Pointer to ISP CCP2 device
1037 * return negative error code or zero on success 1079 * return negative error code or zero on success
@@ -1095,62 +1137,6 @@ static int ccp2_init_entities(struct isp_ccp2_device *ccp2)
1095} 1137}
1096 1138
1097/* 1139/*
1098 * omap3isp_ccp2_unregister_entities - Unregister media entities: subdev
1099 * @ccp2: Pointer to ISP CCP2 device
1100 */
1101void omap3isp_ccp2_unregister_entities(struct isp_ccp2_device *ccp2)
1102{
1103 v4l2_device_unregister_subdev(&ccp2->subdev);
1104 omap3isp_video_unregister(&ccp2->video_in);
1105}
1106
1107/*
1108 * omap3isp_ccp2_register_entities - Register the subdev media entity
1109 * @ccp2: Pointer to ISP CCP2 device
1110 * @vdev: Pointer to v4l device
1111 * return negative error code or zero on success
1112 */
1113
1114int omap3isp_ccp2_register_entities(struct isp_ccp2_device *ccp2,
1115 struct v4l2_device *vdev)
1116{
1117 int ret;
1118
1119 /* Register the subdev and video nodes. */
1120 ret = v4l2_device_register_subdev(vdev, &ccp2->subdev);
1121 if (ret < 0)
1122 goto error;
1123
1124 ret = omap3isp_video_register(&ccp2->video_in, vdev);
1125 if (ret < 0)
1126 goto error;
1127
1128 return 0;
1129
1130error:
1131 omap3isp_ccp2_unregister_entities(ccp2);
1132 return ret;
1133}
1134
1135/* -----------------------------------------------------------------------------
1136 * ISP ccp2 initialisation and cleanup
1137 */
1138
1139/*
1140 * omap3isp_ccp2_cleanup - CCP2 un-initialization
1141 * @isp : Pointer to ISP device
1142 */
1143void omap3isp_ccp2_cleanup(struct isp_device *isp)
1144{
1145 struct isp_ccp2_device *ccp2 = &isp->isp_ccp2;
1146
1147 omap3isp_video_cleanup(&ccp2->video_in);
1148 media_entity_cleanup(&ccp2->subdev.entity);
1149
1150 regulator_put(ccp2->vdds_csib);
1151}
1152
1153/*
1154 * omap3isp_ccp2_init - CCP2 initialization. 1140 * omap3isp_ccp2_init - CCP2 initialization.
1155 * @isp : Pointer to ISP device 1141 * @isp : Pointer to ISP device
1156 * return negative error code or zero on success 1142 * return negative error code or zero on success
@@ -1195,3 +1181,17 @@ out:
1195 1181
1196 return ret; 1182 return ret;
1197} 1183}
1184
1185/*
1186 * omap3isp_ccp2_cleanup - CCP2 un-initialization
1187 * @isp : Pointer to ISP device
1188 */
1189void omap3isp_ccp2_cleanup(struct isp_device *isp)
1190{
1191 struct isp_ccp2_device *ccp2 = &isp->isp_ccp2;
1192
1193 omap3isp_video_cleanup(&ccp2->video_in);
1194 media_entity_cleanup(&ccp2->subdev.entity);
1195
1196 regulator_put(ccp2->vdds_csib);
1197}
diff --git a/drivers/media/video/omap3isp/ispcsi2.c b/drivers/media/video/omap3isp/ispcsi2.c
index 5612e95ac0b..2c9bffcdc5c 100644
--- a/drivers/media/video/omap3isp/ispcsi2.c
+++ b/drivers/media/video/omap3isp/ispcsi2.c
@@ -1187,6 +1187,37 @@ static const struct media_entity_operations csi2_media_ops = {
1187 .link_setup = csi2_link_setup, 1187 .link_setup = csi2_link_setup,
1188}; 1188};
1189 1189
1190void omap3isp_csi2_unregister_entities(struct isp_csi2_device *csi2)
1191{
1192 v4l2_device_unregister_subdev(&csi2->subdev);
1193 omap3isp_video_unregister(&csi2->video_out);
1194}
1195
1196int omap3isp_csi2_register_entities(struct isp_csi2_device *csi2,
1197 struct v4l2_device *vdev)
1198{
1199 int ret;
1200
1201 /* Register the subdev and video nodes. */
1202 ret = v4l2_device_register_subdev(vdev, &csi2->subdev);
1203 if (ret < 0)
1204 goto error;
1205
1206 ret = omap3isp_video_register(&csi2->video_out, vdev);
1207 if (ret < 0)
1208 goto error;
1209
1210 return 0;
1211
1212error:
1213 omap3isp_csi2_unregister_entities(csi2);
1214 return ret;
1215}
1216
1217/* -----------------------------------------------------------------------------
1218 * ISP CSI2 initialisation and cleanup
1219 */
1220
1190/* 1221/*
1191 * csi2_init_entities - Initialize subdev and media entity. 1222 * csi2_init_entities - Initialize subdev and media entity.
1192 * @csi2: Pointer to csi2 structure. 1223 * @csi2: Pointer to csi2 structure.
@@ -1239,48 +1270,6 @@ static int csi2_init_entities(struct isp_csi2_device *csi2)
1239 return 0; 1270 return 0;
1240} 1271}
1241 1272
1242void omap3isp_csi2_unregister_entities(struct isp_csi2_device *csi2)
1243{
1244 v4l2_device_unregister_subdev(&csi2->subdev);
1245 omap3isp_video_unregister(&csi2->video_out);
1246}
1247
1248int omap3isp_csi2_register_entities(struct isp_csi2_device *csi2,
1249 struct v4l2_device *vdev)
1250{
1251 int ret;
1252
1253 /* Register the subdev and video nodes. */
1254 ret = v4l2_device_register_subdev(vdev, &csi2->subdev);
1255 if (ret < 0)
1256 goto error;
1257
1258 ret = omap3isp_video_register(&csi2->video_out, vdev);
1259 if (ret < 0)
1260 goto error;
1261
1262 return 0;
1263
1264error:
1265 omap3isp_csi2_unregister_entities(csi2);
1266 return ret;
1267}
1268
1269/* -----------------------------------------------------------------------------
1270 * ISP CSI2 initialisation and cleanup
1271 */
1272
1273/*
1274 * omap3isp_csi2_cleanup - Routine for module driver cleanup
1275 */
1276void omap3isp_csi2_cleanup(struct isp_device *isp)
1277{
1278 struct isp_csi2_device *csi2a = &isp->isp_csi2a;
1279
1280 omap3isp_video_cleanup(&csi2a->video_out);
1281 media_entity_cleanup(&csi2a->subdev.entity);
1282}
1283
1284/* 1273/*
1285 * omap3isp_csi2_init - Routine for module driver init 1274 * omap3isp_csi2_init - Routine for module driver init
1286 */ 1275 */
@@ -1317,3 +1306,14 @@ fail:
1317 omap3isp_csi2_cleanup(isp); 1306 omap3isp_csi2_cleanup(isp);
1318 return ret; 1307 return ret;
1319} 1308}
1309
1310/*
1311 * omap3isp_csi2_cleanup - Routine for module driver cleanup
1312 */
1313void omap3isp_csi2_cleanup(struct isp_device *isp)
1314{
1315 struct isp_csi2_device *csi2a = &isp->isp_csi2a;
1316
1317 omap3isp_video_cleanup(&csi2a->video_out);
1318 media_entity_cleanup(&csi2a->subdev.entity);
1319}
diff --git a/drivers/media/video/omap3isp/isppreview.c b/drivers/media/video/omap3isp/isppreview.c
index 84a18b66b23..b926ebbaca3 100644
--- a/drivers/media/video/omap3isp/isppreview.c
+++ b/drivers/media/video/omap3isp/isppreview.c
@@ -1966,8 +1966,44 @@ static const struct media_entity_operations preview_media_ops = {
1966 .link_setup = preview_link_setup, 1966 .link_setup = preview_link_setup,
1967}; 1967};
1968 1968
1969void omap3isp_preview_unregister_entities(struct isp_prev_device *prev)
1970{
1971 v4l2_device_unregister_subdev(&prev->subdev);
1972 omap3isp_video_unregister(&prev->video_in);
1973 omap3isp_video_unregister(&prev->video_out);
1974}
1975
1976int omap3isp_preview_register_entities(struct isp_prev_device *prev,
1977 struct v4l2_device *vdev)
1978{
1979 int ret;
1980
1981 /* Register the subdev and video nodes. */
1982 ret = v4l2_device_register_subdev(vdev, &prev->subdev);
1983 if (ret < 0)
1984 goto error;
1985
1986 ret = omap3isp_video_register(&prev->video_in, vdev);
1987 if (ret < 0)
1988 goto error;
1989
1990 ret = omap3isp_video_register(&prev->video_out, vdev);
1991 if (ret < 0)
1992 goto error;
1993
1994 return 0;
1995
1996error:
1997 omap3isp_preview_unregister_entities(prev);
1998 return ret;
1999}
2000
2001/* -----------------------------------------------------------------------------
2002 * ISP previewer initialisation and cleanup
2003 */
2004
1969/* 2005/*
1970 * review_init_entities - Initialize subdev and media entity. 2006 * preview_init_entities - Initialize subdev and media entity.
1971 * @prev : Pointer to preview structure 2007 * @prev : Pointer to preview structure
1972 * return -ENOMEM or zero on success 2008 * return -ENOMEM or zero on success
1973 */ 2009 */
@@ -2044,52 +2080,6 @@ static int preview_init_entities(struct isp_prev_device *prev)
2044 return 0; 2080 return 0;
2045} 2081}
2046 2082
2047void omap3isp_preview_unregister_entities(struct isp_prev_device *prev)
2048{
2049 v4l2_device_unregister_subdev(&prev->subdev);
2050 omap3isp_video_unregister(&prev->video_in);
2051 omap3isp_video_unregister(&prev->video_out);
2052}
2053
2054int omap3isp_preview_register_entities(struct isp_prev_device *prev,
2055 struct v4l2_device *vdev)
2056{
2057 int ret;
2058
2059 /* Register the subdev and video nodes. */
2060 ret = v4l2_device_register_subdev(vdev, &prev->subdev);
2061 if (ret < 0)
2062 goto error;
2063
2064 ret = omap3isp_video_register(&prev->video_in, vdev);
2065 if (ret < 0)
2066 goto error;
2067
2068 ret = omap3isp_video_register(&prev->video_out, vdev);
2069 if (ret < 0)
2070 goto error;
2071
2072 return 0;
2073
2074error:
2075 omap3isp_preview_unregister_entities(prev);
2076 return ret;
2077}
2078
2079/* -----------------------------------------------------------------------------
2080 * ISP previewer initialisation and cleanup
2081 */
2082
2083void omap3isp_preview_cleanup(struct isp_device *isp)
2084{
2085 struct isp_prev_device *prev = &isp->isp_prev;
2086
2087 v4l2_ctrl_handler_free(&prev->ctrls);
2088 omap3isp_video_cleanup(&prev->video_in);
2089 omap3isp_video_cleanup(&prev->video_out);
2090 media_entity_cleanup(&prev->subdev.entity);
2091}
2092
2093/* 2083/*
2094 * isp_preview_init - Previewer initialization. 2084 * isp_preview_init - Previewer initialization.
2095 * @dev : Pointer to ISP device 2085 * @dev : Pointer to ISP device
@@ -2114,3 +2104,13 @@ out:
2114 2104
2115 return ret; 2105 return ret;
2116} 2106}
2107
2108void omap3isp_preview_cleanup(struct isp_device *isp)
2109{
2110 struct isp_prev_device *prev = &isp->isp_prev;
2111
2112 v4l2_ctrl_handler_free(&prev->ctrls);
2113 omap3isp_video_cleanup(&prev->video_in);
2114 omap3isp_video_cleanup(&prev->video_out);
2115 media_entity_cleanup(&prev->subdev.entity);
2116}
diff --git a/drivers/media/video/omap3isp/ispresizer.c b/drivers/media/video/omap3isp/ispresizer.c
index 78ce0406a23..224b0b90404 100644
--- a/drivers/media/video/omap3isp/ispresizer.c
+++ b/drivers/media/video/omap3isp/ispresizer.c
@@ -1608,6 +1608,42 @@ static const struct media_entity_operations resizer_media_ops = {
1608 .link_setup = resizer_link_setup, 1608 .link_setup = resizer_link_setup,
1609}; 1609};
1610 1610
1611void omap3isp_resizer_unregister_entities(struct isp_res_device *res)
1612{
1613 v4l2_device_unregister_subdev(&res->subdev);
1614 omap3isp_video_unregister(&res->video_in);
1615 omap3isp_video_unregister(&res->video_out);
1616}
1617
1618int omap3isp_resizer_register_entities(struct isp_res_device *res,
1619 struct v4l2_device *vdev)
1620{
1621 int ret;
1622
1623 /* Register the subdev and video nodes. */
1624 ret = v4l2_device_register_subdev(vdev, &res->subdev);
1625 if (ret < 0)
1626 goto error;
1627
1628 ret = omap3isp_video_register(&res->video_in, vdev);
1629 if (ret < 0)
1630 goto error;
1631
1632 ret = omap3isp_video_register(&res->video_out, vdev);
1633 if (ret < 0)
1634 goto error;
1635
1636 return 0;
1637
1638error:
1639 omap3isp_resizer_unregister_entities(res);
1640 return ret;
1641}
1642
1643/* -----------------------------------------------------------------------------
1644 * ISP resizer initialization and cleanup
1645 */
1646
1611/* 1647/*
1612 * resizer_init_entities - Initialize resizer subdev and media entity. 1648 * resizer_init_entities - Initialize resizer subdev and media entity.
1613 * @res : Pointer to resizer device structure 1649 * @res : Pointer to resizer device structure
@@ -1672,51 +1708,6 @@ static int resizer_init_entities(struct isp_res_device *res)
1672 return 0; 1708 return 0;
1673} 1709}
1674 1710
1675void omap3isp_resizer_unregister_entities(struct isp_res_device *res)
1676{
1677 v4l2_device_unregister_subdev(&res->subdev);
1678 omap3isp_video_unregister(&res->video_in);
1679 omap3isp_video_unregister(&res->video_out);
1680}
1681
1682int omap3isp_resizer_register_entities(struct isp_res_device *res,
1683 struct v4l2_device *vdev)
1684{
1685 int ret;
1686
1687 /* Register the subdev and video nodes. */
1688 ret = v4l2_device_register_subdev(vdev, &res->subdev);
1689 if (ret < 0)
1690 goto error;
1691
1692 ret = omap3isp_video_register(&res->video_in, vdev);
1693 if (ret < 0)
1694 goto error;
1695
1696 ret = omap3isp_video_register(&res->video_out, vdev);
1697 if (ret < 0)
1698 goto error;
1699
1700 return 0;
1701
1702error:
1703 omap3isp_resizer_unregister_entities(res);
1704 return ret;
1705}
1706
1707/* -----------------------------------------------------------------------------
1708 * ISP resizer initialization and cleanup
1709 */
1710
1711void omap3isp_resizer_cleanup(struct isp_device *isp)
1712{
1713 struct isp_res_device *res = &isp->isp_res;
1714
1715 omap3isp_video_cleanup(&res->video_in);
1716 omap3isp_video_cleanup(&res->video_out);
1717 media_entity_cleanup(&res->subdev.entity);
1718}
1719
1720/* 1711/*
1721 * isp_resizer_init - Resizer initialization. 1712 * isp_resizer_init - Resizer initialization.
1722 * @isp : Pointer to ISP device 1713 * @isp : Pointer to ISP device
@@ -1739,3 +1730,12 @@ out:
1739 1730
1740 return ret; 1731 return ret;
1741} 1732}
1733
1734void omap3isp_resizer_cleanup(struct isp_device *isp)
1735{
1736 struct isp_res_device *res = &isp->isp_res;
1737
1738 omap3isp_video_cleanup(&res->video_in);
1739 omap3isp_video_cleanup(&res->video_out);
1740 media_entity_cleanup(&res->subdev.entity);
1741}
diff --git a/drivers/media/video/omap3isp/ispstat.c b/drivers/media/video/omap3isp/ispstat.c
index bf0e5a77185..b124326d1e7 100644
--- a/drivers/media/video/omap3isp/ispstat.c
+++ b/drivers/media/video/omap3isp/ispstat.c
@@ -1023,24 +1023,6 @@ void omap3isp_stat_dma_isr(struct ispstat *stat)
1023 __stat_isr(stat, 1); 1023 __stat_isr(stat, 1);
1024} 1024}
1025 1025
1026static int isp_stat_init_entities(struct ispstat *stat, const char *name,
1027 const struct v4l2_subdev_ops *sd_ops)
1028{
1029 struct v4l2_subdev *subdev = &stat->subdev;
1030 struct media_entity *me = &subdev->entity;
1031
1032 v4l2_subdev_init(subdev, sd_ops);
1033 snprintf(subdev->name, V4L2_SUBDEV_NAME_SIZE, "OMAP3 ISP %s", name);
1034 subdev->grp_id = 1 << 16; /* group ID for isp subdevs */
1035 subdev->flags |= V4L2_SUBDEV_FL_HAS_EVENTS | V4L2_SUBDEV_FL_HAS_DEVNODE;
1036 v4l2_set_subdevdata(subdev, stat);
1037
1038 stat->pad.flags = MEDIA_PAD_FL_SINK;
1039 me->ops = NULL;
1040
1041 return media_entity_init(me, 1, &stat->pad, 0);
1042}
1043
1044int omap3isp_stat_subscribe_event(struct v4l2_subdev *subdev, 1026int omap3isp_stat_subscribe_event(struct v4l2_subdev *subdev,
1045 struct v4l2_fh *fh, 1027 struct v4l2_fh *fh,
1046 struct v4l2_event_subscription *sub) 1028 struct v4l2_event_subscription *sub)
@@ -1071,6 +1053,24 @@ int omap3isp_stat_register_entities(struct ispstat *stat,
1071 return v4l2_device_register_subdev(vdev, &stat->subdev); 1053 return v4l2_device_register_subdev(vdev, &stat->subdev);
1072} 1054}
1073 1055
1056static int isp_stat_init_entities(struct ispstat *stat, const char *name,
1057 const struct v4l2_subdev_ops *sd_ops)
1058{
1059 struct v4l2_subdev *subdev = &stat->subdev;
1060 struct media_entity *me = &subdev->entity;
1061
1062 v4l2_subdev_init(subdev, sd_ops);
1063 snprintf(subdev->name, V4L2_SUBDEV_NAME_SIZE, "OMAP3 ISP %s", name);
1064 subdev->grp_id = 1 << 16; /* group ID for isp subdevs */
1065 subdev->flags |= V4L2_SUBDEV_FL_HAS_EVENTS | V4L2_SUBDEV_FL_HAS_DEVNODE;
1066 v4l2_set_subdevdata(subdev, stat);
1067
1068 stat->pad.flags = MEDIA_PAD_FL_SINK;
1069 me->ops = NULL;
1070
1071 return media_entity_init(me, 1, &stat->pad, 0);
1072}
1073
1074int omap3isp_stat_init(struct ispstat *stat, const char *name, 1074int omap3isp_stat_init(struct ispstat *stat, const char *name,
1075 const struct v4l2_subdev_ops *sd_ops) 1075 const struct v4l2_subdev_ops *sd_ops)
1076{ 1076{