aboutsummaryrefslogtreecommitdiffstats
path: root/arch
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2010-05-20 12:41:44 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2010-05-20 12:41:44 -0400
commit7f06a8b26aba1dc03b42272dc0089a800372c575 (patch)
tree7c67198f83d069eb13fd417e022d111b7e4c82a1 /arch
parentc3ad33c9bcb6616999953af76f16318120fe3691 (diff)
parentd71f4cece4bd97d05592836202fc04ff2e7817e3 (diff)
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound-2.6
* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound-2.6: (250 commits) ALSA: hda: Storage class should be before const qualifier ASoC: tpa6130a2: Remove CPVSS and HPVdd supplies ASoC: tpa6130a2: Define output pins with SND_SOC_DAPM_OUTPUT ASoC: sdp4430 - add sdp4430 pcm ops to DAI. ASoC: TWL6040: Enable earphone path in codec ASoC: SDP4430: Add support for Earphone speaker ASoC: SDP4430: Add sdp4430 machine driver ASoC: tlv320dac33: Avoid powering off while in BIAS_OFF ASoC: tlv320dac33: Use dev_dbg in dac33_hard_power function ALSA: sound/pci/asihpi: Use kzalloc ALSA: hdmi - dont fail on extra nodes ALSA: intelhdmi - add id for the CougarPoint chipset ALSA: intelhdmi - user friendly codec name ALSA: intelhdmi - add dependency on SND_DYNAMIC_MINORS ALSA: asihpi: incorrect range check ALSA: asihpi: testing the wrong variable ALSA: es1688: add pedantic range checks ARM: McBSP: Add support for omap4 in McBSP driver ARM: McBSP: Fix request for irq in OMAP4 OMAP: McBSP: Add 32-bit mode support ...
Diffstat (limited to 'arch')
-rw-r--r--arch/arm/mach-davinci/board-dm365-evm.c4
-rw-r--r--arch/arm/mach-omap2/mcbsp.c12
-rw-r--r--arch/arm/mach-s3c2412/dma.c3
-rw-r--r--arch/arm/plat-omap/include/plat/mcbsp.h6
-rw-r--r--arch/arm/plat-omap/mcbsp.c89
-rw-r--r--arch/arm/plat-samsung/include/plat/regs-s3c2412-iis.h82
6 files changed, 88 insertions, 108 deletions
diff --git a/arch/arm/mach-davinci/board-dm365-evm.c b/arch/arm/mach-davinci/board-dm365-evm.c
index 98814e6a5987..84acef1d0b3d 100644
--- a/arch/arm/mach-davinci/board-dm365-evm.c
+++ b/arch/arm/mach-davinci/board-dm365-evm.c
@@ -600,7 +600,11 @@ static __init void dm365_evm_init(void)
600 /* maybe setup mmc1/etc ... _after_ mmc0 */ 600 /* maybe setup mmc1/etc ... _after_ mmc0 */
601 evm_init_cpld(); 601 evm_init_cpld();
602 602
603#ifdef CONFIG_SND_DM365_AIC3X_CODEC
603 dm365_init_asp(&dm365_evm_snd_data); 604 dm365_init_asp(&dm365_evm_snd_data);
605#elif defined(CONFIG_SND_DM365_VOICE_CODEC)
606 dm365_init_vc(&dm365_evm_snd_data);
607#endif
604 dm365_init_rtc(); 608 dm365_init_rtc();
605 dm365_init_ks(&dm365evm_ks_data); 609 dm365_init_ks(&dm365evm_ks_data);
606 610
diff --git a/arch/arm/mach-omap2/mcbsp.c b/arch/arm/mach-omap2/mcbsp.c
index 2f3cad6f9402..c29337074ad3 100644
--- a/arch/arm/mach-omap2/mcbsp.c
+++ b/arch/arm/mach-omap2/mcbsp.c
@@ -187,32 +187,28 @@ static struct omap_mcbsp_platform_data omap44xx_mcbsp_pdata[] = {
187 .phys_base = OMAP44XX_MCBSP1_BASE, 187 .phys_base = OMAP44XX_MCBSP1_BASE,
188 .dma_rx_sync = OMAP44XX_DMA_MCBSP1_RX, 188 .dma_rx_sync = OMAP44XX_DMA_MCBSP1_RX,
189 .dma_tx_sync = OMAP44XX_DMA_MCBSP1_TX, 189 .dma_tx_sync = OMAP44XX_DMA_MCBSP1_TX,
190 .rx_irq = INT_24XX_MCBSP1_IRQ_RX, 190 .tx_irq = OMAP44XX_IRQ_MCBSP1,
191 .tx_irq = INT_24XX_MCBSP1_IRQ_TX,
192 .ops = &omap2_mcbsp_ops, 191 .ops = &omap2_mcbsp_ops,
193 }, 192 },
194 { 193 {
195 .phys_base = OMAP44XX_MCBSP2_BASE, 194 .phys_base = OMAP44XX_MCBSP2_BASE,
196 .dma_rx_sync = OMAP44XX_DMA_MCBSP2_RX, 195 .dma_rx_sync = OMAP44XX_DMA_MCBSP2_RX,
197 .dma_tx_sync = OMAP44XX_DMA_MCBSP2_TX, 196 .dma_tx_sync = OMAP44XX_DMA_MCBSP2_TX,
198 .rx_irq = INT_24XX_MCBSP2_IRQ_RX, 197 .tx_irq = OMAP44XX_IRQ_MCBSP2,
199 .tx_irq = INT_24XX_MCBSP2_IRQ_TX,
200 .ops = &omap2_mcbsp_ops, 198 .ops = &omap2_mcbsp_ops,
201 }, 199 },
202 { 200 {
203 .phys_base = OMAP44XX_MCBSP3_BASE, 201 .phys_base = OMAP44XX_MCBSP3_BASE,
204 .dma_rx_sync = OMAP44XX_DMA_MCBSP3_RX, 202 .dma_rx_sync = OMAP44XX_DMA_MCBSP3_RX,
205 .dma_tx_sync = OMAP44XX_DMA_MCBSP3_TX, 203 .dma_tx_sync = OMAP44XX_DMA_MCBSP3_TX,
206 .rx_irq = INT_24XX_MCBSP3_IRQ_RX, 204 .tx_irq = OMAP44XX_IRQ_MCBSP3,
207 .tx_irq = INT_24XX_MCBSP3_IRQ_TX,
208 .ops = &omap2_mcbsp_ops, 205 .ops = &omap2_mcbsp_ops,
209 }, 206 },
210 { 207 {
211 .phys_base = OMAP44XX_MCBSP4_BASE, 208 .phys_base = OMAP44XX_MCBSP4_BASE,
212 .dma_rx_sync = OMAP44XX_DMA_MCBSP4_RX, 209 .dma_rx_sync = OMAP44XX_DMA_MCBSP4_RX,
213 .dma_tx_sync = OMAP44XX_DMA_MCBSP4_TX, 210 .dma_tx_sync = OMAP44XX_DMA_MCBSP4_TX,
214 .rx_irq = INT_24XX_MCBSP4_IRQ_RX, 211 .tx_irq = OMAP44XX_IRQ_MCBSP4,
215 .tx_irq = INT_24XX_MCBSP4_IRQ_TX,
216 .ops = &omap2_mcbsp_ops, 212 .ops = &omap2_mcbsp_ops,
217 }, 213 },
218}; 214};
diff --git a/arch/arm/mach-s3c2412/dma.c b/arch/arm/mach-s3c2412/dma.c
index e880524904eb..7abecfca0b7e 100644
--- a/arch/arm/mach-s3c2412/dma.c
+++ b/arch/arm/mach-s3c2412/dma.c
@@ -30,7 +30,6 @@
30#include <mach/regs-mem.h> 30#include <mach/regs-mem.h>
31#include <mach/regs-lcd.h> 31#include <mach/regs-lcd.h>
32#include <mach/regs-sdi.h> 32#include <mach/regs-sdi.h>
33#include <plat/regs-s3c2412-iis.h>
34#include <plat/regs-iis.h> 33#include <plat/regs-iis.h>
35#include <plat/regs-spi.h> 34#include <plat/regs-spi.h>
36 35
@@ -119,13 +118,11 @@ static struct s3c24xx_dma_map __initdata s3c2412_dma_mappings[] = {
119 .name = "i2s-sdi", 118 .name = "i2s-sdi",
120 .channels = MAP(S3C2412_DMAREQSEL_I2SRX), 119 .channels = MAP(S3C2412_DMAREQSEL_I2SRX),
121 .channels_rx = MAP(S3C2412_DMAREQSEL_I2SRX), 120 .channels_rx = MAP(S3C2412_DMAREQSEL_I2SRX),
122 .hw_addr.from = S3C2410_PA_IIS + S3C2412_IISRXD,
123 }, 121 },
124 [DMACH_I2S_OUT] = { 122 [DMACH_I2S_OUT] = {
125 .name = "i2s-sdo", 123 .name = "i2s-sdo",
126 .channels = MAP(S3C2412_DMAREQSEL_I2STX), 124 .channels = MAP(S3C2412_DMAREQSEL_I2STX),
127 .channels_rx = MAP(S3C2412_DMAREQSEL_I2STX), 125 .channels_rx = MAP(S3C2412_DMAREQSEL_I2STX),
128 .hw_addr.to = S3C2410_PA_IIS + S3C2412_IISTXD,
129 }, 126 },
130 [DMACH_USB_EP1] = { 127 [DMACH_USB_EP1] = {
131 .name = "usb-ep1", 128 .name = "usb-ep1",
diff --git a/arch/arm/plat-omap/include/plat/mcbsp.h b/arch/arm/plat-omap/include/plat/mcbsp.h
index 7de903d7c1ce..975744f10a58 100644
--- a/arch/arm/plat-omap/include/plat/mcbsp.h
+++ b/arch/arm/plat-omap/include/plat/mcbsp.h
@@ -149,6 +149,8 @@
149#define OMAP_MCBSP_REG_WAKEUPEN 0xA8 149#define OMAP_MCBSP_REG_WAKEUPEN 0xA8
150#define OMAP_MCBSP_REG_XCCR 0xAC 150#define OMAP_MCBSP_REG_XCCR 0xAC
151#define OMAP_MCBSP_REG_RCCR 0xB0 151#define OMAP_MCBSP_REG_RCCR 0xB0
152#define OMAP_MCBSP_REG_XBUFFSTAT 0xB4
153#define OMAP_MCBSP_REG_RBUFFSTAT 0xB8
152#define OMAP_MCBSP_REG_SSELCR 0xBC 154#define OMAP_MCBSP_REG_SSELCR 0xBC
153 155
154#define OMAP_ST_REG_REV 0x00 156#define OMAP_ST_REG_REV 0x00
@@ -471,6 +473,8 @@ void omap_mcbsp_set_tx_threshold(unsigned int id, u16 threshold);
471void omap_mcbsp_set_rx_threshold(unsigned int id, u16 threshold); 473void omap_mcbsp_set_rx_threshold(unsigned int id, u16 threshold);
472u16 omap_mcbsp_get_max_tx_threshold(unsigned int id); 474u16 omap_mcbsp_get_max_tx_threshold(unsigned int id);
473u16 omap_mcbsp_get_max_rx_threshold(unsigned int id); 475u16 omap_mcbsp_get_max_rx_threshold(unsigned int id);
476u16 omap_mcbsp_get_tx_delay(unsigned int id);
477u16 omap_mcbsp_get_rx_delay(unsigned int id);
474int omap_mcbsp_get_dma_op_mode(unsigned int id); 478int omap_mcbsp_get_dma_op_mode(unsigned int id);
475#else 479#else
476static inline void omap_mcbsp_set_tx_threshold(unsigned int id, u16 threshold) 480static inline void omap_mcbsp_set_tx_threshold(unsigned int id, u16 threshold)
@@ -479,6 +483,8 @@ static inline void omap_mcbsp_set_rx_threshold(unsigned int id, u16 threshold)
479{ } 483{ }
480static inline u16 omap_mcbsp_get_max_tx_threshold(unsigned int id) { return 0; } 484static inline u16 omap_mcbsp_get_max_tx_threshold(unsigned int id) { return 0; }
481static inline u16 omap_mcbsp_get_max_rx_threshold(unsigned int id) { return 0; } 485static inline u16 omap_mcbsp_get_max_rx_threshold(unsigned int id) { return 0; }
486static inline u16 omap_mcbsp_get_tx_delay(unsigned int id) { return 0; }
487static inline u16 omap_mcbsp_get_rx_delay(unsigned int id) { return 0; }
482static inline int omap_mcbsp_get_dma_op_mode(unsigned int id) { return 0; } 488static inline int omap_mcbsp_get_dma_op_mode(unsigned int id) { return 0; }
483#endif 489#endif
484int omap_mcbsp_request(unsigned int id); 490int omap_mcbsp_request(unsigned int id);
diff --git a/arch/arm/plat-omap/mcbsp.c b/arch/arm/plat-omap/mcbsp.c
index e1d0440fd4a8..7e669c9744d8 100644
--- a/arch/arm/plat-omap/mcbsp.c
+++ b/arch/arm/plat-omap/mcbsp.c
@@ -489,7 +489,7 @@ void omap_mcbsp_set_tx_threshold(unsigned int id, u16 threshold)
489{ 489{
490 struct omap_mcbsp *mcbsp; 490 struct omap_mcbsp *mcbsp;
491 491
492 if (!cpu_is_omap34xx()) 492 if (!cpu_is_omap34xx() && !cpu_is_omap44xx())
493 return; 493 return;
494 494
495 if (!omap_mcbsp_check_valid_id(id)) { 495 if (!omap_mcbsp_check_valid_id(id)) {
@@ -511,7 +511,7 @@ void omap_mcbsp_set_rx_threshold(unsigned int id, u16 threshold)
511{ 511{
512 struct omap_mcbsp *mcbsp; 512 struct omap_mcbsp *mcbsp;
513 513
514 if (!cpu_is_omap34xx()) 514 if (!cpu_is_omap34xx() && !cpu_is_omap44xx())
515 return; 515 return;
516 516
517 if (!omap_mcbsp_check_valid_id(id)) { 517 if (!omap_mcbsp_check_valid_id(id)) {
@@ -560,6 +560,61 @@ u16 omap_mcbsp_get_max_rx_threshold(unsigned int id)
560} 560}
561EXPORT_SYMBOL(omap_mcbsp_get_max_rx_threshold); 561EXPORT_SYMBOL(omap_mcbsp_get_max_rx_threshold);
562 562
563#define MCBSP2_FIFO_SIZE 0x500 /* 1024 + 256 locations */
564#define MCBSP1345_FIFO_SIZE 0x80 /* 128 locations */
565/*
566 * omap_mcbsp_get_tx_delay returns the number of used slots in the McBSP FIFO
567 */
568u16 omap_mcbsp_get_tx_delay(unsigned int id)
569{
570 struct omap_mcbsp *mcbsp;
571 u16 buffstat;
572
573 if (!omap_mcbsp_check_valid_id(id)) {
574 printk(KERN_ERR "%s: Invalid id (%d)\n", __func__, id + 1);
575 return -ENODEV;
576 }
577 mcbsp = id_to_mcbsp_ptr(id);
578
579 /* Returns the number of free locations in the buffer */
580 buffstat = MCBSP_READ(mcbsp, XBUFFSTAT);
581
582 /* Number of slots are different in McBSP ports */
583 if (mcbsp->id == 2)
584 return MCBSP2_FIFO_SIZE - buffstat;
585 else
586 return MCBSP1345_FIFO_SIZE - buffstat;
587}
588EXPORT_SYMBOL(omap_mcbsp_get_tx_delay);
589
590/*
591 * omap_mcbsp_get_rx_delay returns the number of free slots in the McBSP FIFO
592 * to reach the threshold value (when the DMA will be triggered to read it)
593 */
594u16 omap_mcbsp_get_rx_delay(unsigned int id)
595{
596 struct omap_mcbsp *mcbsp;
597 u16 buffstat, threshold;
598
599 if (!omap_mcbsp_check_valid_id(id)) {
600 printk(KERN_ERR "%s: Invalid id (%d)\n", __func__, id + 1);
601 return -ENODEV;
602 }
603 mcbsp = id_to_mcbsp_ptr(id);
604
605 /* Returns the number of used locations in the buffer */
606 buffstat = MCBSP_READ(mcbsp, RBUFFSTAT);
607 /* RX threshold */
608 threshold = MCBSP_READ(mcbsp, THRSH1);
609
610 /* Return the number of location till we reach the threshold limit */
611 if (threshold <= buffstat)
612 return 0;
613 else
614 return threshold - buffstat;
615}
616EXPORT_SYMBOL(omap_mcbsp_get_rx_delay);
617
563/* 618/*
564 * omap_mcbsp_get_dma_op_mode just return the current configured 619 * omap_mcbsp_get_dma_op_mode just return the current configured
565 * operating mode for the mcbsp channel 620 * operating mode for the mcbsp channel
@@ -587,7 +642,7 @@ static inline void omap34xx_mcbsp_request(struct omap_mcbsp *mcbsp)
587 * Enable wakup behavior, smart idle and all wakeups 642 * Enable wakup behavior, smart idle and all wakeups
588 * REVISIT: some wakeups may be unnecessary 643 * REVISIT: some wakeups may be unnecessary
589 */ 644 */
590 if (cpu_is_omap34xx()) { 645 if (cpu_is_omap34xx() || cpu_is_omap44xx()) {
591 u16 syscon; 646 u16 syscon;
592 647
593 syscon = MCBSP_READ(mcbsp, SYSCON); 648 syscon = MCBSP_READ(mcbsp, SYSCON);
@@ -610,7 +665,7 @@ static inline void omap34xx_mcbsp_free(struct omap_mcbsp *mcbsp)
610 /* 665 /*
611 * Disable wakup behavior, smart idle and all wakeups 666 * Disable wakup behavior, smart idle and all wakeups
612 */ 667 */
613 if (cpu_is_omap34xx()) { 668 if (cpu_is_omap34xx() || cpu_is_omap44xx()) {
614 u16 syscon; 669 u16 syscon;
615 670
616 syscon = MCBSP_READ(mcbsp, SYSCON); 671 syscon = MCBSP_READ(mcbsp, SYSCON);
@@ -724,14 +779,17 @@ int omap_mcbsp_request(unsigned int id)
724 goto err_clk_disable; 779 goto err_clk_disable;
725 } 780 }
726 781
727 init_completion(&mcbsp->rx_irq_completion); 782 if (mcbsp->rx_irq) {
728 err = request_irq(mcbsp->rx_irq, omap_mcbsp_rx_irq_handler, 783 init_completion(&mcbsp->rx_irq_completion);
784 err = request_irq(mcbsp->rx_irq,
785 omap_mcbsp_rx_irq_handler,
729 0, "McBSP", (void *)mcbsp); 786 0, "McBSP", (void *)mcbsp);
730 if (err != 0) { 787 if (err != 0) {
731 dev_err(mcbsp->dev, "Unable to request RX IRQ %d " 788 dev_err(mcbsp->dev, "Unable to request RX IRQ %d "
732 "for McBSP%d\n", mcbsp->rx_irq, 789 "for McBSP%d\n", mcbsp->rx_irq,
733 mcbsp->id); 790 mcbsp->id);
734 goto err_free_irq; 791 goto err_free_irq;
792 }
735 } 793 }
736 } 794 }
737 795
@@ -781,7 +839,8 @@ void omap_mcbsp_free(unsigned int id)
781 839
782 if (mcbsp->io_type == OMAP_MCBSP_IRQ_IO) { 840 if (mcbsp->io_type == OMAP_MCBSP_IRQ_IO) {
783 /* Free IRQs */ 841 /* Free IRQs */
784 free_irq(mcbsp->rx_irq, (void *)mcbsp); 842 if (mcbsp->rx_irq)
843 free_irq(mcbsp->rx_irq, (void *)mcbsp);
785 free_irq(mcbsp->tx_irq, (void *)mcbsp); 844 free_irq(mcbsp->tx_irq, (void *)mcbsp);
786 } 845 }
787 846
@@ -855,7 +914,7 @@ void omap_mcbsp_start(unsigned int id, int tx, int rx)
855 MCBSP_WRITE(mcbsp, SPCR2, w | (1 << 7)); 914 MCBSP_WRITE(mcbsp, SPCR2, w | (1 << 7));
856 } 915 }
857 916
858 if (cpu_is_omap2430() || cpu_is_omap34xx()) { 917 if (cpu_is_omap2430() || cpu_is_omap34xx() || cpu_is_omap44xx()) {
859 /* Release the transmitter and receiver */ 918 /* Release the transmitter and receiver */
860 w = MCBSP_READ_CACHE(mcbsp, XCCR); 919 w = MCBSP_READ_CACHE(mcbsp, XCCR);
861 w &= ~(tx ? XDISABLE : 0); 920 w &= ~(tx ? XDISABLE : 0);
@@ -885,7 +944,7 @@ void omap_mcbsp_stop(unsigned int id, int tx, int rx)
885 944
886 /* Reset transmitter */ 945 /* Reset transmitter */
887 tx &= 1; 946 tx &= 1;
888 if (cpu_is_omap2430() || cpu_is_omap34xx()) { 947 if (cpu_is_omap2430() || cpu_is_omap34xx() || cpu_is_omap44xx()) {
889 w = MCBSP_READ_CACHE(mcbsp, XCCR); 948 w = MCBSP_READ_CACHE(mcbsp, XCCR);
890 w |= (tx ? XDISABLE : 0); 949 w |= (tx ? XDISABLE : 0);
891 MCBSP_WRITE(mcbsp, XCCR, w); 950 MCBSP_WRITE(mcbsp, XCCR, w);
@@ -895,7 +954,7 @@ void omap_mcbsp_stop(unsigned int id, int tx, int rx)
895 954
896 /* Reset receiver */ 955 /* Reset receiver */
897 rx &= 1; 956 rx &= 1;
898 if (cpu_is_omap2430() || cpu_is_omap34xx()) { 957 if (cpu_is_omap2430() || cpu_is_omap34xx() || cpu_is_omap44xx()) {
899 w = MCBSP_READ_CACHE(mcbsp, RCCR); 958 w = MCBSP_READ_CACHE(mcbsp, RCCR);
900 w |= (rx ? RDISABLE : 0); 959 w |= (rx ? RDISABLE : 0);
901 MCBSP_WRITE(mcbsp, RCCR, w); 960 MCBSP_WRITE(mcbsp, RCCR, w);
diff --git a/arch/arm/plat-samsung/include/plat/regs-s3c2412-iis.h b/arch/arm/plat-samsung/include/plat/regs-s3c2412-iis.h
deleted file mode 100644
index abf2fbc2eb2f..000000000000
--- a/arch/arm/plat-samsung/include/plat/regs-s3c2412-iis.h
+++ /dev/null
@@ -1,82 +0,0 @@
1/* linux/include/asm-arm/plat-s3c24xx/regs-s3c2412-iis.h
2 *
3 * Copyright 2007 Simtec Electronics <linux@simtec.co.uk>
4 * http://armlinux.simtec.co.uk/
5 *
6 * This program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License version 2 as
8 * published by the Free Software Foundation.
9 *
10 * S3C2412 IIS register definition
11*/
12
13#ifndef __ASM_ARCH_REGS_S3C2412_IIS_H
14#define __ASM_ARCH_REGS_S3C2412_IIS_H
15
16#define S3C2412_IISCON (0x00)
17#define S3C2412_IISMOD (0x04)
18#define S3C2412_IISFIC (0x08)
19#define S3C2412_IISPSR (0x0C)
20#define S3C2412_IISTXD (0x10)
21#define S3C2412_IISRXD (0x14)
22
23#define S3C2412_IISCON_LRINDEX (1 << 11)
24#define S3C2412_IISCON_TXFIFO_EMPTY (1 << 10)
25#define S3C2412_IISCON_RXFIFO_EMPTY (1 << 9)
26#define S3C2412_IISCON_TXFIFO_FULL (1 << 8)
27#define S3C2412_IISCON_RXFIFO_FULL (1 << 7)
28#define S3C2412_IISCON_TXDMA_PAUSE (1 << 6)
29#define S3C2412_IISCON_RXDMA_PAUSE (1 << 5)
30#define S3C2412_IISCON_TXCH_PAUSE (1 << 4)
31#define S3C2412_IISCON_RXCH_PAUSE (1 << 3)
32#define S3C2412_IISCON_TXDMA_ACTIVE (1 << 2)
33#define S3C2412_IISCON_RXDMA_ACTIVE (1 << 1)
34#define S3C2412_IISCON_IIS_ACTIVE (1 << 0)
35
36#define S3C64XX_IISMOD_BLC_16BIT (0 << 13)
37#define S3C64XX_IISMOD_BLC_8BIT (1 << 13)
38#define S3C64XX_IISMOD_BLC_24BIT (2 << 13)
39#define S3C64XX_IISMOD_BLC_MASK (3 << 13)
40
41#define S3C64XX_IISMOD_IMS_PCLK (0 << 10)
42#define S3C64XX_IISMOD_IMS_SYSMUX (1 << 10)
43
44#define S3C2412_IISMOD_MASTER_INTERNAL (0 << 10)
45#define S3C2412_IISMOD_MASTER_EXTERNAL (1 << 10)
46#define S3C2412_IISMOD_SLAVE (2 << 10)
47#define S3C2412_IISMOD_MASTER_MASK (3 << 10)
48#define S3C2412_IISMOD_MODE_TXONLY (0 << 8)
49#define S3C2412_IISMOD_MODE_RXONLY (1 << 8)
50#define S3C2412_IISMOD_MODE_TXRX (2 << 8)
51#define S3C2412_IISMOD_MODE_MASK (3 << 8)
52#define S3C2412_IISMOD_LR_LLOW (0 << 7)
53#define S3C2412_IISMOD_LR_RLOW (1 << 7)
54#define S3C2412_IISMOD_SDF_IIS (0 << 5)
55#define S3C2412_IISMOD_SDF_MSB (1 << 5)
56#define S3C2412_IISMOD_SDF_LSB (2 << 5)
57#define S3C2412_IISMOD_SDF_MASK (3 << 5)
58#define S3C2412_IISMOD_RCLK_256FS (0 << 3)
59#define S3C2412_IISMOD_RCLK_512FS (1 << 3)
60#define S3C2412_IISMOD_RCLK_384FS (2 << 3)
61#define S3C2412_IISMOD_RCLK_768FS (3 << 3)
62#define S3C2412_IISMOD_RCLK_MASK (3 << 3)
63#define S3C2412_IISMOD_BCLK_32FS (0 << 1)
64#define S3C2412_IISMOD_BCLK_48FS (1 << 1)
65#define S3C2412_IISMOD_BCLK_16FS (2 << 1)
66#define S3C2412_IISMOD_BCLK_24FS (3 << 1)
67#define S3C2412_IISMOD_BCLK_MASK (3 << 1)
68#define S3C2412_IISMOD_8BIT (1 << 0)
69
70#define S3C64XX_IISMOD_CDCLKCON (1 << 12)
71
72#define S3C2412_IISPSR_PSREN (1 << 15)
73
74#define S3C2412_IISFIC_TXFLUSH (1 << 15)
75#define S3C2412_IISFIC_RXFLUSH (1 << 7)
76#define S3C2412_IISFIC_TXCOUNT(x) (((x) >> 8) & 0xf)
77#define S3C2412_IISFIC_RXCOUNT(x) (((x) >> 0) & 0xf)
78
79
80
81#endif /* __ASM_ARCH_REGS_S3C2412_IIS_H */
82