1 /* 2 * Helper module for board specific I2C bus registration 3 * 4 * Copyright (C) 2009 Nokia Corporation. 5 * 6 * This program is free software; you can redistribute it and/or 7 * modify it under the terms of the GNU General Public License 8 * version 2 as published by the Free Software Foundation. 9 * 10 * This program is distributed in the hope that it will be useful, but 11 * WITHOUT ANY WARRANTY; without even the implied warranty of 12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 13 * General Public License for more details. 14 * 15 * You should have received a copy of the GNU General Public License 16 * along with this program; if not, write to the Free Software 17 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 18 * 02110-1301 USA 19 * 20 */ 21 22 #include <plat/cpu.h> 23 #include <plat/i2c.h> 24 #include <plat/mux.h> 25 26 #include "mux.h" 27 28 int __init omap_register_i2c_bus(int bus_id, u32 clkrate, 29 struct i2c_board_info const *info, 30 unsigned len) 31 { 32 if (cpu_is_omap24xx()) { 33 const int omap24xx_pins[][2] = { 34 { M19_24XX_I2C1_SCL, L15_24XX_I2C1_SDA }, 35 { J15_24XX_I2C2_SCL, H19_24XX_I2C2_SDA }, 36 }; 37 int scl, sda; 38 39 scl = omap24xx_pins[bus_id - 1][0]; 40 sda = omap24xx_pins[bus_id - 1][1]; 41 omap_cfg_reg(sda); 42 omap_cfg_reg(scl); 43 } 44 45 /* First I2C bus is not muxable */ 46 if (cpu_is_omap34xx() && bus_id > 1) { 47 char mux_name[sizeof("i2c2_scl.i2c2_scl")]; 48 49 sprintf(mux_name, "i2c%i_scl.i2c%i_scl", bus_id, bus_id); 50 omap_mux_init_signal(mux_name, OMAP_PIN_INPUT); 51 sprintf(mux_name, "i2c%i_sda.i2c%i_sda", bus_id, bus_id); 52 omap_mux_init_signal(mux_name, OMAP_PIN_INPUT); 53 } 54 55 return omap_plat_register_i2c_bus(bus_id, clkrate, info, len); 56 } 57