diff options
author | Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com> | 2024-10-03 15:06:43 +0800 |
---|---|---|
committer | Vinod Koul <vkoul@kernel.org> | 2024-10-03 13:28:50 +0530 |
commit | 9942f90bdcc035eb5f01d7343dac99bd805ef3ec (patch) | |
tree | f645035ddaa316cf89ae86614ad14ea1aa232bcc | |
parent | 557e28f8b53243097162cf4d3e59bcee9fb9713b (diff) |
soundwire: optimize sdw_dpn_prop
before:
struct sdw_dpn_prop {
u32 num; /* 0 4 */
u32 max_word; /* 4 4 */
u32 min_word; /* 8 4 */
u32 num_words; /* 12 4 */
u32 * words; /* 16 8 */
enum sdw_dpn_type type; /* 24 4 */
u32 max_grouping; /* 28 4 */
bool simple_ch_prep_sm; /* 32 1 */
/* XXX 3 bytes hole, try to pack */
u32 ch_prep_timeout; /* 36 4 */
u32 imp_def_interrupts; /* 40 4 */
u32 max_ch; /* 44 4 */
u32 min_ch; /* 48 4 */
u32 num_channels; /* 52 4 */
u32 * channels; /* 56 8 */
/* --- cacheline 1 boundary (64 bytes) --- */
u32 num_ch_combinations; /* 64 4 */
/* XXX 4 bytes hole, try to pack */
u32 * ch_combinations; /* 72 8 */
u32 modes; /* 80 4 */
u32 max_async_buffer; /* 84 4 */
bool block_pack_mode; /* 88 1 */
bool read_only_wordlength; /* 89 1 */
/* XXX 2 bytes hole, try to pack */
u32 port_encoding; /* 92 4 */
struct sdw_dpn_audio_mode * audio_modes; /* 96 8 */
/* size: 104, cachelines: 2, members: 22 */
/* sum members: 95, holes: 3, sum holes: 9 */
/* last cacheline: 40 bytes */
};
after:
struct sdw_dpn_prop {
struct sdw_dpn_audio_mode * audio_modes; /* 0 8 */
u32 num; /* 8 4 */
u32 max_word; /* 12 4 */
u32 min_word; /* 16 4 */
u32 num_words; /* 20 4 */
u32 * words; /* 24 8 */
enum sdw_dpn_type type; /* 32 4 */
u32 max_grouping; /* 36 4 */
u32 ch_prep_timeout; /* 40 4 */
u32 imp_def_interrupts; /* 44 4 */
u32 max_ch; /* 48 4 */
u32 min_ch; /* 52 4 */
u32 num_channels; /* 56 4 */
u32 num_ch_combinations; /* 60 4 */
/* --- cacheline 1 boundary (64 bytes) --- */
u32 * channels; /* 64 8 */
u32 * ch_combinations; /* 72 8 */
u32 modes; /* 80 4 */
u32 max_async_buffer; /* 84 4 */
u32 port_encoding; /* 88 4 */
bool block_pack_mode; /* 92 1 */
bool read_only_wordlength; /* 93 1 */
bool simple_ch_prep_sm; /* 94 1 */
/* size: 96, cachelines: 2, members: 22 */
/* padding: 1 */
/* last cacheline: 32 bytes */
};
Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Signed-off-by: Bard Liao <yung-chuan.liao@linux.intel.com>
Link: https://lore.kernel.org/r/20241003070650.62787-8-yung-chuan.liao@linux.intel.com
Signed-off-by: Vinod Koul <vkoul@kernel.org>
-rw-r--r-- | include/linux/soundwire/sdw.h | 18 |
1 files changed, 9 insertions, 9 deletions
diff --git a/include/linux/soundwire/sdw.h b/include/linux/soundwire/sdw.h index c72095137a35..cc0afb8af333 100644 --- a/include/linux/soundwire/sdw.h +++ b/include/linux/soundwire/sdw.h @@ -288,6 +288,7 @@ struct sdw_dpn_audio_mode { /** * struct sdw_dpn_prop - Data Port DPn properties + * @audio_modes: Audio modes supported * @num: port number * @max_word: Maximum number of bits in a Payload Channel Sample, 1 to 64 * (inclusive) @@ -298,26 +299,26 @@ struct sdw_dpn_audio_mode { * @type: Data port type. Full, Simplified or Reduced * @max_grouping: Maximum number of samples that can be grouped together for * a full data port - * @simple_ch_prep_sm: If the port supports simplified channel prepare state - * machine * @ch_prep_timeout: Port-specific timeout value, in milliseconds * @imp_def_interrupts: If set, each bit corresponds to support for * implementation-defined interrupts * @max_ch: Maximum channels supported * @min_ch: Minimum channels supported * @num_channels: Number of discrete channels supported - * @channels: Discrete channels supported * @num_ch_combinations: Number of channel combinations supported + * @channels: Discrete channels supported * @ch_combinations: Channel combinations supported * @modes: SDW mode supported * @max_async_buffer: Number of samples that this port can buffer in * asynchronous modes + * @port_encoding: Payload Channel Sample encoding schemes supported * @block_pack_mode: Type of block port mode supported * @read_only_wordlength: Read Only wordlength field in DPN_BlockCtrl1 register - * @port_encoding: Payload Channel Sample encoding schemes supported - * @audio_modes: Audio modes supported + * @simple_ch_prep_sm: If the port supports simplified channel prepare state + * machine */ struct sdw_dpn_prop { + struct sdw_dpn_audio_mode *audio_modes; u32 num; u32 max_word; u32 min_word; @@ -325,21 +326,20 @@ struct sdw_dpn_prop { u32 *words; enum sdw_dpn_type type; u32 max_grouping; - bool simple_ch_prep_sm; u32 ch_prep_timeout; u32 imp_def_interrupts; u32 max_ch; u32 min_ch; u32 num_channels; - u32 *channels; u32 num_ch_combinations; + u32 *channels; u32 *ch_combinations; u32 modes; u32 max_async_buffer; + u32 port_encoding; bool block_pack_mode; bool read_only_wordlength; - u32 port_encoding; - struct sdw_dpn_audio_mode *audio_modes; + bool simple_ch_prep_sm; }; /** |