99 lines
2.4 KiB
C
99 lines
2.4 KiB
C
/*
|
|
* 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 */
|