• Home
  • Raw
  • Download

Lines Matching +full:reg +full:- +full:data

2  * motu-protocol-v3.c - a part of driver for MOTU FireWire series
4 * Copyright (c) 2015-2017 Takashi Sakamoto <o-takashi@sakamocchi.jp>
30 __be32 reg; in v3_get_clock_rate() local
31 u32 data; in v3_get_clock_rate() local
34 err = snd_motu_transaction_read(motu, V3_CLOCK_STATUS_OFFSET, &reg, in v3_get_clock_rate()
35 sizeof(reg)); in v3_get_clock_rate()
38 data = be32_to_cpu(reg); in v3_get_clock_rate()
40 data = (data & V3_CLOCK_RATE_MASK) >> V3_CLOCK_RATE_SHIFT; in v3_get_clock_rate()
41 if (data >= ARRAY_SIZE(snd_motu_clock_rates)) in v3_get_clock_rate()
42 return -EIO; in v3_get_clock_rate()
44 *rate = snd_motu_clock_rates[data]; in v3_get_clock_rate()
51 __be32 reg; in v3_set_clock_rate() local
52 u32 data; in v3_set_clock_rate() local
61 return -EINVAL; in v3_set_clock_rate()
63 err = snd_motu_transaction_read(motu, V3_CLOCK_STATUS_OFFSET, &reg, in v3_set_clock_rate()
64 sizeof(reg)); in v3_set_clock_rate()
67 data = be32_to_cpu(reg); in v3_set_clock_rate()
69 data &= ~(V3_CLOCK_RATE_MASK | V3_FETCH_PCM_FRAMES); in v3_set_clock_rate()
70 data |= i << V3_CLOCK_RATE_SHIFT; in v3_set_clock_rate()
72 need_to_wait = data != be32_to_cpu(reg); in v3_set_clock_rate()
74 reg = cpu_to_be32(data); in v3_set_clock_rate()
75 err = snd_motu_transaction_write(motu, V3_CLOCK_STATUS_OFFSET, &reg, in v3_set_clock_rate()
76 sizeof(reg)); in v3_set_clock_rate()
83 return -EINTR; in v3_set_clock_rate()
92 __be32 reg; in v3_get_clock_source() local
93 u32 data; in v3_get_clock_source() local
97 err = snd_motu_transaction_read(motu, V3_CLOCK_STATUS_OFFSET, &reg, in v3_get_clock_source()
98 sizeof(reg)); in v3_get_clock_source()
101 data = be32_to_cpu(reg); in v3_get_clock_source()
103 val = data & V3_CLOCK_SOURCE_MASK; in v3_get_clock_source()
112 &reg, sizeof(reg)); in v3_get_clock_source()
115 data = be32_to_cpu(reg); in v3_get_clock_source()
118 if (data & V3_NO_ADAT_OPT_IN_IFACE_A) in v3_get_clock_source()
123 if (data & V3_NO_ADAT_OPT_IN_IFACE_B) in v3_get_clock_source()
137 __be32 reg; in v3_switch_fetching_mode() local
138 u32 data; in v3_switch_fetching_mode() local
141 err = snd_motu_transaction_read(motu, V3_CLOCK_STATUS_OFFSET, &reg, in v3_switch_fetching_mode()
142 sizeof(reg)); in v3_switch_fetching_mode()
145 data = be32_to_cpu(reg); in v3_switch_fetching_mode()
148 data |= V3_FETCH_PCM_FRAMES; in v3_switch_fetching_mode()
150 data &= ~V3_FETCH_PCM_FRAMES; in v3_switch_fetching_mode()
152 reg = cpu_to_be32(data); in v3_switch_fetching_mode()
153 return snd_motu_transaction_write(motu, V3_CLOCK_STATUS_OFFSET, &reg, in v3_switch_fetching_mode()
154 sizeof(reg)); in v3_switch_fetching_mode()
164 formats->msg_chunks = 2; in calculate_fixed_part()
208 * At least, packets have two data chunks for S/PDIF on coaxial in calculate_fixed_part()
216 * a result, this part can includes empty data chunks. in calculate_fixed_part()
218 formats->fixed_part_pcm_chunks[0] = round_up(2 + pcm_chunks[0], 4) - 2; in calculate_fixed_part()
219 formats->fixed_part_pcm_chunks[1] = round_up(2 + pcm_chunks[1], 4) - 2; in calculate_fixed_part()
221 formats->fixed_part_pcm_chunks[2] = in calculate_fixed_part()
222 round_up(2 + pcm_chunks[2], 4) - 2; in calculate_fixed_part()
226 enum snd_motu_spec_flags flags, u32 data, in calculate_differed_part() argument
233 if ((flags & SND_MOTU_SPEC_HAS_OPT_IFACE_A) && (data & a_enable_mask)) { in calculate_differed_part()
234 if (data & a_no_adat_mask) { in calculate_differed_part()
236 * Additional two data chunks for S/PDIF on optical in calculate_differed_part()
237 * interface A. This includes empty data chunks. in calculate_differed_part()
243 * Additional data chunks for ADAT on optical interface in calculate_differed_part()
251 if ((flags & SND_MOTU_SPEC_HAS_OPT_IFACE_B) && (data & b_enable_mask)) { in calculate_differed_part()
252 if (data & b_no_adat_mask) { in calculate_differed_part()
254 * Additional two data chunks for S/PDIF on optical in calculate_differed_part()
255 * interface B. This includes empty data chunks. in calculate_differed_part()
261 * Additional data chunks for ADAT on optical interface in calculate_differed_part()
273 formats->differed_part_pcm_chunks[i] = pcm_chunks[i]; in calculate_differed_part()
279 __be32 reg; in v3_cache_packet_formats() local
280 u32 data; in v3_cache_packet_formats() local
283 err = snd_motu_transaction_read(motu, V3_OPT_IFACE_MODE_OFFSET, &reg, in v3_cache_packet_formats()
284 sizeof(reg)); in v3_cache_packet_formats()
287 data = be32_to_cpu(reg); in v3_cache_packet_formats()
289 calculate_fixed_part(&motu->tx_packet_formats, AMDTP_IN_STREAM, in v3_cache_packet_formats()
290 motu->spec->flags, motu->spec->analog_in_ports); in v3_cache_packet_formats()
291 calculate_differed_part(&motu->tx_packet_formats, in v3_cache_packet_formats()
292 motu->spec->flags, data, in v3_cache_packet_formats()
296 calculate_fixed_part(&motu->rx_packet_formats, AMDTP_OUT_STREAM, in v3_cache_packet_formats()
297 motu->spec->flags, motu->spec->analog_out_ports); in v3_cache_packet_formats()
298 calculate_differed_part(&motu->rx_packet_formats, in v3_cache_packet_formats()
299 motu->spec->flags, data, in v3_cache_packet_formats()
303 motu->tx_packet_formats.pcm_byte_offset = 10; in v3_cache_packet_formats()
304 motu->rx_packet_formats.pcm_byte_offset = 10; in v3_cache_packet_formats()