2013-07-21 21:35:52 -07:00
/*
* Renesas R - Car SRU / SCU / SSIU / SSI support
*
* Copyright ( C ) 2013 Renesas Solutions Corp .
* Kuninori Morimoto < kuninori . morimoto . gx @ renesas . com >
*
* This program is free software ; you can redistribute it and / or modify
* it under the terms of the GNU General Public License version 2 as
* published by the Free Software Foundation .
*/
# ifndef RCAR_SND_H
# define RCAR_SND_H
# include <linux/sh_clk.h>
2013-07-21 21:36:35 -07:00
# define RSND_GEN1_SRU 0
2013-07-21 21:36:46 -07:00
# define RSND_GEN1_ADG 1
2013-07-21 21:36:57 -07:00
# define RSND_GEN1_SSI 2
2013-07-21 21:35:52 -07:00
2013-07-21 21:36:35 -07:00
# define RSND_GEN2_SRU 0
2013-07-21 21:36:46 -07:00
# define RSND_GEN2_ADG 1
2013-07-21 21:36:57 -07:00
# define RSND_GEN2_SSIU 2
# define RSND_GEN2_SSI 3
2013-07-21 21:36:35 -07:00
2013-07-21 21:36:57 -07:00
# define RSND_BASE_MAX 4
/*
* flags
*
2013-07-28 18:58:29 -07:00
* 0xAB000000
2013-07-21 21:36:57 -07:00
*
* A : clock sharing settings
2013-07-28 18:58:29 -07:00
* B : SSI direction
2013-07-21 21:36:57 -07:00
*/
# define RSND_SSI_CLK_PIN_SHARE (1 << 31)
# define RSND_SSI_CLK_FROM_ADG (1 << 30) /* clock parent is master */
# define RSND_SSI_SYNC (1 << 29) /* SSI34_sync etc */
2013-07-28 18:59:12 -07:00
# define RSND_SSI_DEPENDENT (1 << 28) /* SSI needs SRU/SCU */
2013-07-21 21:36:57 -07:00
2013-07-28 18:58:29 -07:00
# define RSND_SSI_PLAY (1 << 24)
2013-07-28 18:59:02 -07:00
# define RSND_SSI_SET(_dai_id, _dma_id, _pio_irq, _flags) \
{ . dai_id = _dai_id , . dma_id = _dma_id , . pio_irq = _pio_irq , . flags = _flags }
2013-07-28 18:58:29 -07:00
# define RSND_SSI_UNUSED \
2013-07-28 18:59:02 -07:00
{ . dai_id = - 1 , . dma_id = - 1 , . pio_irq = - 1 , . flags = 0 }
2013-07-28 18:58:29 -07:00
2013-07-21 21:36:57 -07:00
struct rsnd_ssi_platform_info {
2013-07-28 18:58:29 -07:00
int dai_id ;
2013-07-28 18:59:02 -07:00
int dma_id ;
2013-07-21 21:36:57 -07:00
int pio_irq ;
u32 flags ;
} ;
2013-07-21 21:36:35 -07:00
2013-07-28 18:59:12 -07:00
/*
* flags
*/
2013-09-08 21:21:41 -07:00
# define RSND_SCU_USE_HPBIF (1 << 31) /* it needs RSND_SSI_DEPENDENT */
2013-07-28 18:59:12 -07:00
2013-07-21 21:36:35 -07:00
struct rsnd_scu_platform_info {
u32 flags ;
} ;
2013-07-21 21:35:52 -07:00
2013-07-21 21:36:21 -07:00
/*
* flags
*
* 0x0000000A
*
* A : generation
*/
2013-10-11 00:07:01 -07:00
# define RSND_GEN_MASK (0xF << 0)
2013-07-21 21:36:21 -07:00
# define RSND_GEN1 (1 << 0) /* fixme */
# define RSND_GEN2 (2 << 0) /* fixme */
2013-07-21 21:35:52 -07:00
struct rcar_snd_info {
u32 flags ;
2013-07-21 21:36:57 -07:00
struct rsnd_ssi_platform_info * ssi_info ;
int ssi_info_nr ;
2013-07-21 21:36:35 -07:00
struct rsnd_scu_platform_info * scu_info ;
int scu_info_nr ;
2013-07-21 21:35:52 -07:00
int ( * start ) ( int id ) ;
int ( * stop ) ( int id ) ;
} ;
# endif