Lines Matching refs:drvdata

56 static void snd_serial_generic_tx_wakeup(struct snd_serial_generic *drvdata)
58 if (test_and_set_bit(SERIAL_TX_STATE_ACTIVE, &drvdata->tx_state))
59 set_bit(SERIAL_TX_STATE_WAKEUP, &drvdata->tx_state);
61 schedule_work(&drvdata->tx_work);
70 struct snd_serial_generic *drvdata = container_of(work, struct snd_serial_generic,
72 struct snd_rawmidi_substream *substream = drvdata->midi_output;
74 clear_bit(SERIAL_TX_STATE_WAKEUP, &drvdata->tx_state);
78 if (!test_bit(SERIAL_MODE_OUTPUT_OPEN, &drvdata->filemode))
82 num_bytes = serdev_device_write_buf(drvdata->serdev, buf, num_bytes);
89 if (!test_bit(SERIAL_TX_STATE_WAKEUP, &drvdata->tx_state))
93 clear_bit(SERIAL_TX_STATE_ACTIVE, &drvdata->tx_state);
98 struct snd_serial_generic *drvdata = serdev_device_get_drvdata(serdev);
100 snd_serial_generic_tx_wakeup(drvdata);
107 struct snd_serial_generic *drvdata = serdev_device_get_drvdata(serdev);
109 if (!test_bit(SERIAL_MODE_INPUT_OPEN, &drvdata->filemode))
112 ret = snd_rawmidi_receive(drvdata->midi_input, buf, count);
121 static int snd_serial_generic_ensure_serdev_open(struct snd_serial_generic *drvdata)
126 if (drvdata->filemode)
129 dev_dbg(drvdata->card->dev, "Opening serial port for card %s\n",
130 drvdata->card->shortname);
131 err = serdev_device_open(drvdata->serdev);
135 actual_baud = serdev_device_set_baudrate(drvdata->serdev,
136 drvdata->baudrate);
137 if (actual_baud != drvdata->baudrate) {
138 dev_warn(drvdata->card->dev, "requested %d baud for card %s but it was actually set to %d\n",
139 drvdata->baudrate, drvdata->card->shortname, actual_baud);
148 struct snd_serial_generic *drvdata = substream->rmidi->card->private_data;
150 dev_dbg(drvdata->card->dev, "Opening input for card %s\n",
151 drvdata->card->shortname);
153 err = snd_serial_generic_ensure_serdev_open(drvdata);
157 set_bit(SERIAL_MODE_INPUT_OPEN, &drvdata->filemode);
158 drvdata->midi_input = substream;
164 struct snd_serial_generic *drvdata = substream->rmidi->card->private_data;
166 dev_dbg(drvdata->card->dev, "Closing input for card %s\n",
167 drvdata->card->shortname);
169 clear_bit(SERIAL_MODE_INPUT_OPEN, &drvdata->filemode);
170 clear_bit(SERIAL_MODE_INPUT_TRIGGERED, &drvdata->filemode);
172 drvdata->midi_input = NULL;
174 if (!drvdata->filemode)
175 serdev_device_close(drvdata->serdev);
182 struct snd_serial_generic *drvdata = substream->rmidi->card->private_data;
185 set_bit(SERIAL_MODE_INPUT_TRIGGERED, &drvdata->filemode);
187 clear_bit(SERIAL_MODE_INPUT_TRIGGERED, &drvdata->filemode);
192 struct snd_serial_generic *drvdata = substream->rmidi->card->private_data;
195 dev_dbg(drvdata->card->dev, "Opening output for card %s\n",
196 drvdata->card->shortname);
198 err = snd_serial_generic_ensure_serdev_open(drvdata);
202 set_bit(SERIAL_MODE_OUTPUT_OPEN, &drvdata->filemode);
204 drvdata->midi_output = substream;
210 struct snd_serial_generic *drvdata = substream->rmidi->card->private_data;
212 dev_dbg(drvdata->card->dev, "Closing output for card %s\n",
213 drvdata->card->shortname);
215 clear_bit(SERIAL_MODE_OUTPUT_OPEN, &drvdata->filemode);
216 clear_bit(SERIAL_MODE_OUTPUT_TRIGGERED, &drvdata->filemode);
218 if (!drvdata->filemode)
219 serdev_device_close(drvdata->serdev);
221 drvdata->midi_output = NULL;
229 struct snd_serial_generic *drvdata = substream->rmidi->card->private_data;
232 set_bit(SERIAL_MODE_OUTPUT_TRIGGERED, &drvdata->filemode);
234 clear_bit(SERIAL_MODE_OUTPUT_TRIGGERED, &drvdata->filemode);
237 snd_serial_generic_tx_wakeup(drvdata);
242 struct snd_serial_generic *drvdata = substream->rmidi->card->private_data;
245 serdev_device_write_flush(drvdata->serdev);
246 cancel_work_sync(&drvdata->tx_work);
263 struct snd_serial_generic *drvdata)
268 &drvdata->baudrate);
270 dev_dbg(drvdata->card->dev,
273 drvdata->baudrate = 38400;
287 static int snd_serial_generic_rmidi(struct snd_serial_generic *drvdata,
293 err = snd_rawmidi_new(drvdata->card, drvdata->card->driver, 0,
303 strcpy(rrawmidi->name, drvdata->card->shortname);
306 drvdata->serdev->ctrl->nr);
308 drvdata->serdev->ctrl->nr);
322 struct snd_serial_generic *drvdata;
336 drvdata = card->private_data;
338 drvdata->serdev = serdev;
339 drvdata->card = card;
341 snd_serial_generic_parse_dt(serdev, drvdata);
343 INIT_WORK(&drvdata->tx_work, snd_serial_generic_tx_work);
345 err = snd_serial_generic_rmidi(drvdata, 1, 1, &drvdata->rmidi);
350 serdev_device_set_drvdata(drvdata->serdev, drvdata);