コード例 #1
0
static ssize_t omap_set_thermal_hw_reset(struct device *dev,
				 struct device_attribute *devattr,
				 const char *buf, size_t count)
{
	u32 reg_val;
	long val;

	if (!cpu_is_omap447x()) {
		pr_err("Not available\n");
		count = -EINVAL;
		goto out;
	} else if (strict_strtol(buf, 10, &val)) {
		count = -EINVAL;
		goto out;
	}

	reg_val = omap4_ctrl_wk_pad_readl(\
		OMAP4_CTRL_MODULE_PAD_WKUP_WKUP_CONTROL_SPARE_RW);

	if (val == 0)
		reg_val &= ~OMAP4_HW_TSHUT_MASK;
	else
		reg_val |= OMAP4_HW_TSHUT_MASK;

	omap4_ctrl_wk_pad_writel(reg_val,
		OMAP4_CTRL_MODULE_PAD_WKUP_WKUP_CONTROL_SPARE_RW);
out:
	return count;
}
コード例 #2
0
static ssize_t omap_show_thermal_hw_reset(struct device *dev,
			struct device_attribute *devattr,
			char *buf)
{
	return sprintf(buf, "%x\n",
	omap4_ctrl_wk_pad_readl(\
		OMAP4_CTRL_MODULE_PAD_WKUP_WKUP_CONTROL_SPARE_RW));
}
コード例 #3
0
static void __init t1_i2c_init(void)
{
	u32 reg_val;
	/* Disable internal pull ups for i2c 1 and 2
				and enable for i2c 3 and 4 */
	reg_val = omap4_ctrl_pad_readl(
			OMAP4_CTRL_MODULE_PAD_CORE_CONTROL_I2C_0);
	PULLUP_DISABLE(reg_val, SCL, I2C1);
	PULLUP_DISABLE(reg_val, SDA, I2C1);
	PULLUP_DISABLE(reg_val, SCL, I2C2);
	PULLUP_DISABLE(reg_val, SDA, I2C2);
	PULLUP_ENABLE(reg_val, SCL, I2C3);
	PULLUP_ENABLE(reg_val, SDA, I2C3);
	PULLUP_ENABLE(reg_val, SCL, I2C4);
	PULLUP_ENABLE(reg_val, SDA, I2C4);
	SET_LOAD(reg_val, SCL, I2C3, LOAD_860_OHM);
	SET_LOAD(reg_val, SDA, I2C3, LOAD_860_OHM);
	SET_LOAD(reg_val, SCL, I2C4, LOAD_860_OHM);
	SET_LOAD(reg_val, SDA, I2C4, LOAD_860_OHM);
	omap4_ctrl_pad_writel(reg_val,
			OMAP4_CTRL_MODULE_PAD_CORE_CONTROL_I2C_0);

	/* 860 k, SR Enable Internal Pull up */
	reg_val = omap4_ctrl_wk_pad_readl(
			OMAP4_CTRL_MODULE_PAD_WKUP_CONTROL_I2C_2);
	PULLUP_ENABLE(reg_val, SCL, SR);
	PULLUP_ENABLE(reg_val, SDA, SR);
	SET_LOAD(reg_val, SCL, SR, LOAD_860_OHM);
	SET_LOAD(reg_val, SDA, SR, LOAD_860_OHM);
	omap4_ctrl_wk_pad_writel(reg_val,
			OMAP4_CTRL_MODULE_PAD_WKUP_CONTROL_I2C_2);

	omap_i2c_hwspinlock_init(1, 0, &t1_i2c1_bus_pdata);
	omap_i2c_hwspinlock_init(2, 1, &t1_i2c2_bus_pdata);
	omap_i2c_hwspinlock_init(3, 2, &t1_i2c3_bus_pdata);
	omap_i2c_hwspinlock_init(4, 3, &t1_i2c4_bus_pdata);

	omap_register_i2c_bus_board_data(1, &t1_i2c1_bus_pdata);
	omap_register_i2c_bus_board_data(2, &t1_i2c2_bus_pdata);
	omap_register_i2c_bus_board_data(3, &t1_i2c3_bus_pdata);
	omap_register_i2c_bus_board_data(4, &t1_i2c4_bus_pdata);

	/*
	 * Phoenix Audio IC needs I2C1 to
	 * start with 400 KHz or less
	 */
#ifdef CONFIG_REGULATOR_TPS6130X
	omap_register_i2c_bus(1, 400, t1_i2c1_board_info,
			      ARRAY_SIZE(t1_i2c_board_info));
#else
	omap_register_i2c_bus(1, 400, NULL, 0);
#endif
	omap_register_i2c_bus(2, 400, t1_i2c_board_info,
			      ARRAY_SIZE(t1_i2c_board_info));
	omap_register_i2c_bus(3, 400, NULL, 0);
	omap_register_i2c_bus(4, 400, NULL, 0);
}
コード例 #4
0
static void __init t1_i2c_init(void)
{
	u32 reg_val;
	/* Disable internal pull ups for i2c 1 and 2
				and enable for i2c 3 and 4 */
	reg_val = omap4_ctrl_pad_readl(
			OMAP4_CTRL_MODULE_PAD_CORE_CONTROL_I2C_0);
	PULLUP_DISABLE(reg_val, SCL, I2C1);
	PULLUP_DISABLE(reg_val, SDA, I2C1);
	PULLUP_DISABLE(reg_val, SCL, I2C2);
	PULLUP_DISABLE(reg_val, SDA, I2C2);
	PULLUP_ENABLE(reg_val, SCL, I2C3);
	PULLUP_ENABLE(reg_val, SDA, I2C3);
	PULLUP_ENABLE(reg_val, SCL, I2C4);
	PULLUP_ENABLE(reg_val, SDA, I2C4);
	SET_LOAD(reg_val, SCL, I2C3, LOAD_860_OHM);
	SET_LOAD(reg_val, SDA, I2C3, LOAD_860_OHM);
	SET_LOAD(reg_val, SCL, I2C4, LOAD_860_OHM);
	SET_LOAD(reg_val, SDA, I2C4, LOAD_860_OHM);
	omap4_ctrl_pad_writel(reg_val,
			OMAP4_CTRL_MODULE_PAD_CORE_CONTROL_I2C_0);

	/* 860 k, SR Enable Internal Pull up */
	reg_val = omap4_ctrl_wk_pad_readl(
			OMAP4_CTRL_MODULE_PAD_WKUP_CONTROL_I2C_2);
	PULLUP_ENABLE(reg_val, SCL, SR);
	PULLUP_ENABLE(reg_val, SDA, SR);
	SET_LOAD(reg_val, SCL, SR, LOAD_860_OHM);
	SET_LOAD(reg_val, SDA, SR, LOAD_860_OHM);
	omap4_ctrl_wk_pad_writel(reg_val,
			OMAP4_CTRL_MODULE_PAD_WKUP_CONTROL_I2C_2);
	/*
	 * Phoenix Audio IC needs I2C1 to
	 * start with 400 KHz or less
	 */
	omap_register_i2c_bus(1, 400, NULL, 0);
	omap_register_i2c_bus(2, 400, t1_i2c_board_info,
			      ARRAY_SIZE(t1_i2c_board_info));
	omap_register_i2c_bus(3, 400, NULL, 0);
	omap_register_i2c_bus(4, 400, NULL, 0);
}