 +	reg16_write(client, 0xFFFE, 0x82);
 +	usleep_range(100, 150); /* wait 100 us */
 +	reg16_read(client, OV490_ISP_HSIZE_HIGH, &val);
-+	priv->width = val;
++	priv->max_width = val;
 +	reg16_read(client, OV490_ISP_HSIZE_LOW, &val);
-+	priv->width = (priv->width << 8) | val;
++	priv->max_width = (priv->max_width << 8) | val;
 +
 +	reg16_read(client, OV490_ISP_VSIZE_HIGH, &val);
-+	priv->height = val;
++	priv->max_height = val;
 +	reg16_read(client, OV490_ISP_VSIZE_LOW, &val);
-+	priv->height = (priv->height << 8) | val;
++	priv->max_height = (priv->max_height << 8) | val;
 +
 +	ret = ov490_set_regs(client, ov490_regs_wizard,
 +			     ARRAY_SIZE(ov490_regs_wizard));

+	ret = ov490_initialize(client);
+	if (ret < 0)
+		goto cleanup;
+
+	ret = v4l2_async_register_subdev(&priv->sd);
+	if (ret)

+		return 0;
+
+	if (strcmp(fixed_sensor, "ov490") == 0) {
+		err = of_property_read_u32(np, "maxim,width", &priv->max_width);
+		if (err) {
+			dev_err(&client->dev, "maxim,width must be set for fixed-sensor\n");
+			goto out;
+		}
+
+		err = of_property_read_u32(np, "maxim,height", &priv->max_height);
+		if (err) {
+			dev_err(&client->dev, "maxim,height must be set for fixed-sensor\n");
+			goto out;
