Linux Kernel  3.7.1
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
Data Structures | Macros | Functions
s6000-i2s.c File Reference
#include <linux/init.h>
#include <linux/module.h>
#include <linux/device.h>
#include <linux/delay.h>
#include <linux/clk.h>
#include <linux/interrupt.h>
#include <linux/io.h>
#include <linux/slab.h>
#include <sound/core.h>
#include <sound/pcm.h>
#include <sound/pcm_params.h>
#include <sound/initval.h>
#include <sound/soc.h>
#include "s6000-i2s.h"
#include "s6000-pcm.h"

Go to the source code of this file.

Data Structures

struct  s6000_i2s_dev
 

Macros

#define S6_I2S_INTERRUPT_STATUS   0x00
 
#define S6_I2S_INT_OVERRUN   1
 
#define S6_I2S_INT_UNDERRUN   2
 
#define S6_I2S_INT_ALIGNMENT   4
 
#define S6_I2S_INTERRUPT_ENABLE   0x04
 
#define S6_I2S_INTERRUPT_RAW   0x08
 
#define S6_I2S_INTERRUPT_CLEAR   0x0C
 
#define S6_I2S_INTERRUPT_SET   0x10
 
#define S6_I2S_MODE   0x20
 
#define S6_I2S_DUAL   0
 
#define S6_I2S_WIDE   1
 
#define S6_I2S_TX_DEFAULT   0x24
 
#define S6_I2S_DATA_CFG(c)   (0x40 + 0x10 * (c))
 
#define S6_I2S_IN   0
 
#define S6_I2S_OUT   1
 
#define S6_I2S_UNUSED   2
 
#define S6_I2S_INTERFACE_CFG(c)   (0x44 + 0x10 * (c))
 
#define S6_I2S_DIV_MASK   0x001fff
 
#define S6_I2S_16BIT   0x000000
 
#define S6_I2S_20BIT   0x002000
 
#define S6_I2S_24BIT   0x004000
 
#define S6_I2S_32BIT   0x006000
 
#define S6_I2S_BITS_MASK   0x006000
 
#define S6_I2S_MEM_16BIT   0x000000
 
#define S6_I2S_MEM_32BIT   0x008000
 
#define S6_I2S_MEM_MASK   0x008000
 
#define S6_I2S_CHANNELS_SHIFT   16
 
#define S6_I2S_CHANNELS_MASK   0x030000
 
#define S6_I2S_SCK_IN   0x000000
 
#define S6_I2S_SCK_OUT   0x040000
 
#define S6_I2S_SCK_DIR   0x040000
 
#define S6_I2S_WS_IN   0x000000
 
#define S6_I2S_WS_OUT   0x080000
 
#define S6_I2S_WS_DIR   0x080000
 
#define S6_I2S_LEFT_FIRST   0x000000
 
#define S6_I2S_RIGHT_FIRST   0x100000
 
#define S6_I2S_FIRST   0x100000
 
#define S6_I2S_CUR_SCK   0x200000
 
#define S6_I2S_CUR_WS   0x400000
 
#define S6_I2S_ENABLE(c)   (0x48 + 0x10 * (c))
 
#define S6_I2S_DISABLE_IF   0x02
 
#define S6_I2S_ENABLE_IF   0x03
 
#define S6_I2S_IS_BUSY   0x04
 
#define S6_I2S_DMA_ACTIVE   0x08
 
#define S6_I2S_IS_ENABLED   0x10
 
#define S6_I2S_NUM_LINES   4
 
#define S6_I2S_SIF_PORT0   0x0000000
 
#define S6_I2S_SIF_PORT1   0x0000080 /* docs say 0x0000010 */
 
#define S6000_I2S_RATES
 
#define S6000_I2S_FORMATS   (SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S32_LE)
 

Functions

 module_platform_driver (s6000_i2s_driver)
 
 MODULE_AUTHOR ("Daniel Gloeckner")
 
 MODULE_DESCRIPTION ("Stretch s6000 family I2S SoC Interface")
 
 MODULE_LICENSE ("GPL")
 

Macro Definition Documentation

#define S6000_I2S_FORMATS   (SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S32_LE)

Definition at line 410 of file s6000-i2s.c.

#define S6000_I2S_RATES
Value:
SNDRV_PCM_RATE_8000_192000)

Definition at line 408 of file s6000-i2s.c.

#define S6_I2S_16BIT   0x000000

Definition at line 59 of file s6000-i2s.c.

#define S6_I2S_20BIT   0x002000

Definition at line 60 of file s6000-i2s.c.

#define S6_I2S_24BIT   0x004000

Definition at line 61 of file s6000-i2s.c.

#define S6_I2S_32BIT   0x006000

Definition at line 62 of file s6000-i2s.c.

#define S6_I2S_BITS_MASK   0x006000

Definition at line 63 of file s6000-i2s.c.

#define S6_I2S_CHANNELS_MASK   0x030000

Definition at line 68 of file s6000-i2s.c.

