adhere to ALSA standards

This commit is contained in:
Šerif Rami 2025-08-12 15:01:37 +02:00
parent 4d5d7f932f
commit 9f9d3dd6e9
4 changed files with 23 additions and 22 deletions

View File

@ -184,10 +184,10 @@ void MainWindow::initUi() {
topLevelLayout->addLayout(leftPanel, 1);
topLevelLayout->addLayout(middlePanel, 1);
connect(m_lineOutCombo, &QComboBox::currentIndexChanged, this, [this](int index){ onControlChanged("Line OUTPUTS Source", index, m_lineOutCombo); });
connect(m_digitalOutCombo, &QComboBox::currentIndexChanged, this, [this](int index){ onControlChanged("Digital OUTPUTS Source", index, m_digitalOutCombo); });
connect(m_capture12Combo, &QComboBox::currentIndexChanged, this, [this](int index){ onControlChanged("ch1 and ch2 Source", index, m_capture12Combo); });
connect(m_capture34Combo, &QComboBox::currentIndexChanged, this, [this](int index){ onControlChanged("ch3 and ch4 Source", index, m_capture34Combo); });
connect(m_lineOutCombo, &QComboBox::currentIndexChanged, this, [this](int index){ onControlChanged("Line Playback Source", index, m_lineOutCombo); });
connect(m_digitalOutCombo, &QComboBox::currentIndexChanged, this, [this](int index){ onControlChanged("Digital Playback Source", index, m_digitalOutCombo); });
connect(m_capture12Combo, &QComboBox::currentIndexChanged, this, [this](int index){ onControlChanged("Ch1/2 Capture Source", index, m_capture12Combo); });
connect(m_capture34Combo, &QComboBox::currentIndexChanged, this, [this](int index){ onControlChanged("Ch3/4 Capture Source", index, m_capture34Combo); });
}
void MainWindow::loadDynamicSettings() {
@ -197,10 +197,10 @@ void MainWindow::loadDynamicSettings() {
long rate_val = m_alsa.getControlValue("Sample Rate");
m_infoLabels["sample_rate"]->setText(rate_val > 0 ? QString("%1 kHz").arg(rate_val / 1000.0, 0, 'f', 1) : "N/A (inactive)");
updateCombo(m_lineOutCombo, "Line OUTPUTS Source");
updateCombo(m_digitalOutCombo, "Digital OUTPUTS Source");
updateCombo(m_capture12Combo, "ch1 and ch2 Source");
updateCombo(m_capture34Combo, "ch3 and ch4 Source");
updateCombo(m_lineOutCombo, "Line Playback Source");
updateCombo(m_digitalOutCombo, "Digital Playback Source");
updateCombo(m_capture12Combo, "Ch1/2 Capture Source");
updateCombo(m_capture34Combo, "Ch3/4 Capture Source");
}
void MainWindow::updateCombo(QComboBox* combo, const std::string& controlName) {

View File

@ -412,21 +412,21 @@ static int tascam_probe(struct usb_interface *intf,
struct snd_card *card;
struct tascam_card *tascam;
int err;
char *handshake_buf __free(kfree);
char *handshake_buf __free(kfree) = NULL;
if (dev->speed != USB_SPEED_HIGH)
dev_info(
&dev->dev,
"Device is connected to a USB 1.1 port, this is not supported.\n");
/* The device has two interfaces; we drive both from this driver. */
if (intf->cur_altsetting->desc.bInterfaceNumber == 1) {
tascam = usb_get_intfdata(usb_ifnum_to_if(dev, 0));
if (tascam) {
usb_set_intfdata(intf, tascam);
tascam->iface1 = intf;
}
return 0;
return 0; /* Let the core handle this interface */
}
if (dev_idx >= SNDRV_CARDS) {
@ -443,6 +443,7 @@ static int tascam_probe(struct usb_interface *intf,
if (!handshake_buf)
return -ENOMEM;
/* Perform vendor-specific handshake */
err = usb_control_msg(dev, usb_rcvctrlpipe(dev, 0),
VENDOR_REQ_MODE_CONTROL, RT_D2H_VENDOR_DEV,
MODE_VAL_HANDSHAKE_READ, 0x0000, handshake_buf, 1,
@ -459,6 +460,7 @@ static int tascam_probe(struct usb_interface *intf,
return -ENODEV;
}
/* Set alternate settings to enable audio/MIDI endpoints */
err = usb_set_interface(dev, 0, 1);
if (err < 0) {
dev_err(&dev->dev,

View File

@ -100,7 +100,7 @@ static int tascam_line_out_put(struct snd_kcontrol *kcontrol,
*/
static const struct snd_kcontrol_new tascam_line_out_control = {
.iface = SNDRV_CTL_ELEM_IFACE_MIXER,
.name = "Line OUTPUTS Source",
.name = "Line Playback Source",
.info = tascam_playback_source_info,
.get = tascam_line_out_get,
.put = tascam_line_out_put,
@ -171,7 +171,7 @@ static int tascam_digital_out_put(struct snd_kcontrol *kcontrol,
*/
static const struct snd_kcontrol_new tascam_digital_out_control = {
.iface = SNDRV_CTL_ELEM_IFACE_MIXER,
.name = "Digital OUTPUTS Source",
.name = "Digital Playback Source",
.info = tascam_playback_source_info,
.get = tascam_digital_out_get,
.put = tascam_digital_out_put,
@ -259,7 +259,7 @@ static int tascam_capture_12_put(struct snd_kcontrol *kcontrol,
*/
static const struct snd_kcontrol_new tascam_capture_12_control = {
.iface = SNDRV_CTL_ELEM_IFACE_MIXER,
.name = "ch1 and ch2 Source",
.name = "Ch1/2 Capture Source",
.info = tascam_capture_source_info,
.get = tascam_capture_12_get,
.put = tascam_capture_12_put,
@ -330,7 +330,7 @@ static int tascam_capture_34_put(struct snd_kcontrol *kcontrol,
*/
static const struct snd_kcontrol_new tascam_capture_34_control = {
.iface = SNDRV_CTL_ELEM_IFACE_MIXER,
.name = "ch3 and ch4 Source",
.name = "Ch3/4 Capture Source",
.info = tascam_capture_source_info,
.get = tascam_capture_34_get,
.put = tascam_capture_34_put,
@ -373,7 +373,7 @@ static int tascam_samplerate_get(struct snd_kcontrol *kcontrol,
{
struct tascam_card *tascam =
(struct tascam_card *)snd_kcontrol_chip(kcontrol);
u8 *buf __free(kfree);
u8 *buf __free(kfree) = NULL;
int err;
u32 rate = 0;

View File

@ -14,7 +14,7 @@
* adjusts the elements to match a target sum, distributing the difference
* as evenly as possible.
*/
static void fpoInitPattern(unsigned int size, unsigned int *pattern_array,
static void fpo_init_pattern(unsigned int size, unsigned int *pattern_array,
unsigned int initial_value, int target_sum)
{
int diff, i;
@ -115,12 +115,12 @@ void process_capture_routing_us144mkii(struct tascam_card *tascam,
int us144mkii_configure_device_for_rate(struct tascam_card *tascam, int rate)
{
struct usb_device *dev = tascam->dev;
u8 *rate_payload_buf __free(kfree) = NULL;
u16 rate_vendor_wValue;
int err = 0;
const u8 *current_payload_src;
u8 *rate_payload_buf __free(kfree);
static const u8 payload_44100[] = { 0x44, 0xac, 0x00 };
static const u8 payload_48000[] = { 0x80, 0xbb, 0x00 };
static const u8 payload_88200[] = { 0x88, 0x58, 0x01 };
@ -239,7 +239,7 @@ int tascam_pcm_hw_params(struct snd_pcm_substream *substream,
for (int i = 0; i < 5; i++) {
int target_sum = tascam->fpo.sample_rate_khz -
tascam->fpo.feedback_offset + i;
fpoInitPattern(8, tascam->fpo.full_frame_patterns[i],
fpo_init_pattern(8, tascam->fpo.full_frame_patterns[i],
initial_value, target_sum);
}
}
@ -269,8 +269,7 @@ int tascam_pcm_trigger(struct snd_pcm_substream *substream, int cmd)
bool do_start = false;
bool do_stop = false;
{
guard(spinlock_irqsave)(&tascam->lock);
scoped_guard(spinlock_irqsave, &tascam->lock) {
switch (cmd) {
case SNDRV_PCM_TRIGGER_START:
case SNDRV_PCM_TRIGGER_RESUME: