| /** |
| * i2c-exynos5.h - Samsung Exynos5 I2C Controller Driver Header file |
| * |
| * Copyright (C) 2015 Samsung Electronics Co., Ltd. |
| * |
| * 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 __I2C_EXYNOS5_H |
| #define __I2C_EXYNOS5_H |
| |
| struct exynos5_i2c { |
| struct list_head node; |
| struct i2c_adapter adap; |
| unsigned int need_hw_init; |
| unsigned int suspended:1; |
| |
| struct i2c_msg *msg; |
| struct completion msg_complete; |
| unsigned int msg_ptr; |
| unsigned int msg_len; |
| |
| unsigned int irq; |
| |
| void __iomem *regs; |
| void __iomem *regs_mailbox; |
| struct clk *clk; |
| struct clk *rate_clk; |
| struct device *dev; |
| int state; |
| |
| /* |
| * Since the TRANS_DONE bit is cleared on read, and we may read it |
| * either during an IRQ or after a transaction, keep track of its |
| * state here. |
| */ |
| int trans_done; |
| |
| /* Controller operating frequency */ |
| unsigned int fs_clock; |
| unsigned int hs_clock; |
| |
| /* to set the source clock */ |
| unsigned int default_clk; |
| |
| /* |
| * HSI2C Controller can operate in |
| * 1. High speed upto 3.4Mbps |
| * 2. Fast speed upto 1Mbps |
| */ |
| int speed_mode; |
| int operation_mode; |
| int bus_id; |
| int scl_clk_stretch; |
| int stop_after_trans; |
| int use_old_timing_values; |
| unsigned int imode_addr; |
| void __iomem *imode_base; |
| unsigned int transfer_delay; |
| unsigned int sda_trigger_timing; |
| int scl_extended_low; |
| #ifdef CONFIG_EXYNOS_APM |
| int use_apm_mode; |
| #endif |
| /* HSI2C Batcher can automatically handle HSI2C operation */ |
| int support_hsi2c_batcher; |
| |
| unsigned int cmd_buffer; |
| unsigned int cmd_index; |
| unsigned int cmd_pointer; |
| unsigned int desc_pointer; |
| unsigned int batcher_read_addr; |
| int need_cs_enb; |
| int idle_ip_index; |
| int reset_before_trans; |
| unsigned int runtime_resumed; |
| unsigned int qactive_off; |
| }; |
| #endif /*__I2C_EXYNOS5_H */ |