|
@@ -341,6 +341,7 @@ static int atmel_ssc_hw_params(struct snd_pcm_substream *substream,
|
|
{
|
|
{
|
|
int id = dai->id;
|
|
int id = dai->id;
|
|
struct atmel_ssc_info *ssc_p = &ssc_info[id];
|
|
struct atmel_ssc_info *ssc_p = &ssc_info[id];
|
|
|
|
+ struct ssc_device *ssc = ssc_p->ssc;
|
|
struct atmel_pcm_dma_params *dma_params;
|
|
struct atmel_pcm_dma_params *dma_params;
|
|
int dir, channels, bits;
|
|
int dir, channels, bits;
|
|
u32 tfmr, rfmr, tcmr, rcmr;
|
|
u32 tfmr, rfmr, tcmr, rcmr;
|
|
@@ -466,7 +467,8 @@ static int atmel_ssc_hw_params(struct snd_pcm_substream *substream,
|
|
| SSC_BF(RCMR_START, start_event)
|
|
| SSC_BF(RCMR_START, start_event)
|
|
| SSC_BF(RCMR_CKI, SSC_CKI_RISING)
|
|
| SSC_BF(RCMR_CKI, SSC_CKI_RISING)
|
|
| SSC_BF(RCMR_CKO, SSC_CKO_NONE)
|
|
| SSC_BF(RCMR_CKO, SSC_CKO_NONE)
|
|
- | SSC_BF(RCMR_CKS, SSC_CKS_CLOCK);
|
|
|
|
|
|
+ | SSC_BF(RCMR_CKS, ssc->clk_from_rk_pin ?
|
|
|
|
+ SSC_CKS_PIN : SSC_CKS_CLOCK);
|
|
|
|
|
|
rfmr = SSC_BF(RFMR_FSEDGE, SSC_FSEDGE_POSITIVE)
|
|
rfmr = SSC_BF(RFMR_FSEDGE, SSC_FSEDGE_POSITIVE)
|
|
| SSC_BF(RFMR_FSOS, SSC_FSOS_NONE)
|
|
| SSC_BF(RFMR_FSOS, SSC_FSOS_NONE)
|
|
@@ -481,7 +483,8 @@ static int atmel_ssc_hw_params(struct snd_pcm_substream *substream,
|
|
| SSC_BF(TCMR_START, start_event)
|
|
| SSC_BF(TCMR_START, start_event)
|
|
| SSC_BF(TCMR_CKI, SSC_CKI_FALLING)
|
|
| SSC_BF(TCMR_CKI, SSC_CKI_FALLING)
|
|
| SSC_BF(TCMR_CKO, SSC_CKO_NONE)
|
|
| SSC_BF(TCMR_CKO, SSC_CKO_NONE)
|
|
- | SSC_BF(TCMR_CKS, SSC_CKS_PIN);
|
|
|
|
|
|
+ | SSC_BF(TCMR_CKS, ssc->clk_from_rk_pin ?
|
|
|
|
+ SSC_CKS_CLOCK : SSC_CKS_PIN);
|
|
|
|
|
|
tfmr = SSC_BF(TFMR_FSEDGE, SSC_FSEDGE_POSITIVE)
|
|
tfmr = SSC_BF(TFMR_FSEDGE, SSC_FSEDGE_POSITIVE)
|
|
| SSC_BF(TFMR_FSDEN, 0)
|
|
| SSC_BF(TFMR_FSDEN, 0)
|
|
@@ -550,7 +553,8 @@ static int atmel_ssc_hw_params(struct snd_pcm_substream *substream,
|
|
| SSC_BF(RCMR_START, SSC_START_RISING_RF)
|
|
| SSC_BF(RCMR_START, SSC_START_RISING_RF)
|
|
| SSC_BF(RCMR_CKI, SSC_CKI_RISING)
|
|
| SSC_BF(RCMR_CKI, SSC_CKI_RISING)
|
|
| SSC_BF(RCMR_CKO, SSC_CKO_NONE)
|
|
| SSC_BF(RCMR_CKO, SSC_CKO_NONE)
|
|
- | SSC_BF(RCMR_CKS, SSC_CKS_PIN);
|
|
|
|
|
|
+ | SSC_BF(RCMR_CKS, ssc->clk_from_rk_pin ?
|
|
|
|
+ SSC_CKS_PIN : SSC_CKS_CLOCK);
|
|
|
|
|
|
rfmr = SSC_BF(RFMR_FSEDGE, SSC_FSEDGE_POSITIVE)
|
|
rfmr = SSC_BF(RFMR_FSEDGE, SSC_FSEDGE_POSITIVE)
|
|
| SSC_BF(RFMR_FSOS, SSC_FSOS_NONE)
|
|
| SSC_BF(RFMR_FSOS, SSC_FSOS_NONE)
|
|
@@ -565,7 +569,8 @@ static int atmel_ssc_hw_params(struct snd_pcm_substream *substream,
|
|
| SSC_BF(TCMR_START, SSC_START_RISING_RF)
|
|
| SSC_BF(TCMR_START, SSC_START_RISING_RF)
|
|
| SSC_BF(TCMR_CKI, SSC_CKI_FALLING)
|
|
| SSC_BF(TCMR_CKI, SSC_CKI_FALLING)
|
|
| SSC_BF(TCMR_CKO, SSC_CKO_NONE)
|
|
| SSC_BF(TCMR_CKO, SSC_CKO_NONE)
|
|
- | SSC_BF(TCMR_CKS, SSC_CKS_PIN);
|
|
|
|
|
|
+ | SSC_BF(RCMR_CKS, ssc->clk_from_rk_pin ?
|
|
|
|
+ SSC_CKS_CLOCK : SSC_CKS_PIN);
|
|
|
|
|
|
tfmr = SSC_BF(TFMR_FSEDGE, SSC_FSEDGE_POSITIVE)
|
|
tfmr = SSC_BF(TFMR_FSEDGE, SSC_FSEDGE_POSITIVE)
|
|
| SSC_BF(TFMR_FSDEN, 0)
|
|
| SSC_BF(TFMR_FSDEN, 0)
|