summaryrefslogtreecommitdiffstats
path: root/firmware/target/hosted/ypr0/sc900776.h
diff options
context:
space:
mode:
Diffstat (limited to 'firmware/target/hosted/ypr0/sc900776.h')
-rw-r--r--firmware/target/hosted/ypr0/sc900776.h134
1 files changed, 134 insertions, 0 deletions
diff --git a/firmware/target/hosted/ypr0/sc900776.h b/firmware/target/hosted/ypr0/sc900776.h
new file mode 100644
index 0000000000..32eb90f797
--- /dev/null
+++ b/firmware/target/hosted/ypr0/sc900776.h
@@ -0,0 +1,134 @@
+/* This file originates from the linux kernel provided in Samsung's YP-R0 Open
+ * Source package.
+ */
+
+/*
+* Bigbang project
+* Copyright (c) 2009 VPS R&D Group, Samsung Electronics, Inc.
+* All rights reserved.
+*/
+
+/**
+* This file defines data structures and APIs for Freescale SC900776
+*
+* @name sc900776.h
+* @author Eung Chan Kim (eungchan.kim@samsung.com)
+* @version 0.1
+* @see
+*/
+
+#ifndef __SC900776_H__
+#define __SC900776_H__
+
+
+typedef enum
+{
+ SC900776_DEVICE_ID = 0x01, /* 01h R */
+ SC900776_CONTROL, /* 02h R/W */
+ SC900776_INTERRUPT1, /* 03h R/C */
+ SC900776_INTERRUPT2, /* 04h R/C */
+ SC900776_INTERRUPT_MASK1, /* 05h R/W */
+ SC900776_INTERRUPT_MASK2, /* 06h R/W */
+ SC900776_ADC_RESULT, /* 07h R */
+ SC900776_TIMING_SET1, /* 08h R/W */
+ SC900776_TIMING_SET2, /* 09h R/W */
+ SC900776_DEVICE_TYPE1, /* 0Ah R */
+ SC900776_DEVICE_TYPE2, /* 0Bh R */
+ SC900776_BUTTON1, /* 0Ch R/C */
+ SC900776_BUTTON2, /* 0Dh R/C */
+ /* 0Eh ~ 12h : reserved */
+ SC900776_MANUAL_SWITCH1 = 0x13, /* 13h R/W */
+ SC900776_MANUAL_SWITCH2, /* 14h R/W */
+ /* 15h ~ 1Fh : reserved */
+ SC900776_FSL_STATUS = 0x20, /* 20h R */
+ SC900776_FSL_CONTROL, /* 21h R/W */
+ SC900776_TIME_DELAY, /* 22h R/W */
+ SC900776_DEVICE_MODE, /* 23h R/W */
+
+ SC900776_REG_MAX
+} eSc900776_register_t;
+
+typedef enum
+{
+ DEVICETYPE1_UNDEFINED = 0,
+ DEVICETYPE1_USB, // 0x04 0x00 // normal usb cable & ad200
+ DEVICETYPE1_DEDICATED, // 0x40 0x00 // dedicated charger cable
+ DEVICETYPE2_JIGUARTON, // 0x00 0x08 // Anygate_UART jig
+ DEVICETYPE2_JIGUSBOFF, // 0x00 0x01 // USB jig(AS center)
+ DEVICETYPE2_JIGUSBON, // 0x00 0x02 // Anygate_USB jig with boot-on, not tested
+} eMinivet_device_t;
+
+/*
+ * sc900776 register bit definitions
+ */
+#define MINIVET_DEVICETYPE1_USBOTG 0x80 /* 1: a USBOTG device is attached */
+#define MINIVET_DEVICETYPE1_DEDICATED 0x40 /* 1: a dedicated charger is attached */
+#define MINIVET_DEVICETYPE1_USBCHG 0x20 /* 1: a USB charger is attached */
+#define MINIVET_DEVICETYPE1_5WCHG 0x10 /* 1: a 5-wire charger (type 1 or 2) is attached */
+#define MINIVET_DEVICETYPE1_UART 0x08 /* 1: a UART cable is attached */
+#define MINIVET_DEVICETYPE1_USB 0x04 /* 1: a USB host is attached */
+#define MINIVET_DEVICETYPE1_AUDIO2 0x02 /* 1: an audio accessory type 2 is attached */
+#define MINIVET_DEVICETYPE1_AUDIO1 0x01 /* 1: an audio accessory type 1 is attached */
+
+#define MINIVET_DEVICETYPE2_AV 0x40 /* 1: an audio/video cable is attached */
+#define MINIVET_DEVICETYPE2_TTY 0x20 /* 1: a TTY converter is attached */
+#define MINIVET_DEVICETYPE2_PPD 0x10 /* 1: a phone powered device is attached */
+#define MINIVET_DEVICETYPE2_JIGUARTON 0x08 /* 1: a UART jig cable with the BOOT-on option is attached */
+#define MINIVET_DEVICETYPE2_JIGUARTOFF 0x04 /* 1: a UART jig cable with the BOOT-off option is attached */
+#define MINIVET_DEVICETYPE2_JIGUSBON 0x02 /* 1: a USB jig cable with the BOOT-on option is attached */
+#define MINIVET_DEVICETYPE2_JIGUSBOFF 0x01 /* 1: a USB jig cable with the BOOT-off option is attached */
+
+#define MINIVET_FSLSTATUS_FETSTATUS 0x40 /* 1: The on status of the power MOSFET */
+#define MINIVET_FSLSTATUS_IDDETEND 0x20 /* 1: ID resistance detection finished */
+#define MINIVET_FSLSTATUS_VBUSDETEND 0x10 /* 1: VBUS power supply type identification completed */
+#define MINIVET_FSLSTATUS_IDGND 0x08 /* 1: ID pin is shorted to ground */
+#define MINIVET_FSLSTATUS_IDFLOAT 0x04 /* 1: ID line is floating */
+#define MINIVET_FSLSTATUS_VBUSDET 0x02 /* 1: VBUS voltage is higher than the POR */
+#define MINIVET_FSLSTATUS_ADCSTATUS 0x01 /* 1: ADC conversion completed */
+
+
+#define SC900776_I2C_SLAVE_ADDR 0x25
+
+typedef struct {
+ unsigned char addr;
+ unsigned char value;
+}__attribute__((packed)) sMinivet_t;
+
+
+#define DRV_IOCTL_MINIVET_MAGIC 'M'
+
+
+typedef enum
+{
+ E_IOCTL_MINIVET_INIT = 0,
+ E_IOCTL_MINIVET_WRITE_BYTE,
+ E_IOCTL_MINIVET_READ_BYTE,
+ E_IOCTL_MINIVET_DET_VBUS,
+ E_IOCTL_MINIVET_MANUAL_USB,
+ E_IOCTL_MINIVET_MANUAL_UART,
+
+ E_IOCTL_MINIVET_MAX
+} eSc900776_ioctl_t;
+
+#define IOCTL_MINIVET_INIT _IO(DRV_IOCTL_MINIVET_MAGIC, E_IOCTL_MINIVET_INIT)
+#define IOCTL_MINIVET_WRITE_BYTE _IOW(DRV_IOCTL_MINIVET_MAGIC, E_IOCTL_MINIVET_WRITE_BYTE, sMinivet_t)
+#define IOCTL_MINIVET_READ_BYTE _IOR(DRV_IOCTL_MINIVET_MAGIC, E_IOCTL_MINIVET_READ_BYTE, sMinivet_t)
+#define IOCTL_MINIVET_DET_VBUS _IO(DRV_IOCTL_MINIVET_MAGIC, E_IOCTL_MINIVET_DET_VBUS)
+#define IOCTL_MINIVET_MANUAL_USB _IO(DRV_IOCTL_MINIVET_MAGIC, E_IOCTL_MINIVET_MANUAL_USB)
+#define IOCTL_MINIVET_MANUAL_UART _IO(DRV_IOCTL_MINIVET_MAGIC, E_IOCTL_MINIVET_MANUAL_UART)
+
+
+#ifndef __MINIVET_ENUM__
+#define __MINIVET_ENUM__
+enum
+{
+ EXT_PWR_UNPLUGGED = 0,
+ EXT_PWR_PLUGGED,
+ EXT_PWR_NOT_OVP,
+ EXT_PWR_OVP,
+};
+
+#endif /* __MINIVET_ENUM__ */
+
+
+#endif /* __MINIVET_IOCTL_H__ */