mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git
synced 2025-01-11 00:08:50 +00:00
ALSA: hda: add member to store ratio for stripe control
Stripe control programming is governed by following formula, which is referenced from the HD Audio specification(Revision 1.0a). { ((num_channels * bits_per_sample) / number of SDOs) >= 8 } Currently above is implemented in snd_hdac_get_stream_stripe_ctl(). This patch introduces a structure member to store the default factor of '8'. If any HW wants to use a different value, this member can be easily updated. Signed-off-by: Sameer Pujar <spujar@nvidia.com> Link: https://lore.kernel.org/r/1588580176-2801-3-git-send-email-spujar@nvidia.com Signed-off-by: Takashi Iwai <tiwai@suse.de>
This commit is contained in:
parent
bb9b02a458
commit
67ae482a59
@ -364,6 +364,9 @@ struct hdac_bus {
|
|||||||
/* link management */
|
/* link management */
|
||||||
struct list_head hlink_list;
|
struct list_head hlink_list;
|
||||||
bool cmd_dma_state;
|
bool cmd_dma_state;
|
||||||
|
|
||||||
|
/* factor used to derive STRIPE control value */
|
||||||
|
unsigned int sdo_limit;
|
||||||
};
|
};
|
||||||
|
|
||||||
int snd_hdac_bus_init(struct hdac_bus *bus, struct device *dev,
|
int snd_hdac_bus_init(struct hdac_bus *bus, struct device *dev,
|
||||||
|
@ -527,6 +527,18 @@ bool snd_hdac_bus_init_chip(struct hdac_bus *bus, bool full_reset)
|
|||||||
}
|
}
|
||||||
|
|
||||||
bus->chip_init = true;
|
bus->chip_init = true;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Default value of '8' is as per the HD audio specification (Rev 1.0a).
|
||||||
|
* Following relation is used to derive STRIPE control value.
|
||||||
|
* For sample rate <= 48K:
|
||||||
|
* { ((num_channels * bits_per_sample) / number of SDOs) >= 8 }
|
||||||
|
* For sample rate > 48K:
|
||||||
|
* { ((num_channels * bits_per_sample * rate/48000) /
|
||||||
|
* number of SDOs) >= 8 }
|
||||||
|
*/
|
||||||
|
bus->sdo_limit = 8;
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL_GPL(snd_hdac_bus_init_chip);
|
EXPORT_SYMBOL_GPL(snd_hdac_bus_init_chip);
|
||||||
|
@ -38,7 +38,7 @@ int snd_hdac_get_stream_stripe_ctl(struct hdac_bus *bus,
|
|||||||
else
|
else
|
||||||
value = (channels * bits_per_sample) / sdo_line;
|
value = (channels * bits_per_sample) / sdo_line;
|
||||||
|
|
||||||
if (value >= 8)
|
if (value >= bus->sdo_limit)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user