Re: [PATCH 1/4] ASoC: SAMSUNG: Modify I2S driver to support idma

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Thu, Jun 9, 2011 at 1:39 PM, Sangbeom Kim <sbkim73@xxxxxxxxxxx> wrote:

> Â Â Â Âcase 2:
> + Â Â Â Â Â Â Â if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK)
> + Â Â Â Â Â Â Â Â Â Â Â i2s->dma_playback.dma_size = 4;
> + Â Â Â Â Â Â Â else
> + Â Â Â Â Â Â Â Â Â Â Â i2s->dma_capture.dma_size = 4;
> + Â Â Â Â Â Â Â break;

Why do we need this ?



> + Â Â Â case 1:
> + Â Â Â Â Â Â Â if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK)
> + Â Â Â Â Â Â Â Â Â Â Â i2s->dma_playback.dma_size = 2;
> + Â Â Â Â Â Â Â else
> + Â Â Â Â Â Â Â Â Â Â Â i2s->dma_capture.dma_size = 2;

I2S doesn't support Mono.


> Â#define SAMSUNG_I2S_RCLKSRC_0 Â0
> Â#define SAMSUNG_I2S_RCLKSRC_1 Â1
> -#define SAMSUNG_I2S_CDCLK Â Â Â Â Â Â Â2
> +#define SAMSUNG_I2S_CDCLK Â Â Â2
Please avoid inconsequential changes.

