| .. | .. |
|---|
| 94 | 94 | |
|---|
| 95 | 95 | #define OV2775_NAME "ov2775" |
|---|
| 96 | 96 | |
|---|
| 97 | | -enum ov2775_max_pad { |
|---|
| 98 | | - PAD0, /* link to isp */ |
|---|
| 99 | | - PAD1, /* link to csi wr0 | hdr x2:L x3:M */ |
|---|
| 100 | | - PAD2, /* link to csi wr1 | hdr x3:L */ |
|---|
| 101 | | - PAD3, /* link to csi wr2 | hdr x2:M x3:S */ |
|---|
| 102 | | - PAD_MAX, |
|---|
| 103 | | -}; |
|---|
| 104 | | - |
|---|
| 105 | 97 | struct ov2775_gpio { |
|---|
| 106 | 98 | int pltfrm_gpio; |
|---|
| 107 | 99 | const char *label; |
|---|
| .. | .. |
|---|
| 4111 | 4103 | struct ov2775 *ov2775 = to_ov2775(sd); |
|---|
| 4112 | 4104 | const struct ov2775_mode *mode = ov2775->cur_mode; |
|---|
| 4113 | 4105 | |
|---|
| 4114 | | - mutex_lock(&ov2775->mutex); |
|---|
| 4115 | 4106 | fi->interval = mode->max_fps; |
|---|
| 4116 | | - mutex_unlock(&ov2775->mutex); |
|---|
| 4117 | 4107 | |
|---|
| 4118 | 4108 | return 0; |
|---|
| 4119 | 4109 | } |
|---|
| .. | .. |
|---|
| 4873 | 4863 | switch (ctrl->id) { |
|---|
| 4874 | 4864 | case V4L2_CID_EXPOSURE: |
|---|
| 4875 | 4865 | if (ov2775->cur_mode->hdr_mode != NO_HDR) |
|---|
| 4876 | | - return 0; |
|---|
| 4866 | + goto ctrl_end; |
|---|
| 4877 | 4867 | ret = ov2775_write_reg(ov2775->client, |
|---|
| 4878 | 4868 | OV2775_REG_EXPOSURE_H, |
|---|
| 4879 | 4869 | OV2775_REG_VALUE_08BIT, |
|---|
| .. | .. |
|---|
| 4888 | 4878 | break; |
|---|
| 4889 | 4879 | case V4L2_CID_ANALOGUE_GAIN: |
|---|
| 4890 | 4880 | if (ov2775->cur_mode->hdr_mode != NO_HDR) |
|---|
| 4891 | | - return 0; |
|---|
| 4881 | + goto ctrl_end; |
|---|
| 4892 | 4882 | ov2775_get_linear_reg(ctrl->val, &gain_a, &gain_d); |
|---|
| 4893 | 4883 | ret = ov2775_write_reg(ov2775->client, |
|---|
| 4894 | 4884 | OV2775_REG_GAIN, |
|---|
| .. | .. |
|---|
| 4945 | 4935 | break; |
|---|
| 4946 | 4936 | } |
|---|
| 4947 | 4937 | |
|---|
| 4938 | +ctrl_end: |
|---|
| 4948 | 4939 | pm_runtime_put(&client->dev); |
|---|
| 4949 | 4940 | |
|---|
| 4950 | 4941 | return ret; |
|---|