/* * s2mu004_haptic.h * Samsung S2MU004 Fuel Gauge Header * * Copyright (C) 2015 Samsung Electronics, Inc. * * This software is licensed under the terms of the GNU General Public * License version 2, as published by the Free Software Foundation, and * may be copied, distributed, and modified under those terms. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * */ #ifndef __S2MU004_HAPTIC_H #define __S2MU004_HAPTIC_H __FILE__ /* Slave address should be shifted to the right 1bit. * R/W bit should NOT be included. */ #define S2MU004_REG_HAPTIC_IRQ 0x00 #define S2MU004_REG_HAPTIC_MASK 0x01 #define S2MU004_REG_FCYCLE_TAR 0x03 #define S2MU004_REG_CYCLE_TAR 0x04 #define S2MU004_REG_REPEAT1_TAR 0x05 #define S2MU004_REG_REPEAT2_TAR 0x06 #define S2MU004_REG_MUTE1_TAR 0x07 #define S2MU004_REG_MUTE2_TAR 0x08 #define S2MU004_REG_IM_TAR 0x09 #define S2MU004_REG_PERI_TAR1 0x0A #define S2MU004_REG_PERI_TAR2 0x0B #define S2MU004_REG_DUTY_TAR1 0x0C #define S2MU004_REG_DUTY_TAR2 0x0D #define S2MU004_REG_HAPTIC_MODE 0x0E #define S2MU004_REG_SINECOEF1 0x0F #define S2MU004_REG_SINECOEF2 0x10 #define S2MU004_REG_SINECOEF3 0x11 #define S2MU004_REG_AMPCOEF1 0x16 #define S2MU004_REG_AMPCOEF2 0x17 #define S2MU004_REG_AMPCOEF3 0x18 #define S2MU004_REG_SINE_CTRL 0x19 /* 0x0E */ #define HAPTIC_PMODE_SHIFT 7 #define HAPTIC_PMODE_MASK BIT(HAPTIC_PMODE_SHIFT) #define HAPTIC_IMODE_SHIFT 6 #define HAPTIC_IMODE_MASK BIT(HAPTIC_IMODE_SHIFT) #define HAPTIC_EMODE_SHIFT 5 #define HAPTIC_EMODE_MASK BIT(HAPTIC_EMODE_SHIFT) #define HAPTIC_SMODE_SHIFT 4 #define HAPTIC_SMODE_MASK BIT(HAPTIC_SMODE_SHIFT) #define AUTO_CAL_EN_SHIFT 1 #define AUTO_CAL_EN_MASK BIT(AUTO_CAL_EN_SHIFT) #define HAPTIC_EN_SHIFT 0 #define HAPTIC_EN_MASK BIT(HAPTIC_EN_SHIFT) #define HAPTIC_EN 1 #define HAPTIC_OFF 0 enum s2mu004_haptic_motor_type { S2MU004_HAPTIC_ERM, S2MU004_HAPTIC_LRA, }; enum s2mu004_haptic_pulse_mode { S2MU004_EXTERNAL_MODE, S2MU004_INTERNAL_MODE, }; struct s2mu004_haptic_platform_data { u16 max_timeout; u32 duty; u32 period; u32 max_duty; u16 reg2; char *regulator_name; unsigned int pwm_id; void (*init_hw) (void); void (*motor_en) (bool); }; enum motor_control_type { IFMPIC_TYPE = 1, EXTERNAL_DRIVING_IC }; #endif /* __S2MU004_HAPTIC_H */