Russell King | a09e64f | 2008-08-05 16:14:15 +0100 | [diff] [blame] | 1 | /* arch/arm/mach-s3c2410/include/mach/iic.h |
Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 2 | * |
Ben Dooks | f056076 | 2006-12-17 19:59:20 +0100 | [diff] [blame] | 3 | * Copyright (c) 2004 Simtec Electronics |
Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 4 | * Ben Dooks <ben@simtec.co.uk> |
| 5 | * |
| 6 | * S3C2410 - I2C Controller platfrom_device info |
| 7 | * |
| 8 | * This program is free software; you can redistribute it and/or modify |
| 9 | * it under the terms of the GNU General Public License version 2 as |
| 10 | * published by the Free Software Foundation. |
Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 11 | */ |
| 12 | |
| 13 | #ifndef __ASM_ARCH_IIC_H |
| 14 | #define __ASM_ARCH_IIC_H __FILE__ |
| 15 | |
| 16 | #define S3C_IICFLG_FILTER (1<<0) /* enable s3c2440 filter */ |
| 17 | |
| 18 | /* Notes: |
| 19 | * 1) All frequencies are expressed in Hz |
| 20 | * 2) A value of zero is `do not care` |
| 21 | */ |
| 22 | |
| 23 | struct s3c2410_platform_i2c { |
Ben Dooks | 399dee2 | 2008-07-28 12:04:06 +0100 | [diff] [blame] | 24 | int bus_num; /* bus number to use */ |
Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 25 | unsigned int flags; |
| 26 | unsigned int slave_addr; /* slave address for controller */ |
| 27 | unsigned long bus_freq; /* standard bus frequency */ |
| 28 | unsigned long max_freq; /* max frequency for the bus */ |
| 29 | unsigned long min_freq; /* min frequency for the bus */ |
| 30 | unsigned int sda_delay; /* pclks (s3c2440 only) */ |
Ben Dooks | 3e1b776 | 2008-10-31 16:14:40 +0000 | [diff] [blame^] | 31 | |
| 32 | void (*cfg_gpio)(struct platform_device *dev); |
Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 33 | }; |
| 34 | |
Ben Dooks | 3e1b776 | 2008-10-31 16:14:40 +0000 | [diff] [blame^] | 35 | /** |
| 36 | * s3c_i2c0_set_platdata - set platform data for i2c0 device |
| 37 | * @i2c: The platform data to set, or NULL for default data. |
| 38 | * |
| 39 | * Register the given platform data for use with the i2c0 device. This |
| 40 | * call copies the platform data, so the caller can use __initdata for |
| 41 | * their copy. |
| 42 | * |
| 43 | * This call will set cfg_gpio if is null to the default platform |
| 44 | * implementation. |
| 45 | * |
| 46 | * Any user of s3c_device_i2c0 should call this, even if it is with |
| 47 | * NULL to ensure that the device is given the default platform data |
| 48 | * as the driver will no longer carry defaults. |
| 49 | */ |
| 50 | extern void s3c_i2c0_set_platdata(struct s3c2410_platform_i2c *i2c); |
| 51 | |
| 52 | /* defined by architecture to configure gpio */ |
| 53 | extern void s3c_i2c0_cfg_gpio(struct platform_device *dev); |
| 54 | |
Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 55 | #endif /* __ASM_ARCH_IIC_H */ |