Hi Ramesh,

[auto build test ERROR on linuxtv-media/master]
[also build test ERROR on v4.12-rc3 next-20170531]
[if your patch is applied to the wrong git tree, please drop us a note to help 
improve the system]

url:    
https://github.com/0day-ci/linux/commits/Ramesh-Shanmugasundaram/Add-V4L2-SDR-DRIF-MAX2175-driver/20170531-231937
base:   git://linuxtv.org/media_tree.git master
config: arm64-allmodconfig (attached as .config)
compiler: aarch64-linux-gnu-gcc (Debian 6.1.1-9) 6.1.1 20160705
reproduce:
        wget 
https://raw.githubusercontent.com/01org/lkp-tests/master/sbin/make.cross -O 
~/bin/make.cross
        chmod +x ~/bin/make.cross
        # save the attached .config to linux build tree
        make.cross ARCH=arm64 

All errors (new ones prefixed by >>):

   drivers/media//platform/rcar_drif.c: In function 'rcar_drif_notify_bound':
>> drivers/media//platform/rcar_drif.c:1110:23: error: 'union <anonymous>' has 
>> no member named 'fwnode'
     if (sdr->ep.asd.match.fwnode.fwnode !=
                          ^
   drivers/media//platform/rcar_drif.c: In function 'rcar_drif_parse_subdevs':
   drivers/media//platform/rcar_drif.c:1232:19: error: 'union <anonymous>' has 
no member named 'fwnode'
     sdr->ep.asd.match.fwnode.fwnode = fwnode;
                      ^
>> drivers/media//platform/rcar_drif.c:1233:27: error: 
>> 'V4L2_ASYNC_MATCH_FWNODE' undeclared (first use in this function)
     sdr->ep.asd.match_type = V4L2_ASYNC_MATCH_FWNODE;
                              ^~~~~~~~~~~~~~~~~~~~~~~
   drivers/media//platform/rcar_drif.c:1233:27: note: each undeclared 
identifier is reported only once for each function it appears in

vim +/V4L2_ASYNC_MATCH_FWNODE +1233 drivers/media//platform/rcar_drif.c

  1104                                     struct v4l2_subdev *subdev,
  1105                                     struct v4l2_async_subdev *asd)
  1106  {
  1107          struct rcar_drif_sdr *sdr =
  1108                  container_of(notifier, struct rcar_drif_sdr, notifier);
  1109  
> 1110          if (sdr->ep.asd.match.fwnode.fwnode !=
  1111              of_fwnode_handle(subdev->dev->of_node)) {
  1112                  rdrif_err(sdr, "subdev %s cannot bind\n", subdev->name);
  1113                  return -EINVAL;
  1114          }
  1115  
  1116          v4l2_set_subdev_hostdata(subdev, sdr);
  1117          sdr->ep.subdev = subdev;
  1118          rdrif_dbg(sdr, "bound asd %s\n", subdev->name);
  1119  
  1120          return 0;
  1121  }
  1122  
  1123  /* Sub-device unbind callback */
  1124  static void rcar_drif_notify_unbind(struct v4l2_async_notifier 
*notifier,
  1125                                     struct v4l2_subdev *subdev,
  1126                                     struct v4l2_async_subdev *asd)
  1127  {
  1128          struct rcar_drif_sdr *sdr =
  1129                  container_of(notifier, struct rcar_drif_sdr, notifier);
  1130  
  1131          if (sdr->ep.subdev != subdev) {
  1132                  rdrif_err(sdr, "subdev %s is not bound\n", 
subdev->name);
  1133                  return;
  1134          }
  1135  
  1136          /* Free ctrl handler if initialized */
  1137          v4l2_ctrl_handler_free(&sdr->ctrl_hdl);
  1138          sdr->v4l2_dev.ctrl_handler = NULL;
  1139          sdr->ep.subdev = NULL;
  1140  
  1141          rcar_drif_sdr_unregister(sdr);
  1142          rdrif_dbg(sdr, "unbind asd %s\n", subdev->name);
  1143  }
  1144  
  1145  /* Sub-device registered notification callback */
  1146  static int rcar_drif_notify_complete(struct v4l2_async_notifier 
*notifier)
  1147  {
  1148          struct rcar_drif_sdr *sdr =
  1149                  container_of(notifier, struct rcar_drif_sdr, notifier);
  1150          int ret;
  1151  
  1152          /*
  1153           * The subdev tested at this point uses 4 controls. Using 10 as 
a worst
  1154           * case scenario hint. When less controls are needed there will 
be some
  1155           * unused memory and when more controls are needed the 
framework uses
  1156           * hash to manage controls within this number.
  1157           */
  1158          ret = v4l2_ctrl_handler_init(&sdr->ctrl_hdl, 10);
  1159          if (ret)
  1160                  return -ENOMEM;
  1161  
  1162          sdr->v4l2_dev.ctrl_handler = &sdr->ctrl_hdl;
  1163          ret = v4l2_device_register_subdev_nodes(&sdr->v4l2_dev);
  1164          if (ret) {
  1165                  rdrif_err(sdr, "failed: register subdev nodes ret 
%d\n", ret);
  1166                  goto error;
  1167          }
  1168  
  1169          ret = v4l2_ctrl_add_handler(&sdr->ctrl_hdl,
  1170                                      sdr->ep.subdev->ctrl_handler, NULL);
  1171          if (ret) {
  1172                  rdrif_err(sdr, "failed: ctrl add hdlr ret %d\n", ret);
  1173                  goto error;
  1174          }
  1175  
  1176          ret = rcar_drif_sdr_register(sdr);
  1177          if (ret)
  1178                  goto error;
  1179  
  1180          return ret;
  1181  
  1182  error:
  1183          v4l2_ctrl_handler_free(&sdr->ctrl_hdl);
  1184  
  1185          return ret;
  1186  }
  1187  
  1188  /* Read endpoint properties */
  1189  static void rcar_drif_get_ep_properties(struct rcar_drif_sdr *sdr,
  1190                                          struct fwnode_handle *fwnode)
  1191  {
  1192          u32 val;
  1193  
  1194          /* Set the I2S defaults for SIRMDR1*/
  1195          sdr->mdr1 = RCAR_DRIF_SIRMDR1_SYNCMD_LR | 
RCAR_DRIF_SIRMDR1_MSB_FIRST |
  1196                  RCAR_DRIF_SIRMDR1_DTDL_1 | RCAR_DRIF_SIRMDR1_SYNCDL_0;
  1197  
  1198          /* Parse sync polarity from endpoint */
  1199          if (!fwnode_property_read_u32(fwnode, "sync-active", &val))
  1200                  sdr->mdr1 |= val ? RCAR_DRIF_SIRMDR1_SYNCAC_POL_HIGH :
  1201                          RCAR_DRIF_SIRMDR1_SYNCAC_POL_LOW;
  1202          else
  1203                  sdr->mdr1 |= RCAR_DRIF_SIRMDR1_SYNCAC_POL_HIGH; /* 
default */
  1204  
  1205          dev_dbg(sdr->dev, "mdr1 0x%08x\n", sdr->mdr1);
  1206  }
  1207  
  1208  /* Parse sub-devs (tuner) to find a matching device */
  1209  static int rcar_drif_parse_subdevs(struct rcar_drif_sdr *sdr)
  1210  {
  1211          struct v4l2_async_notifier *notifier = &sdr->notifier;
  1212          struct fwnode_handle *fwnode, *ep;
  1213  
  1214          notifier->subdevs = devm_kzalloc(sdr->dev, 
sizeof(*notifier->subdevs),
  1215                                           GFP_KERNEL);
  1216          if (!notifier->subdevs)
  1217                  return -ENOMEM;
  1218  
  1219          ep = 
fwnode_graph_get_next_endpoint(of_fwnode_handle(sdr->dev->of_node),
  1220                                              NULL);
  1221          if (!ep)
  1222                  return 0;
  1223  
  1224          notifier->subdevs[notifier->num_subdevs] = &sdr->ep.asd;
  1225          fwnode = fwnode_graph_get_remote_port_parent(ep);
  1226          if (!fwnode) {
  1227                  dev_warn(sdr->dev, "bad remote port parent\n");
  1228                  fwnode_handle_put(ep);
  1229                  return -EINVAL;
  1230          }
  1231  
  1232          sdr->ep.asd.match.fwnode.fwnode = fwnode;
> 1233          sdr->ep.asd.match_type = V4L2_ASYNC_MATCH_FWNODE;
  1234          notifier->num_subdevs++;
  1235  
  1236          /* Get the endpoint properties */

---
0-DAY kernel test infrastructure                Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all                   Intel Corporation

Attachment: .config.gz
Description: application/gzip

Reply via email to