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) 52f9b95980Sapatard@mandriva.com #define KIRKWOOD_PLAYCTL_I2S_MUTE (1<<7) 53f9b95980Sapatard@mandriva.com #define KIRKWOOD_PLAYCTL_SPDIF_EN (1<<4) 54f9b95980Sapatard@mandriva.com #define KIRKWOOD_PLAYCTL_I2S_EN (1<<3) 55f9b95980Sapatard@mandriva.com #define KIRKWOOD_PLAYCTL_SIZE_MASK (7<<0) 56f9b95980Sapatard@mandriva.com #define KIRKWOOD_PLAYCTL_SIZE_16 (7<<0) 57f9b95980Sapatard@mandriva.com #define KIRKWOOD_PLAYCTL_SIZE_16_C (3<<0) 58f9b95980Sapatard@mandriva.com #define KIRKWOOD_PLAYCTL_SIZE_20 (2<<0) 59f9b95980Sapatard@mandriva.com #define KIRKWOOD_PLAYCTL_SIZE_24 (1<<0) 60f9b95980Sapatard@mandriva.com #define KIRKWOOD_PLAYCTL_SIZE_32 (0<<0) 61f9b95980Sapatard@mandriva.com 62f9b95980Sapatard@mandriva.com #define KIRKWOOD_PLAY_BUF_ADDR 0x1104 63f9b95980Sapatard@mandriva.com #define KIRKWOOD_PLAY_BUF_SIZE 0x1108 64f9b95980Sapatard@mandriva.com #define KIRKWOOD_PLAY_BYTE_COUNT 0x110C 65f9b95980Sapatard@mandriva.com 66f9b95980Sapatard@mandriva.com #define KIRKWOOD_DCO_CTL 0x1204 67f9b95980Sapatard@mandriva.com #define KIRKWOOD_DCO_CTL_OFFSET_MASK (0xFFF<<2) 68f9b95980Sapatard@mandriva.com #define KIRKWOOD_DCO_CTL_OFFSET_0 (0x800<<2) 69f9b95980Sapatard@mandriva.com #define KIRKWOOD_DCO_CTL_FREQ_MASK (3<<0) 70f9b95980Sapatard@mandriva.com #define KIRKWOOD_DCO_CTL_FREQ_11 (0<<0) 71f9b95980Sapatard@mandriva.com #define KIRKWOOD_DCO_CTL_FREQ_12 (1<<0) 72f9b95980Sapatard@mandriva.com #define KIRKWOOD_DCO_CTL_FREQ_24 (2<<0) 73f9b95980Sapatard@mandriva.com 74f9b95980Sapatard@mandriva.com #define KIRKWOOD_DCO_SPCR_STATUS 0x120c 75f9b95980Sapatard@mandriva.com #define KIRKWOOD_DCO_SPCR_STATUS_DCO_LOCK (1<<16) 76f9b95980Sapatard@mandriva.com 77f9b95980Sapatard@mandriva.com #define KIRKWOOD_ERR_CAUSE 0x1300 78f9b95980Sapatard@mandriva.com #define KIRKWOOD_ERR_MASK 0x1304 79f9b95980Sapatard@mandriva.com 80f9b95980Sapatard@mandriva.com #define KIRKWOOD_INT_CAUSE 0x1308 81f9b95980Sapatard@mandriva.com #define KIRKWOOD_INT_MASK 0x130C 82f9b95980Sapatard@mandriva.com #define KIRKWOOD_INT_CAUSE_PLAY_BYTES (1<<14) 83f9b95980Sapatard@mandriva.com #define KIRKWOOD_INT_CAUSE_REC_BYTES (1<<13) 84f9b95980Sapatard@mandriva.com #define KIRKWOOD_INT_CAUSE_DMA_PLAY_END (1<<7) 85f9b95980Sapatard@mandriva.com #define KIRKWOOD_INT_CAUSE_DMA_PLAY_3Q (1<<6) 86f9b95980Sapatard@mandriva.com #define KIRKWOOD_INT_CAUSE_DMA_PLAY_HALF (1<<5) 87f9b95980Sapatard@mandriva.com #define KIRKWOOD_INT_CAUSE_DMA_PLAY_1Q (1<<4) 88f9b95980Sapatard@mandriva.com #define KIRKWOOD_INT_CAUSE_DMA_REC_END (1<<3) 89f9b95980Sapatard@mandriva.com #define KIRKWOOD_INT_CAUSE_DMA_REC_3Q (1<<2) 90f9b95980Sapatard@mandriva.com #define KIRKWOOD_INT_CAUSE_DMA_REC_HALF (1<<1) 91f9b95980Sapatard@mandriva.com #define KIRKWOOD_INT_CAUSE_DMA_REC_1Q (1<<0) 92f9b95980Sapatard@mandriva.com 93f9b95980Sapatard@mandriva.com #define KIRKWOOD_REC_BYTE_INT_COUNT 0x1310 94f9b95980Sapatard@mandriva.com #define KIRKWOOD_PLAY_BYTE_INT_COUNT 0x1314 95f9b95980Sapatard@mandriva.com #define KIRKWOOD_BYTE_INT_COUNT_MASK 0xffffff 96f9b95980Sapatard@mandriva.com 97f9b95980Sapatard@mandriva.com #define KIRKWOOD_I2S_PLAYCTL 0x2508 98f9b95980Sapatard@mandriva.com #define KIRKWOOD_I2S_RECCTL 0x2408 99f9b95980Sapatard@mandriva.com #define KIRKWOOD_I2S_CTL_JUST_MASK (0xf<<26) 100f9b95980Sapatard@mandriva.com #define KIRKWOOD_I2S_CTL_LJ (0<<26) 101f9b95980Sapatard@mandriva.com #define KIRKWOOD_I2S_CTL_I2S (5<<26) 102f9b95980Sapatard@mandriva.com #define KIRKWOOD_I2S_CTL_RJ (8<<26) 103f9b95980Sapatard@mandriva.com #define KIRKWOOD_I2S_CTL_SIZE_MASK (3<<30) 104f9b95980Sapatard@mandriva.com #define KIRKWOOD_I2S_CTL_SIZE_16 (3<<30) 105f9b95980Sapatard@mandriva.com #define KIRKWOOD_I2S_CTL_SIZE_20 (2<<30) 106f9b95980Sapatard@mandriva.com #define KIRKWOOD_I2S_CTL_SIZE_24 (1<<30) 107f9b95980Sapatard@mandriva.com #define KIRKWOOD_I2S_CTL_SIZE_32 (0<<30) 108f9b95980Sapatard@mandriva.com 109f9b95980Sapatard@mandriva.com #define KIRKWOOD_AUDIO_BUF_MAX (16*1024*1024) 110f9b95980Sapatard@mandriva.com 111f9b95980Sapatard@mandriva.com /* Theses values come from the marvell alsa driver */ 112f9b95980Sapatard@mandriva.com /* need to find where they come from */ 113f9b95980Sapatard@mandriva.com #define KIRKWOOD_SND_MIN_PERIODS 8 114f9b95980Sapatard@mandriva.com #define KIRKWOOD_SND_MAX_PERIODS 16 115f9b95980Sapatard@mandriva.com #define KIRKWOOD_SND_MIN_PERIOD_BYTES 0x4000 116f9b95980Sapatard@mandriva.com #define KIRKWOOD_SND_MAX_PERIOD_BYTES 0x4000 117f9b95980Sapatard@mandriva.com 118f9b95980Sapatard@mandriva.com struct kirkwood_dma_data { 119f9b95980Sapatard@mandriva.com struct resource *mem; 120f9b95980Sapatard@mandriva.com void __iomem *io; 121f9b95980Sapatard@mandriva.com int irq; 122f9b95980Sapatard@mandriva.com int burst; 123f9b95980Sapatard@mandriva.com struct mbus_dram_target_info *dram; 124f9b95980Sapatard@mandriva.com }; 125f9b95980Sapatard@mandriva.com 126f9b95980Sapatard@mandriva.com #endif 127