> +
> +#define I2SCON Â Â Â Â Â Â Â Â 0x0
> +#define I2SMOD Â Â Â Â Â Â Â Â 0x4
> +#define I2SFIC Â Â Â Â Â Â Â Â 0x8
> +#define I2SPSR Â Â Â Â Â Â Â Â 0xc
> +#define I2STXD Â Â Â Â Â Â Â Â 0x10
> +#define I2SRXD Â Â Â Â Â Â Â Â 0x14
> +#define I2SFICS Â Â Â Â Â Â Â Â Â Â Â Â0x18
> +#define I2STXDS Â Â Â Â Â Â Â Â Â Â Â Â0x1c
> +#define I2SAHB Â Â Â Â Â Â Â Â 0x20
> +#define I2SSTR0 Â Â Â Â Â Â Â Â Â Â Â Â0x24
> +#define I2SSIZE Â Â Â Â Â Â Â Â Â Â Â Â0x28
> +#define I2STRNCNT Â Â Â Â Â Â Â0x2c
> +#define I2SLVL0ADDR Â Â Â Â Â Â0x30
> +#define I2SLVL1ADDR Â Â Â Â Â Â0x34
> +#define I2SLVL2ADDR Â Â Â Â Â Â0x38
> +#define I2SLVL3ADDR Â Â Â Â Â Â0x3c
> +
> +#define CON_RSTCLR Â Â Â Â Â Â (1 << 31)
> +#define CON_FRXOFSTATUS Â Â Â Â Â Â Â Â(1 << 26)
> +#define CON_FRXORINTEN Â Â Â Â (1 << 25)
> +#define CON_FTXSURSTAT Â Â Â Â (1 << 24)
> +#define CON_FTXSURINTEN Â Â Â Â Â Â Â Â(1 << 23)
> +#define CON_TXSDMA_PAUSE Â Â Â (1 << 20)
> +#define CON_TXSDMA_ACTIVE Â Â Â(1 << 18)
> +
> +#define CON_FTXURSTATUS Â Â Â Â Â Â Â Â(1 << 17)
> +#define CON_FTXURINTEN Â Â Â Â (1 << 16)
> +#define CON_TXFIFO2_EMPTY Â Â Â(1 << 15)
> +#define CON_TXFIFO1_EMPTY Â Â Â(1 << 14)
> +#define CON_TXFIFO2_FULL Â Â Â (1 << 13)
> +#define CON_TXFIFO1_FULL Â Â Â (1 << 12)
> +
> +#define CON_LRINDEX Â Â Â Â Â Â(1 << 11)
> +#define CON_TXFIFO_EMPTY Â Â Â (1 << 10)
> +#define CON_RXFIFO_EMPTY Â Â Â (1 << 9)
> +#define CON_TXFIFO_FULL Â Â Â Â Â Â Â Â(1 << 8)
> +#define CON_RXFIFO_FULL Â Â Â Â Â Â Â Â(1 << 7)
> +#define CON_TXDMA_PAUSE Â Â Â Â Â Â Â Â(1 << 6)
> +#define CON_RXDMA_PAUSE Â Â Â Â Â Â Â Â(1 << 5)
> +#define CON_TXCH_PAUSE Â Â Â Â (1 << 4)
> +#define CON_RXCH_PAUSE Â Â Â Â (1 << 3)
> +#define CON_TXDMA_ACTIVE Â Â Â (1 << 2)
> +#define CON_RXDMA_ACTIVE Â Â Â (1 << 1)
> +#define CON_ACTIVE Â Â Â Â Â Â (1 << 0)
> +
> +#define MOD_OPCLK_CDCLK_OUT Â Â(0 << 30)
> +#define MOD_OPCLK_CDCLK_IN Â Â (1 << 30)
> +#define MOD_OPCLK_BCLK_OUT Â Â (2 << 30)
> +#define MOD_OPCLK_PCLK Â Â Â Â (3 << 30)
> +#define MOD_OPCLK_MASK Â Â Â Â (3 << 30)
> +#define MOD_TXS_IDMA Â Â Â Â Â (1 << 28)
> +
> +#define MOD_BLCS_SHIFT Â Â Â Â 26
> +#define MOD_BLCS_16BIT Â Â Â Â (0 << MOD_BLCS_SHIFT)
> +#define MOD_BLCS_8BIT Â Â Â Â Â(1 << MOD_BLCS_SHIFT)
> +#define MOD_BLCS_24BIT Â Â Â Â (2 << MOD_BLCS_SHIFT)
> +#define MOD_BLCS_MASK Â Â Â Â Â(3 << MOD_BLCS_SHIFT)
> +#define MOD_BLCP_SHIFT Â Â Â Â 24
> +#define MOD_BLCP_16BIT Â Â Â Â (0 << MOD_BLCP_SHIFT)
> +#define MOD_BLCP_8BIT Â Â Â Â Â(1 << MOD_BLCP_SHIFT)
> +#define MOD_BLCP_24BIT Â Â Â Â (2 << MOD_BLCP_SHIFT)
> +#define MOD_BLCP_MASK Â Â Â Â Â(3 << MOD_BLCP_SHIFT)
> +
> +#define MOD_C2DD_HHALF Â Â Â Â (1 << 21) /* Discard Higher-half */
> +#define MOD_C2DD_LHALF Â Â Â Â (1 << 20) /* Discard Lower-half */
> +#define MOD_C1DD_HHALF Â Â Â Â (1 << 19)
> +#define MOD_C1DD_LHALF Â Â Â Â (1 << 18)
> +#define MOD_DC2_EN Â Â Â Â Â Â (1 << 17)
> +#define MOD_DC1_EN Â Â Â Â Â Â (1 << 16)
> +#define MOD_BLC_16BIT Â Â Â Â Â(0 << 13)
> +#define MOD_BLC_8BIT Â Â Â Â Â (1 << 13)
> +#define MOD_BLC_24BIT Â Â Â Â Â(2 << 13)
> +#define MOD_BLC_MASK Â Â Â Â Â (3 << 13)
> +
> +#define MOD_IMS_SYSMUX Â Â Â Â (1 << 10)
> +#define MOD_SLAVE Â Â Â Â Â Â Â(1 << 11)
> +#define MOD_TXONLY Â Â Â Â Â Â (0 << 8)
> +#define MOD_RXONLY Â Â Â Â Â Â (1 << 8)
> +#define MOD_TXRX Â Â Â Â Â Â Â (2 << 8)
> +#define MOD_MASK Â Â Â Â Â Â Â (3 << 8)
> +#define MOD_LR_LLOW Â Â Â Â Â Â(0 << 7)
> +#define MOD_LR_RLOW Â Â Â Â Â Â(1 << 7)
> +#define MOD_SDF_IIS Â Â Â Â Â Â(0 << 5)
> +#define MOD_SDF_MSB Â Â Â Â Â Â(1 << 5)
> +#define MOD_SDF_LSB Â Â Â Â Â Â(2 << 5)
> +#define MOD_SDF_MASK Â Â Â Â Â (3 << 5)
> +#define MOD_RCLK_256FS Â Â Â Â (0 << 3)
> +#define MOD_RCLK_512FS Â Â Â Â (1 << 3)
> +#define MOD_RCLK_384FS Â Â Â Â (2 << 3)
> +#define MOD_RCLK_768FS Â Â Â Â (3 << 3)
> +#define MOD_RCLK_MASK Â Â Â Â Â(3 << 3)
> +#define MOD_BCLK_32FS Â Â Â Â Â(0 << 1)
> +#define MOD_BCLK_48FS Â Â Â Â Â(1 << 1)
> +#define MOD_BCLK_16FS Â Â Â Â Â(2 << 1)
> +#define MOD_BCLK_24FS Â Â Â Â Â(3 << 1)
> +#define MOD_BCLK_MASK Â Â Â Â Â(3 << 1)
> +#define MOD_8BIT Â Â Â Â Â Â Â (1 << 0)
> +
> +#define MOD_CDCLKCON Â Â Â Â Â (1 << 12)
> +
> +#define PSR_PSREN Â Â Â Â Â Â Â(1 << 15)
> +
> +#define FIC_TX2COUNT(x) Â Â Â Â Â Â Â Â(((x) >> Â24) & 0xf)
> +#define FIC_TX1COUNT(x) Â Â Â Â Â Â Â Â(((x) >> Â16) & 0xf)
> +
> +#define FIC_TXFLUSH Â Â Â Â Â Â(1 << 15)
> +#define FIC_RXFLUSH Â Â Â Â Â Â(1 << 7)
> +
> +#define FIC_TXCOUNT(x) Â Â Â Â (((x) >> Â8) & 0x7f)
> +#define FIC_RXCOUNT(x) Â Â Â Â (((x) >> Â0) & 0x7f)
> +#define FICS_TXCOUNT(x) Â Â Â Â Â Â Â Â(((x) >> Â8) & 0x7f)
> +
> +#define AHB_INTENLVL0 Â Â Â Â Â(1 << 24)
> +#define AHB_LVL0INT Â Â Â Â Â Â(1 << 20)
> +#define AHB_CLRLVL0INT Â Â Â Â (1 << 16)
> +#define AHB_DMARLD Â Â Â Â Â Â (1 << 5)
> +#define AHB_INTMASK Â Â Â Â Â Â(1 << 3)
> +#define AHB_DMAEN Â Â Â Â Â Â Â(1 << 0)
> +#define AHB_LVLINTMASK Â Â Â Â (0xf << 20)
> +
> +#define I2SSIZE_TRNMSK Â Â Â Â (0xffff)
> +#define I2SSIZE_SHIFT Â Â Â Â Â(16)
> +

The need of i2s.h is for machine drivers. Please move these register/bit
definitions to a new header(say i2s-regs.h) if we have to share them with
idma.c


> +#define msecs_to_loops(t) Â Â Â(loops_per_jiffy / 1000 * HZ * t)
> +
> +#define ST_RUNNING Â Â Â Â Â Â (1<<0)
> +#define ST_OPENED Â Â Â Â Â Â Â(1<<1)
These should be moved to the c file that uses them.
ÿô.nlj·Ÿ®‰­†+%ŠË±é¥Šwÿº{.nlj·¥Š{±þƲéÊþ)íèjg¬±¨¶‰šŽŠÝjÿ¾«þG«é¸¢·¦j:+v‰¨Šwèm¶Ÿÿþø®w¥þŠà£¢·hšâÿ†Ù



[Index of Archives]     [Linux SoC Development]     [Linux Rockchip Development]     [Linux USB Development]     [Video for Linux]     [Linux Audio Users]     [Linux SCSI]     [Yosemite News]

  Powered by Linux