Lines Matching refs:sd

57 	struct v4l2_subdev sd;  member
66 static inline struct wm8775_state *to_state(struct v4l2_subdev *sd) in to_state() argument
68 return container_of(sd, struct wm8775_state, sd); in to_state()
73 return &container_of(ctrl->handler, struct wm8775_state, hdl)->sd; in to_sd()
76 static int wm8775_write(struct v4l2_subdev *sd, int reg, u16 val) in wm8775_write() argument
78 struct i2c_client *client = v4l2_get_subdevdata(sd); in wm8775_write()
82 v4l2_err(sd, "Invalid register R%d\n", reg); in wm8775_write()
90 v4l2_err(sd, "I2C: cannot write %03x to register R%d\n", val, reg); in wm8775_write()
94 static void wm8775_set_audio(struct v4l2_subdev *sd, int quietly) in wm8775_set_audio() argument
96 struct wm8775_state *state = to_state(sd); in wm8775_set_audio()
108 wm8775_write(sd, R21, 0x0c0 | state->input); in wm8775_set_audio()
110 wm8775_write(sd, R14, vol_l | 0x100); /* 0x100= Left channel ADC zero cross enable */ in wm8775_set_audio()
111 wm8775_write(sd, R15, vol_r | 0x100); /* 0x100= Right channel ADC zero cross enable */ in wm8775_set_audio()
115 wm8775_write(sd, R21, state->input); in wm8775_set_audio()
118 static int wm8775_s_routing(struct v4l2_subdev *sd, in wm8775_s_routing() argument
121 struct wm8775_state *state = to_state(sd); in wm8775_s_routing()
129 v4l2_err(sd, "Invalid input %d.\n", input); in wm8775_s_routing()
137 wm8775_set_audio(sd, 1); in wm8775_s_routing()
143 struct v4l2_subdev *sd = to_sd(ctrl); in wm8775_s_ctrl() local
149 wm8775_set_audio(sd, 0); in wm8775_s_ctrl()
152 wm8775_write(sd, R17, (ctrl->val ? ALC_EN : 0) | ALC_HOLD); in wm8775_s_ctrl()
158 static int wm8775_log_status(struct v4l2_subdev *sd) in wm8775_log_status() argument
160 struct wm8775_state *state = to_state(sd); in wm8775_log_status()
162 v4l2_info(sd, "Input: %d\n", state->input); in wm8775_log_status()
163 v4l2_ctrl_handler_log_status(&state->hdl, sd->name); in wm8775_log_status()
167 static int wm8775_s_frequency(struct v4l2_subdev *sd, const struct v4l2_frequency *freq) in wm8775_s_frequency() argument
169 wm8775_set_audio(sd, 0); in wm8775_s_frequency()
217 struct v4l2_subdev *sd; in wm8775_probe() local
236 sd = &state->sd; in wm8775_probe()
237 v4l2_i2c_subdev_init(sd, client, &wm8775_ops); in wm8775_probe()
249 sd->ctrl_handler = &state->hdl; in wm8775_probe()
259 wm8775_write(sd, R23, 0x000); in wm8775_probe()
261 wm8775_write(sd, R7, 0x000); in wm8775_probe()
263 wm8775_write(sd, R11, 0x021); in wm8775_probe()
265 wm8775_write(sd, R12, 0x102); in wm8775_probe()
267 wm8775_write(sd, R13, 0x000); in wm8775_probe()
271 wm8775_write(sd, R14, 0x1d4); in wm8775_probe()
273 wm8775_write(sd, R15, 0x1d4); in wm8775_probe()
275 wm8775_write(sd, R16, 0x1bf); in wm8775_probe()
278 wm8775_write(sd, R17, 0x185); in wm8775_probe()
281 wm8775_write(sd, R16, 0x1bb); in wm8775_probe()
283 wm8775_write(sd, R17, (state->loud->val ? ALC_EN : 0) | ALC_HOLD); in wm8775_probe()
286 wm8775_write(sd, R18, 0x0a2); in wm8775_probe()
288 wm8775_write(sd, R19, 0x005); in wm8775_probe()
291 wm8775_write(sd, R20, 0x07a); in wm8775_probe()
293 wm8775_write(sd, R21, 0x102); in wm8775_probe()
296 wm8775_write(sd, R20, 0x0fb); in wm8775_probe()
298 wm8775_set_audio(sd, 1); /* set volume/mute/mux */ in wm8775_probe()
305 struct v4l2_subdev *sd = i2c_get_clientdata(client); in wm8775_remove() local
306 struct wm8775_state *state = to_state(sd); in wm8775_remove()
308 v4l2_device_unregister_subdev(sd); in wm8775_remove()