* Spreadtrum Audio Devices * MUST define a /sprd-audio-devices node and, all sprd audio devices child node should be contain in it. Required /sprd-audio-devices Specific Properties: - compatible : "sprd,sound" * SPRD-CODEC Required SoC Specific Properties: - compatible : "sprd,sprd-codec-v1" or, - compatible : "sprd,sprd-codec-v3" Required Board Specific Properties: - sprd,audio_power_ver : Which audio power version supported. * <1> : Tiger serial project; * <3> : Shark serial project; - sprd,hp_pa_ver : Which internal headphone pa supported. (only sprd-codec-v3 option) * <0> or null: default version of headphone pa; * <1> : version 2 of headphone pa. (Dolphin serial project); - sprd,ap_irq : Which IRQ number of codec ap part. - sprd,dp_irq : Which IRQ number of codec dp part. Optional Board Specific Properties: - reg: physical base address of the controller and length of memory mapped region.(not check now) - sprd,def_da_fs : set default playback sample rate. * VBC Required SoC Specific Properties: - compatible : "sprd,vbc-r1p0" or, - compatible : "sprd,vbc-r2p0" Required Board Specific Properties: Optional Board Specific Properties: - reg: physical base address of the controller and length of memory mapped region.(not check now) * I2S Required SoC Specific Properties: - compatible : "sprd,i2s" Required Board Specific Properties: - sprd,hw_port : Which i2s hardware port. - sprd,base : . - sprd,dma_rx_no : Which i2s RX DMA number. - sprd,dma_tx_no : Which i2s TX DMA number. Optional Board Specific Properties: - reg: physical base address of the controller and length of memory mapped region.(not check now) - sprd,config : phandle of i2s configure. (* if this option is null, will use i2s configure default) + child node *- sprd,def_pcm_config : empty property; define use default pcm configure; (* if this option is null, will use i2s configure default) *- sprd,slave_timeout : set the slave timeout value; *- sprd,byte_per_chan : set the bytes per channel; *- sprd,slave_mode : set is slave mode; *- sprd,lsb : set is LSB mode; *- sprd,lrck : set is LRCK mode; *- sprd,low_for_left : set is Low for Left mode; *- sprd,clk_inv : set is CLK invert; *- sprd,i2s_compatible : set is compatible standard I2S mode; *- sprd,pcm_short_frame : set is PCM short frame mode; *- sprd,pcm_slot : set support PCM slot; *- sprd,tx_watermark : set the TX watermark; *- sprd,rx_watermark : set the RX watermark; (** i2s default configure **) /* default i2s config */ const static struct i2s_config def_i2s_config = { .hw_port = 0, .fs = 32000, .slave_timeout = 0xF11, .bus_type = I2S_BUS, .byte_per_chan = I2S_BPCH_16, .mode = I2S_SLAVE, .lsb = I2S_MSB, .rtx_mode = I2S_RX_MODE, .sync_mode = I2S_LRCK, .lrck_inv = I2S_L_LEFT, .clk_inv = I2S_CLK_N, .i2s_bus_mode = I2S_MSBJUSTFIED, .tx_watermark = 12, .rx_watermark = 20, }; (** pcm default configure **) /* default pcm config */ const static struct i2s_config def_pcm_config = { .hw_port = 0, .fs = 8000, .slave_timeout = 0xF11, .bus_type = PCM_BUS, .byte_per_chan = I2S_BPCH_16, .mode = I2S_MASTER, .lsb = I2S_LSB, .rtx_mode = I2S_RTX_MODE, .sync_mode = I2S_LRCK, .lrck_inv = I2S_L_LEFT, .clk_inv = I2S_CLK_N, .pcm_bus_mode = I2S_SHORT_FRAME, .pcm_slot = 0x1, .pcm_cycle = 1, .tx_watermark = 12, .rx_watermark = 20, }; * VBC Sound Card Required SoC Specific Properties: - compatible : "sprd,vbc-r1p0-sprd-codec-v1" or, - compatible : "sprd,vbc-r2p0-sprd-codec-v3" - sprd,model : what's name of this sound card; - sprd,pcm : phandle of the platform; - sprd,codec : phandle of the codec; Required Board Specific Properties: Optional Board Specific Properties: * I2S Sound Card Required SoC Specific Properties: - compatible : "sprd,i2s-null-codec" - sprd,model : what's name of this sound card; - sprd,i2s : phandle list of the cpu dai(i2s); - sprd,pcm : phandle of the platform; - sprd,codec : phandle of the codec; Required Board Specific Properties: Optional Board Specific Properties: Example: - SoC Specific Portion: / { sprd-audio-devices { compatible = "sprd,sound"; #address-cells = <1>; #size-cells = <1>; /* 1. codecs */ sprd_codec_v3: sprd-codec-v3 { compatible = "sprd,sprd-codec-v3"; status = "disable"; sprd,def_da_fs = <44100>; sprd,ap_irq = <164>; sprd,dp_irq = <52>; }; sprd_codec_v1: sprd-codec-v1 { compatible = "sprd,sprd-codec-v1"; status = "disable"; sprd,def_da_fs = <44100>; sprd,ap_irq = <103>; sprd,dp_irq = <63>; }; null_codec: null-codec { compatible = "sprd,null-codec"; }; /* 2. cpu-dais */ vbc_r2p0: vbc-r2p0 { compatible = "sprd,vbc-r2p0"; status = "disable"; }; vbc_r1p0: vbc-r1p0 { compatible = "sprd,vbc-r1p0"; status = "disable"; }; vaudio: vaudio { compatible = "sprd,vaudio"; }; pcm_def_config: bt-i2s-config { sprd,def_pcm_config; }; i2s_def_config: fm-i2s-config { }; i2s0: i2s@0 { compatible = "sprd,i2s"; status = "disable"; sprd,hw_port = <0>; sprd,base = <0x70D00000 0xF537C000>; sprd,dma_rx_no = <3>; sprd,dma_tx_no = <4>; }; i2s1: i2s@1 { compatible = "sprd,i2s"; status = "disable"; sprd,hw_port = <1>; sprd,base = <0x70E00000 0xF5380000>; sprd,dma_rx_no = <5>; sprd,dma_tx_no = <6>; }; i2s2: i2s@2 { compatible = "sprd,i2s"; status = "disable"; sprd,hw_port = <2>; sprd,base = <0x70F00000 0xF5382000>; sprd,dma_rx_no = <7>; sprd,dma_tx_no = <8>; }; i2s3: i2s@3 { compatible = "sprd,i2s"; status = "disable"; sprd,hw_port = <3>; sprd,base = <0x71000000 0xF5384000>; sprd,dma_rx_no = <9>; sprd,dma_tx_no = <10>; }; /* 3. platform */ sprd_pcm: sprd-pcm-audio { compatible = "sprd,sprd-pcm"; }; /* 4. machine */ vbc_sound: sound@0 { compatible = "sprd,vbc-r2p0-sprd-codec-v3"; sprd,model = "sprdphone"; sprd,vaudio = <&vaudio>; sprd,vbc = <&vbc_r2p0>; sprd,codec = <&sprd_codec_v3>; sprd,pcm = <&sprd_pcm>; }; i2s_sound: sound@1 { compatible = "sprd,i2s-null-codec"; sprd,model = "all-i2s"; sprd,i2s = <&i2s0>, <&i2s1>, <&i2s2>, <&i2s3>; sprd,codec = <&null_codec>; sprd,pcm = <&sprd_pcm>; }; }; }; Board Specific: &vbc_r2p0 { status = "okay"; }; &sprd_codec_v3 { status = "okay"; sprd,audio_power_ver = <3>; sprd,hp_pa_ver = <1>; sprd,ap_irq = <166>; }; &i2s0 { status = "okay"; }; &i2s1 { status = "okay"; }; &i2s_sound { sprd,i2s = <&i2s0>, <&i2s1>; };