#define S6_I2S_CHANNELS_SHIFT   16

Definition at line 67 of file s6000-i2s.c.

#define S6_I2S_CUR_SCK   0x200000

Definition at line 78 of file s6000-i2s.c.

#define S6_I2S_CUR_WS   0x400000

Definition at line 79 of file s6000-i2s.c.

#define S6_I2S_DATA_CFG (   c)    (0x40 + 0x10 * (c))

Definition at line 53 of file s6000-i2s.c.

#define S6_I2S_DISABLE_IF   0x02

Definition at line 81 of file s6000-i2s.c.

#define S6_I2S_DIV_MASK   0x001fff

Definition at line 58 of file s6000-i2s.c.

#define S6_I2S_DMA_ACTIVE   0x08

Definition at line 84 of file s6000-i2s.c.

#define S6_I2S_DUAL   0

Definition at line 50 of file s6000-i2s.c.

#define S6_I2S_ENABLE (   c)    (0x48 + 0x10 * (c))

Definition at line 80 of file s6000-i2s.c.

#define S6_I2S_ENABLE_IF   0x03

Definition at line 82 of file s6000-i2s.c.

#define S6_I2S_FIRST   0x100000

Definition at line 77 of file s6000-i2s.c.

#define S6_I2S_IN   0

Definition at line 54 of file s6000-i2s.c.

#define S6_I2S_INT_ALIGNMENT   4

Definition at line 44 of file s6000-i2s.c.

#define S6_I2S_INT_OVERRUN   1

Definition at line 42 of file s6000-i2s.c.

#define S6_I2S_INT_UNDERRUN   2

Definition at line 43 of file s6000-i2s.c.

#define S6_I2S_INTERFACE_CFG (   c)    (0x44 + 0x10 * (c))

Definition at line 57 of file s6000-i2s.c.

#define S6_I2S_INTERRUPT_CLEAR   0x0C

Definition at line 47 of file s6000-i2s.c.

#define S6_I2S_INTERRUPT_ENABLE   0x04

Definition at line 45 of file s6000-i2s.c.

#define S6_I2S_INTERRUPT_RAW   0x08

Definition at line 46 of file s6000-i2s.c.

#define S6_I2S_INTERRUPT_SET   0x10

Definition at line 48 of file s6000-i2s.c.

#define S6_I2S_INTERRUPT_STATUS   0x00

Definition at line 41 of file s6000-i2s.c.

#define S6_I2S_IS_BUSY   0x04

Definition at line 83 of file s6000-i2s.c.

#define S6_I2S_IS_ENABLED   0x10

Definition at line 85 of file s6000-i2s.c.

#define S6_I2S_LEFT_FIRST   0x000000

Definition at line 75 of file s6000-i2s.c.

#define S6_I2S_MEM_16BIT   0x000000

Definition at line 64 of file s6000-i2s.c.

#define S6_I2S_MEM_32BIT   0x008000

Definition at line 65 of file s6000-i2s.c.

#define S6_I2S_MEM_MASK   0x008000

Definition at line 66 of file s6000-i2s.c.

#define S6_I2S_MODE   0x20

Definition at line 49 of file s6000-i2s.c.

#define S6_I2S_NUM_LINES   4

Definition at line 87 of file s6000-i2s.c.

#define S6_I2S_OUT   1

Definition at line 55 of file s6000-i2s.c.

#define S6_I2S_RIGHT_FIRST   0x100000

Definition at line 76 of file s6000-i2s.c.

#define S6_I2S_SCK_DIR   0x040000

Definition at line 71 of file s6000-i2s.c.

#define S6_I2S_SCK_IN   0x000000

Definition at line 69 of file s6000-i2s.c.

#define S6_I2S_SCK_OUT   0x040000

Definition at line 70 of file s6000-i2s.c.

#define S6_I2S_SIF_PORT0   0x0000000

Definition at line 89 of file s6000-i2s.c.

#define S6_I2S_SIF_PORT1   0x0000080 /* docs say 0x0000010 */

Definition at line 90 of file s6000-i2s.c.

#define S6_I2S_TX_DEFAULT   0x24

Definition at line 52 of file s6000-i2s.c.

#define S6_I2S_UNUSED   2

Definition at line 56 of file s6000-i2s.c.

#define S6_I2S_WIDE   1

Definition at line 51 of file s6000-i2s.c.

#define S6_I2S_WS_DIR   0x080000

Definition at line 74 of file s6000-i2s.c.

#define S6_I2S_WS_IN   0x000000

Definition at line 72 of file s6000-i2s.c.

#define S6_I2S_WS_OUT   0x080000

Definition at line 73 of file s6000-i2s.c.

Function Documentation

MODULE_AUTHOR ( "Daniel Gloeckner"  )
MODULE_DESCRIPTION ( "Stretch s6000 family I2S SoC Interface )
MODULE_LICENSE ( "GPL"  )
module_platform_driver ( s6000_i2s_driver  )