|  | @@ -123,3 +123,74 @@ struct iop13xx_adma_desc_dual_xor {
 | 
	
		
			
				|  |  |  	u32 d_upper_dest_addr;
 | 
	
		
			
				|  |  |  };
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +struct iop13xx_adma_desc_pq_update {
 | 
	
		
			
				|  |  | +	u32 next_desc;
 | 
	
		
			
				|  |  | +	u32 desc_ctrl;
 | 
	
		
			
				|  |  | +	u32 reserved;
 | 
	
		
			
				|  |  | +	u32 byte_count;
 | 
	
		
			
				|  |  | +	u32 p_dest_addr;
 | 
	
		
			
				|  |  | +	u32 p_upper_dest_addr;
 | 
	
		
			
				|  |  | +	u32 src0_addr;
 | 
	
		
			
				|  |  | +	u32 upper_src0_addr;
 | 
	
		
			
				|  |  | +	u32 src1_addr;
 | 
	
		
			
				|  |  | +	u32 upper_src1_addr;
 | 
	
		
			
				|  |  | +	u32 p_src_addr;
 | 
	
		
			
				|  |  | +	u32 p_upper_src_addr;
 | 
	
		
			
				|  |  | +	u32 q_src_addr;
 | 
	
		
			
				|  |  | +	struct {
 | 
	
		
			
				|  |  | +		unsigned int q_upper_src_addr:24;
 | 
	
		
			
				|  |  | +		unsigned int q_dmlt:8;
 | 
	
		
			
				|  |  | +	};
 | 
	
		
			
				|  |  | +	u32 q_dest_addr;
 | 
	
		
			
				|  |  | +	u32 q_upper_dest_addr;
 | 
	
		
			
				|  |  | +};
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +static inline int iop_adma_get_max_xor(void)
 | 
	
		
			
				|  |  | +{
 | 
	
		
			
				|  |  | +	return 16;
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +#define iop_adma_get_max_pq iop_adma_get_max_xor
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +static inline u32 iop_chan_get_current_descriptor(struct iop_adma_chan *chan)
 | 
	
		
			
				|  |  | +{
 | 
	
		
			
				|  |  | +	return __raw_readl(ADMA_ADAR(chan));
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +static inline void iop_chan_set_next_descriptor(struct iop_adma_chan *chan,
 | 
	
		
			
				|  |  | +						u32 next_desc_addr)
 | 
	
		
			
				|  |  | +{
 | 
	
		
			
				|  |  | +	__raw_writel(next_desc_addr, ADMA_ANDAR(chan));
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +#define ADMA_STATUS_BUSY (1 << 13)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +static inline char iop_chan_is_busy(struct iop_adma_chan *chan)
 | 
	
		
			
				|  |  | +{
 | 
	
		
			
				|  |  | +	if (__raw_readl(ADMA_ACSR(chan)) &
 | 
	
		
			
				|  |  | +		ADMA_STATUS_BUSY)
 | 
	
		
			
				|  |  | +		return 1;
 | 
	
		
			
				|  |  | +	else
 | 
	
		
			
				|  |  | +		return 0;
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +static inline int
 | 
	
		
			
				|  |  | +iop_chan_get_desc_align(struct iop_adma_chan *chan, int num_slots)
 | 
	
		
			
				|  |  | +{
 | 
	
		
			
				|  |  | +	return 1;
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +#define iop_desc_is_aligned(x, y) 1
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +static inline int
 | 
	
		
			
				|  |  | +iop_chan_memcpy_slot_count(size_t len, int *slots_per_op)
 | 
	
		
			
				|  |  | +{
 | 
	
		
			
				|  |  | +	*slots_per_op = 1;
 | 
	
		
			
				|  |  | +	return 1;
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +#define iop_chan_interrupt_slot_count(s, c) iop_chan_memcpy_slot_count(0, s)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +static inline int
 | 
	
		
			
				|  |  | +iop_chan_memset_slot_count(size_t len, int *slots_per_op)
 | 
	
		
			
				|  |  | +{
 | 
	
		
			
				|  |  | +	*slots_per_op = 1;
 |