1f9b95980Sapatard@mandriva.com /* 2f9b95980Sapatard@mandriva.com * kirkwood.h 3f9b95980Sapatard@mandriva.com * 4f9b95980Sapatard@mandriva.com * (c) 2010 Arnaud Patard <apatard@mandriva.com> 5f9b95980Sapatard@mandriva.com * 6f9b95980Sapatard@mandriva.com * This program is free software; you can redistribute it and/or modify it 7f9b95980Sapatard@mandriva.com * under the terms of the GNU General Public License as published by the 8f9b95980Sapatard@mandriva.com * Free Software Foundation; either version 2 of the License, or (at your 9f9b95980Sapatard@mandriva.com * option) any later version. 10f9b95980Sapatard@mandriva.com */ 11f9b95980Sapatard@mandriva.com 12f9b95980Sapatard@mandriva.com #ifndef _KIRKWOOD_AUDIO_H 13f9b95980Sapatard@mandriva.com #define _KIRKWOOD_AUDIO_H 14f9b95980Sapatard@mandriva.com 15f9b95980Sapatard@mandriva.com #define KIRKWOOD_RECORD_WIN 0 16f9b95980Sapatard@mandriva.com #define KIRKWOOD_PLAYBACK_WIN 1 17f9b95980Sapatard@mandriva.com #define KIRKWOOD_MAX_AUDIO_WIN 2 18f9b95980Sapatard@mandriva.com 19f9b95980Sapatard@mandriva.com #define KIRKWOOD_AUDIO_WIN_BASE_REG(win) (0xA00 + ((win)<<3)) 20f9b95980Sapatard@mandriva.com #define KIRKWOOD_AUDIO_WIN_CTRL_REG(win) (0xA04 + ((win)<<3)) 21f9b95980Sapatard@mandriva.com 22f9b95980Sapatard@mandriva.com 23f9b95980Sapatard@mandriva.com #define KIRKWOOD_RECCTL 0x1000 24f9b95980Sapatard@mandriva.com #define KIRKWOOD_RECCTL_SPDIF_EN (1<<11) 25f9b95980Sapatard@mandriva.com #define KIRKWOOD_RECCTL_I2S_EN (1<<10) 26f9b95980Sapatard@mandriva.com #define KIRKWOOD_RECCTL_PAUSE (1<<9) 27f9b95980Sapatard@mandriva.com #define KIRKWOOD_RECCTL_MUTE (1<<8) 28f9b95980Sapatard@mandriva.com #define KIRKWOOD_RECCTL_BURST_MASK (3<<5) 29f9b95980Sapatard@mandriva.com #define KIRKWOOD_RECCTL_BURST_128 (2<<5) 30f9b95980Sapatard@mandriva.com #define KIRKWOOD_RECCTL_BURST_32 (1<<5) 31f9b95980Sapatard@mandriva.com #define KIRKWOOD_RECCTL_MONO (1<<4) 32f9b95980Sapatard@mandriva.com #define KIRKWOOD_RECCTL_MONO_CHAN_RIGHT (1<<3) 33f9b95980Sapatard@mandriva.com #define KIRKWOOD_RECCTL_MONO_CHAN_LEFT (0<<3) 34f9b95980Sapatard@mandriva.com #define KIRKWOOD_RECCTL_SIZE_MASK (7<<0) 35f9b95980Sapatard@mandriva.com #define KIRKWOOD_RECCTL_SIZE_16 (7<<0) 36f9b95980Sapatard@mandriva.com #define KIRKWOOD_RECCTL_SIZE_16_C (3<<0) 37f9b95980Sapatard@mandriva.com #define KIRKWOOD_RECCTL_SIZE_20 (2<<0) 38f9b95980Sapatard@mandriva.com #define KIRKWOOD_RECCTL_SIZE_24 (1<<0) 39f9b95980Sapatard@mandriva.com #define KIRKWOOD_RECCTL_SIZE_32 (0<<0) 40f9b95980Sapatard@mandriva.com 41f9b95980Sapatard@mandriva.com #define KIRKWOOD_REC_BUF_ADDR 0x1004 42f9b95980Sapatard@mandriva.com #define KIRKWOOD_REC_BUF_SIZE 0x1008 43f9b95980Sapatard@mandriva.com #define KIRKWOOD_REC_BYTE_COUNT 0x100C 44f9b95980Sapatard@mandriva.com 45f9b95980Sapatard@mandriva.com #define KIRKWOOD_PLAYCTL 0x1100 46f9b95980Sapatard@mandriva.com #define KIRKWOOD_PLAYCTL_PLAY_BUSY (1<<16) 47f9b95980Sapatard@mandriva.com #define KIRKWOOD_PLAYCTL_BURST_MASK (3<<11) 48f9b95980Sapatard@mandriva.com #define KIRKWOOD_PLAYCTL_BURST_128 (2<<11) 49f9b95980Sapatard@mandriva.com #define KIRKWOOD_PLAYCTL_BURST_32 (1<<11) 50f9b95980Sapatard@mandriva.com #define KIRKWOOD_PLAYCTL_PAUSE (1<<9) 51f9b95980Sapatard@mandriva.com #define KIRKWOOD_PLAYCTL_SPDIF_MUTE (1<<8) 52dfe4c936Sarnaud.patard@rtp-net.org #define KIRKWOOD_PLAYCTL_MONO_MASK (3<<5) 53dfe4c936Sarnaud.patard@rtp-net.org #define KIRKWOOD_PLAYCTL_MONO_BOTH (3<<5) 54dfe4c936Sarnaud.patard@rtp-net.org #define KIRKWOOD_PLAYCTL_MONO_OFF (0<<5) 55f9b95980Sapatard@mandriva.com #define KIRKWOOD_PLAYCTL_I2S_MUTE (1<<7) 56f9b95980Sapatard@mandriva.com #define KIRKWOOD_PLAYCTL_SPDIF_EN (1<<4) 57f9b95980Sapatard@mandriva.com #define KIRKWOOD_PLAYCTL_I2S_EN (1<<3) 58f9b95980Sapatard@mandriva.com #define KIRKWOOD_PLAYCTL_SIZE_MASK (7<<0) 59f9b95980Sapatard@mandriva.com #define KIRKWOOD_PLAYCTL_SIZE_16 (7<<0) 60f9b95980Sapatard@mandriva.com #define KIRKWOOD_PLAYCTL_SIZE_16_C (3<<0) 61f9b95980Sapatard@mandriva.com #define KIRKWOOD_PLAYCTL_SIZE_20 (2<<0) 62f9b95980Sapatard@mandriva.com #define KIRKWOOD_PLAYCTL_SIZE_24 (1<<0) 63f9b95980Sapatard@mandriva.com #define KIRKWOOD_PLAYCTL_SIZE_32 (0<<0) 64f9b95980Sapatard@mandriva.com 65f9b95980Sapatard@mandriva.com #define KIRKWOOD_PLAY_BUF_ADDR 0x1104 66f9b95980Sapatard@mandriva.com #define KIRKWOOD_PLAY_BUF_SIZE 0x1108 67f9b95980Sapatard@mandriva.com #define KIRKWOOD_PLAY_BYTE_COUNT 0x110C 68f9b95980Sapatard@mandriva.com 69f9b95980Sapatard@mandriva.com #define KIRKWOOD_DCO_CTL 0x1204 70f9b95980Sapatard@mandriva.com #define KIRKWOOD_DCO_CTL_OFFSET_MASK (0xFFF<<2) 71f9b95980Sapatard@mandriva.com #define KIRKWOOD_DCO_CTL_OFFSET_0 (0x800<<2) 72f9b95980Sapatard@mandriva.com #define KIRKWOOD_DCO_CTL_FREQ_MASK (3<<0) 73f9b95980Sapatard@mandriva.com #define KIRKWOOD_DCO_CTL_FREQ_11 (0<<0) 74f9b95980Sapatard@mandriva.com #define KIRKWOOD_DCO_CTL_FREQ_12 (1<<0) 75f9b95980Sapatard@mandriva.com #define KIRKWOOD_DCO_CTL_FREQ_24 (2<<0) 76f9b95980Sapatard@mandriva.com 77f9b95980Sapatard@mandriva.com #define KIRKWOOD_DCO_SPCR_STATUS 0x120c 78f9b95980Sapatard@mandriva.com #define KIRKWOOD_DCO_SPCR_STATUS_DCO_LOCK (1<<16) 79f9b95980Sapatard@mandriva.com 80f9b95980Sapatard@mandriva.com #define KIRKWOOD_ERR_CAUSE 0x1300 81f9b95980Sapatard@mandriva.com #define KIRKWOOD_ERR_MASK 0x1304 82f9b95980Sapatard@mandriva.com 83f9b95980Sapatard@mandriva.com #define KIRKWOOD_INT_CAUSE 0x1308 84f9b95980Sapatard@mandriva.com #define KIRKWOOD_INT_MASK 0x130C 85f9b95980Sapatard@mandriva.com #define KIRKWOOD_INT_CAUSE_PLAY_BYTES (1<<14) 86f9b95980Sapatard@mandriva.com #define KIRKWOOD_INT_CAUSE_REC_BYTES (1<<13) 87f9b95980Sapatard@mandriva.com #define KIRKWOOD_INT_CAUSE_DMA_PLAY_END (1<<7) 88f9b95980Sapatard@mandriva.com #define KIRKWOOD_INT_CAUSE_DMA_PLAY_3Q (1<<6) 89f9b95980Sapatard@mandriva.com #define KIRKWOOD_INT_CAUSE_DMA_PLAY_HALF (1<<5) 90f9b95980Sapatard@mandriva.com #define KIRKWOOD_INT_CAUSE_DMA_PLAY_1Q (1<<4) 91f9b95980Sapatard@mandriva.com #define KIRKWOOD_INT_CAUSE_DMA_REC_END (1<<3) 92f9b95980Sapatard@mandriva.com #define KIRKWOOD_INT_CAUSE_DMA_REC_3Q (1<<2) 93f9b95980Sapatard@mandriva.com #define KIRKWOOD_INT_CAUSE_DMA_REC_HALF (1<<1) 94f9b95980Sapatard@mandriva.com #define KIRKWOOD_INT_CAUSE_DMA_REC_1Q (1<<0) 95f9b95980Sapatard@mandriva.com 96f9b95980Sapatard@mandriva.com #define KIRKWOOD_REC_BYTE_INT_COUNT 0x1310 97f9b95980Sapatard@mandriva.com #define KIRKWOOD_PLAY_BYTE_INT_COUNT 0x1314 98f9b95980Sapatard@mandriva.com #define KIRKWOOD_BYTE_INT_COUNT_MASK 0xffffff 99f9b95980Sapatard@mandriva.com 100f9b95980Sapatard@mandriva.com #define KIRKWOOD_I2S_PLAYCTL 0x2508 101f9b95980Sapatard@mandriva.com #define KIRKWOOD_I2S_RECCTL 0x2408 102f9b95980Sapatard@mandriva.com #define KIRKWOOD_I2S_CTL_JUST_MASK (0xf<<26) 103f9b95980Sapatard@mandriva.com #define KIRKWOOD_I2S_CTL_LJ (0<<26) 104f9b95980Sapatard@mandriva.com #define KIRKWOOD_I2S_CTL_I2S (5<<26) 105f9b95980Sapatard@mandriva.com #define KIRKWOOD_I2S_CTL_RJ (8<<26) 106f9b95980Sapatard@mandriva.com #define KIRKWOOD_I2S_CTL_SIZE_MASK (3<<30) 107f9b95980Sapatard@mandriva.com #define KIRKWOOD_I2S_CTL_SIZE_16 (3<<30) 108f9b95980Sapatard@mandriva.com #define KIRKWOOD_I2S_CTL_SIZE_20 (2<<30) 109f9b95980Sapatard@mandriva.com #define KIRKWOOD_I2S_CTL_SIZE_24 (1<<30) 110f9b95980Sapatard@mandriva.com #define KIRKWOOD_I2S_CTL_SIZE_32 (0<<30) 111f9b95980Sapatard@mandriva.com 112f9b95980Sapatard@mandriva.com #define KIRKWOOD_AUDIO_BUF_MAX (16*1024*1024) 113f9b95980Sapatard@mandriva.com 114f9b95980Sapatard@mandriva.com /* Theses values come from the marvell alsa driver */ 115f9b95980Sapatard@mandriva.com /* need to find where they come from */ 116f9b95980Sapatard@mandriva.com #define KIRKWOOD_SND_MIN_PERIODS 8 117f9b95980Sapatard@mandriva.com #define KIRKWOOD_SND_MAX_PERIODS 16 118f9b95980Sapatard@mandriva.com #define KIRKWOOD_SND_MIN_PERIOD_BYTES 0x4000 119f9b95980Sapatard@mandriva.com #define KIRKWOOD_SND_MAX_PERIOD_BYTES 0x4000 120f9b95980Sapatard@mandriva.com 121f9b95980Sapatard@mandriva.com struct kirkwood_dma_data { 122f9b95980Sapatard@mandriva.com void __iomem *io; 123d8d11ba5SRussell King uint32_t ctl_play; 124d8d11ba5SRussell King uint32_t ctl_rec; 125f9b95980Sapatard@mandriva.com int irq; 126f9b95980Sapatard@mandriva.com int burst; 127e919c716SAndrew Lunn struct clk *clk; 128f9b95980Sapatard@mandriva.com }; 129f9b95980Sapatard@mandriva.com 130f9b95980Sapatard@mandriva.com #endif 131