forked from mirrors/linux
		
	i2c: designware: move i2c_dw_plat_prepare_clk to common
Move the i2c_dw_plat_prepare_clk funciton to common file in preparation for its use also by the master driver. Acked-by: Jarkko Nikula <jarkko.nikula@linux.intel.com> Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com> Signed-off-by: Phil Reid <preid@electromag.com.au> Signed-off-by: Wolfram Sang <wsa@the-dreams.de>
This commit is contained in:
		
							parent
							
								
									3991c5c80b
								
							
						
					
					
						commit
						a34a0b6da2
					
				
					 3 changed files with 14 additions and 12 deletions
				
			
		| 
						 | 
					@ -21,6 +21,7 @@
 | 
				
			||||||
 * ----------------------------------------------------------------------------
 | 
					 * ----------------------------------------------------------------------------
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
 | 
					#include <linux/clk.h>
 | 
				
			||||||
#include <linux/delay.h>
 | 
					#include <linux/delay.h>
 | 
				
			||||||
#include <linux/export.h>
 | 
					#include <linux/export.h>
 | 
				
			||||||
#include <linux/errno.h>
 | 
					#include <linux/errno.h>
 | 
				
			||||||
| 
						 | 
					@ -185,6 +186,18 @@ unsigned long i2c_dw_clk_rate(struct dw_i2c_dev *dev)
 | 
				
			||||||
	return dev->get_clk_rate_khz(dev);
 | 
						return dev->get_clk_rate_khz(dev);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					int i2c_dw_plat_prepare_clk(struct dw_i2c_dev *i_dev, bool prepare)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						if (IS_ERR(i_dev->clk))
 | 
				
			||||||
 | 
							return PTR_ERR(i_dev->clk);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if (prepare)
 | 
				
			||||||
 | 
							return clk_prepare_enable(i_dev->clk);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						clk_disable_unprepare(i_dev->clk);
 | 
				
			||||||
 | 
						return 0;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
int i2c_dw_acquire_lock(struct dw_i2c_dev *dev)
 | 
					int i2c_dw_acquire_lock(struct dw_i2c_dev *dev)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	int ret;
 | 
						int ret;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -301,6 +301,7 @@ u32 i2c_dw_scl_lcnt(u32 ic_clk, u32 tLOW, u32 tf, int offset);
 | 
				
			||||||
void __i2c_dw_enable(struct dw_i2c_dev *dev, bool enable);
 | 
					void __i2c_dw_enable(struct dw_i2c_dev *dev, bool enable);
 | 
				
			||||||
void __i2c_dw_enable_and_wait(struct dw_i2c_dev *dev, bool enable);
 | 
					void __i2c_dw_enable_and_wait(struct dw_i2c_dev *dev, bool enable);
 | 
				
			||||||
unsigned long i2c_dw_clk_rate(struct dw_i2c_dev *dev);
 | 
					unsigned long i2c_dw_clk_rate(struct dw_i2c_dev *dev);
 | 
				
			||||||
 | 
					int i2c_dw_plat_prepare_clk(struct dw_i2c_dev *i_dev, bool prepare);
 | 
				
			||||||
int i2c_dw_acquire_lock(struct dw_i2c_dev *dev);
 | 
					int i2c_dw_acquire_lock(struct dw_i2c_dev *dev);
 | 
				
			||||||
void i2c_dw_release_lock(struct dw_i2c_dev *dev);
 | 
					void i2c_dw_release_lock(struct dw_i2c_dev *dev);
 | 
				
			||||||
int i2c_dw_wait_bus_not_busy(struct dw_i2c_dev *dev);
 | 
					int i2c_dw_wait_bus_not_busy(struct dw_i2c_dev *dev);
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -203,18 +203,6 @@ static void i2c_dw_configure_slave(struct dw_i2c_dev *dev)
 | 
				
			||||||
	dev->mode = DW_IC_SLAVE;
 | 
						dev->mode = DW_IC_SLAVE;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static int i2c_dw_plat_prepare_clk(struct dw_i2c_dev *i_dev, bool prepare)
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
	if (IS_ERR(i_dev->clk))
 | 
					 | 
				
			||||||
		return PTR_ERR(i_dev->clk);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	if (prepare)
 | 
					 | 
				
			||||||
		return clk_prepare_enable(i_dev->clk);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	clk_disable_unprepare(i_dev->clk);
 | 
					 | 
				
			||||||
	return 0;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
static void dw_i2c_set_fifo_size(struct dw_i2c_dev *dev, int id)
 | 
					static void dw_i2c_set_fifo_size(struct dw_i2c_dev *dev, int id)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	u32 param, tx_fifo_depth, rx_fifo_depth;
 | 
						u32 param, tx_fifo_depth, rx_fifo_depth;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in a new issue