.. | .. |
---|
| 1 | +// SPDX-License-Identifier: GPL-2.0-or-later |
---|
1 | 2 | /* |
---|
2 | 3 | * PMac DBDMA lowlevel functions |
---|
3 | 4 | * |
---|
4 | 5 | * Copyright (c) by Takashi Iwai <tiwai@suse.de> |
---|
5 | 6 | * code based on dmasound.c. |
---|
6 | | - * |
---|
7 | | - * This program is free software; you can redistribute it and/or modify |
---|
8 | | - * it under the terms of the GNU General Public License as published by |
---|
9 | | - * the Free Software Foundation; either version 2 of the License, or |
---|
10 | | - * (at your option) any later version. |
---|
11 | | - * |
---|
12 | | - * This program is distributed in the hope that it will be useful, |
---|
13 | | - * but WITHOUT ANY WARRANTY; without even the implied warranty of |
---|
14 | | - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
---|
15 | | - * GNU General Public License for more details. |
---|
16 | | - * |
---|
17 | | - * You should have received a copy of the GNU General Public License |
---|
18 | | - * along with this program; if not, write to the Free Software |
---|
19 | | - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
---|
20 | 7 | */ |
---|
21 | 8 | |
---|
22 | 9 | |
---|
.. | .. |
---|
37 | 24 | |
---|
38 | 25 | |
---|
39 | 26 | /* fixed frequency table for awacs, screamer, burgundy, DACA (44100 max) */ |
---|
40 | | -static int awacs_freqs[8] = { |
---|
| 27 | +static const int awacs_freqs[8] = { |
---|
41 | 28 | 44100, 29400, 22050, 17640, 14700, 11025, 8820, 7350 |
---|
42 | 29 | }; |
---|
43 | 30 | /* fixed frequency table for tumbler */ |
---|
44 | | -static int tumbler_freqs[1] = { |
---|
| 31 | +static const int tumbler_freqs[1] = { |
---|
45 | 32 | 44100 |
---|
46 | 33 | }; |
---|
47 | 34 | |
---|
.. | .. |
---|
118 | 105 | { |
---|
119 | 106 | return (stream == SNDRV_PCM_STREAM_PLAYBACK) ? |
---|
120 | 107 | SNDRV_PCM_STREAM_CAPTURE : SNDRV_PCM_STREAM_PLAYBACK; |
---|
121 | | -} |
---|
122 | | - |
---|
123 | | -/* |
---|
124 | | - * allocate buffers |
---|
125 | | - */ |
---|
126 | | -static int snd_pmac_pcm_hw_params(struct snd_pcm_substream *subs, |
---|
127 | | - struct snd_pcm_hw_params *hw_params) |
---|
128 | | -{ |
---|
129 | | - return snd_pcm_lib_malloc_pages(subs, params_buffer_bytes(hw_params)); |
---|
130 | | -} |
---|
131 | | - |
---|
132 | | -/* |
---|
133 | | - * release buffers |
---|
134 | | - */ |
---|
135 | | -static int snd_pmac_pcm_hw_free(struct snd_pcm_substream *subs) |
---|
136 | | -{ |
---|
137 | | - snd_pcm_lib_free_pages(subs); |
---|
138 | | - return 0; |
---|
139 | 108 | } |
---|
140 | 109 | |
---|
141 | 110 | /* |
---|
.. | .. |
---|
257 | 226 | offset += rec->period_size; |
---|
258 | 227 | } |
---|
259 | 228 | /* make loop */ |
---|
260 | | - cp->command = cpu_to_le16(DBDMA_NOP + BR_ALWAYS); |
---|
| 229 | + cp->command = cpu_to_le16(DBDMA_NOP | BR_ALWAYS); |
---|
261 | 230 | cp->cmd_dep = cpu_to_le32(rec->cmd.addr); |
---|
262 | 231 | |
---|
263 | 232 | snd_pmac_dma_stop(rec); |
---|
.. | .. |
---|
684 | 653 | static const struct snd_pcm_ops snd_pmac_playback_ops = { |
---|
685 | 654 | .open = snd_pmac_playback_open, |
---|
686 | 655 | .close = snd_pmac_playback_close, |
---|
687 | | - .ioctl = snd_pcm_lib_ioctl, |
---|
688 | | - .hw_params = snd_pmac_pcm_hw_params, |
---|
689 | | - .hw_free = snd_pmac_pcm_hw_free, |
---|
690 | 656 | .prepare = snd_pmac_playback_prepare, |
---|
691 | 657 | .trigger = snd_pmac_playback_trigger, |
---|
692 | 658 | .pointer = snd_pmac_playback_pointer, |
---|
.. | .. |
---|
695 | 661 | static const struct snd_pcm_ops snd_pmac_capture_ops = { |
---|
696 | 662 | .open = snd_pmac_capture_open, |
---|
697 | 663 | .close = snd_pmac_capture_close, |
---|
698 | | - .ioctl = snd_pcm_lib_ioctl, |
---|
699 | | - .hw_params = snd_pmac_pcm_hw_params, |
---|
700 | | - .hw_free = snd_pmac_pcm_hw_free, |
---|
701 | 664 | .prepare = snd_pmac_capture_prepare, |
---|
702 | 665 | .trigger = snd_pmac_capture_trigger, |
---|
703 | 666 | .pointer = snd_pmac_capture_pointer, |
---|
.. | .. |
---|
734 | 697 | chip->capture.cur_freqs = chip->freqs_ok; |
---|
735 | 698 | |
---|
736 | 699 | /* preallocate 64k buffer */ |
---|
737 | | - snd_pcm_lib_preallocate_pages_for_all(pcm, SNDRV_DMA_TYPE_DEV, |
---|
738 | | - &chip->pdev->dev, |
---|
739 | | - 64 * 1024, 64 * 1024); |
---|
| 700 | + snd_pcm_set_managed_buffer_all(pcm, SNDRV_DMA_TYPE_DEV, |
---|
| 701 | + &chip->pdev->dev, |
---|
| 702 | + 64 * 1024, 64 * 1024); |
---|
740 | 703 | |
---|
741 | 704 | return 0; |
---|
742 | 705 | } |
---|
.. | .. |
---|
763 | 726 | chip->extra_dma.cmds->xfer_status = cpu_to_le16(0); |
---|
764 | 727 | chip->extra_dma.cmds->cmd_dep = cpu_to_le32(chip->extra_dma.addr); |
---|
765 | 728 | chip->extra_dma.cmds->phy_addr = cpu_to_le32(addr); |
---|
766 | | - chip->extra_dma.cmds->command = cpu_to_le16(OUTPUT_MORE + BR_ALWAYS); |
---|
| 729 | + chip->extra_dma.cmds->command = cpu_to_le16(OUTPUT_MORE | BR_ALWAYS); |
---|
767 | 730 | out_le32(&chip->awacs->control, |
---|
768 | 731 | (in_le32(&chip->awacs->control) & ~0x1f00) |
---|
769 | 732 | | (speed << 8)); |
---|
.. | .. |
---|
908 | 871 | |
---|
909 | 872 | /* if seems that Keylargo can't byte-swap */ |
---|
910 | 873 | for (mio = chip->node->parent; mio; mio = mio->parent) { |
---|
911 | | - if (strcmp(mio->name, "mac-io") == 0) { |
---|
| 874 | + if (of_node_name_eq(mio, "mac-io")) { |
---|
912 | 875 | if (of_device_is_compatible(mio, "Keylargo")) |
---|
913 | 876 | chip->can_byte_swap = 0; |
---|
914 | 877 | break; |
---|
.. | .. |
---|
1141 | 1104 | return 0; |
---|
1142 | 1105 | } |
---|
1143 | 1106 | |
---|
1144 | | -static struct snd_kcontrol_new auto_mute_controls[] = { |
---|
| 1107 | +static const struct snd_kcontrol_new auto_mute_controls[] = { |
---|
1145 | 1108 | { .iface = SNDRV_CTL_ELEM_IFACE_MIXER, |
---|
1146 | 1109 | .name = "Auto Mute Switch", |
---|
1147 | 1110 | .info = snd_pmac_boolean_mono_info, |
---|
.. | .. |
---|
1180 | 1143 | int i, err; |
---|
1181 | 1144 | unsigned int irq; |
---|
1182 | 1145 | unsigned long ctrl_addr, txdma_addr, rxdma_addr; |
---|
1183 | | - static struct snd_device_ops ops = { |
---|
| 1146 | + static const struct snd_device_ops ops = { |
---|
1184 | 1147 | .dev_free = snd_pmac_dev_free, |
---|
1185 | 1148 | }; |
---|
1186 | 1149 | |
---|
.. | .. |
---|
1211 | 1174 | np = chip->node; |
---|
1212 | 1175 | chip->requested = 0; |
---|
1213 | 1176 | if (chip->is_k2) { |
---|
1214 | | - static char *rnames[] = { |
---|
| 1177 | + static const char * const rnames[] = { |
---|
1215 | 1178 | "Sound Control", "Sound DMA" }; |
---|
1216 | 1179 | for (i = 0; i < 2; i ++) { |
---|
1217 | 1180 | if (of_address_to_resource(np->parent, i, |
---|
.. | .. |
---|
1236 | 1199 | txdma_addr = chip->rsrc[1].start; |
---|
1237 | 1200 | rxdma_addr = txdma_addr + 0x100; |
---|
1238 | 1201 | } else { |
---|
1239 | | - static char *rnames[] = { |
---|
| 1202 | + static const char * const rnames[] = { |
---|
1240 | 1203 | "Sound Control", "Sound Tx DMA", "Sound Rx DMA" }; |
---|
1241 | 1204 | for (i = 0; i < 3; i ++) { |
---|
1242 | 1205 | if (of_address_to_resource(np, i, |
---|
.. | .. |
---|
1313 | 1276 | } else if (chip->is_pbook_G3) { |
---|
1314 | 1277 | struct device_node* mio; |
---|
1315 | 1278 | for (mio = chip->node->parent; mio; mio = mio->parent) { |
---|
1316 | | - if (strcmp(mio->name, "mac-io") == 0) { |
---|
| 1279 | + if (of_node_name_eq(mio, "mac-io")) { |
---|
1317 | 1280 | struct resource r; |
---|
1318 | 1281 | if (of_address_to_resource(mio, 0, &r) == 0) |
---|
1319 | 1282 | chip->macio_base = |
---|
.. | .. |
---|
1365 | 1328 | snd_power_change_state(chip->card, SNDRV_CTL_POWER_D3hot); |
---|
1366 | 1329 | if (chip->suspend) |
---|
1367 | 1330 | chip->suspend(chip); |
---|
1368 | | - snd_pcm_suspend_all(chip->pcm); |
---|
1369 | 1331 | spin_lock_irqsave(&chip->reg_lock, flags); |
---|
1370 | 1332 | snd_pmac_beep_stop(chip); |
---|
1371 | 1333 | spin_unlock_irqrestore(&chip->reg_lock, flags); |
---|