diff options
author | Dominic Chen <ddchen@chromium.org> | 2014-07-15 17:05:35 -0700 |
---|---|---|
committer | chrome-internal-fetch <chrome-internal-fetch@google.com> | 2014-08-13 13:21:00 +0000 |
commit | fe1981a414384e30b9e2a197f893c6b281b9d49a (patch) | |
tree | 5907b0271e66b5c7d526fe360b3f461c5f684941 /driver/pi3usb9281.h | |
parent | 283fe98939fa56c61280529e2f933bedb122a52a (diff) | |
download | chrome-ec-fe1981a414384e30b9e2a197f893c6b281b9d49a.tar.gz |
pi3usb9281: Implement driver for Pericom USB switch
BRANCH=none
BUG=none
TEST=verify that usb switch funcitons
Change-Id: Ie897a2ae94042abefbb349d30dfa183caaec9ed0
Signed-off-by: Dominic Chen <ddchen@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/209846
Reviewed-by: Vic Yang <victoryang@chromium.org>
Diffstat (limited to 'driver/pi3usb9281.h')
-rw-r--r-- | driver/pi3usb9281.h | 86 |
1 files changed, 86 insertions, 0 deletions
diff --git a/driver/pi3usb9281.h b/driver/pi3usb9281.h new file mode 100644 index 0000000000..ebcd333d80 --- /dev/null +++ b/driver/pi3usb9281.h @@ -0,0 +1,86 @@ +/* Copyright (c) 2014 The Chromium OS Authors. All rights reserved. + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + * + * Pericom PI3USB9281 USB port switch. + */ + +#ifndef PI3USB9281_H +#define PI3USB9281_H + +#define PI3USB9281_REG_DEV_ID 0x01 +#define PI3USB9281_REG_CONTROL 0x02 +#define PI3USB9281_REG_INT 0x03 +#define PI3USB9281_REG_INT_MASK 0x05 +#define PI3USB9281_REG_DEV_TYPE 0x0a +#define PI3USB9281_REG_CHG_STATUS 0x0e +#define PI3USB9281_REG_MANUAL 0x13 +#define PI3USB9281_REG_RESET 0x1b +#define PI3USB9281_REG_VBUS 0x1d + +#define PI3USB9281_CTRL_INT_MASK (1 << 0) +#define PI3USB9281_CTRL_AUTO (1 << 2) +#define PI3USB9281_CTRL_SWITCH_AUTO (1 << 4) + +#define PI3USB9281_PIN_MANUAL_VBUS (3 << 0) +#define PI3USB9281_PIN_MANUAL_DP (1 << 2) +#define PI3USB9281_PIN_MANUAL_DM (1 << 5) + +#define PI3USB9281_INT_ATTACH (1 << 0) +#define PI3USB9281_INT_DETACH (1 << 1) +#define PI3USB9281_INT_OVP (1 << 5) +#define PI3USB9281_INT_OCP (1 << 6) +#define PI3USB9281_INT_OVP_OC (1 << 7) + +#define PI3USB9281_TYPE_NONE 0 +#define PI3USB9281_TYPE_MHL (1 << 0) +#define PI3USB9281_TYPE_OTG (1 << 1) +#define PI3USB9281_TYPE_SDP (1 << 2) +#define PI3USB9281_TYPE_CAR (1 << 4) +#define PI3USB9281_TYPE_CDP (1 << 5) +#define PI3USB9281_TYPE_DCP (1 << 6) + +#define PI3USB9281_CHG_NONE 0 +#define PI3USB9281_CHG_CAR_TYPE1 (1 << 1) +#define PI3USB9281_CHG_CAR_TYPE2 (3 << 0) +#define PI3USB9281_CHG_APPLE_1A (1 << 2) +#define PI3USB9281_CHG_APPLE_2A (1 << 3) +#define PI3USB9281_CHG_APPLE_2_4A (1 << 4) + +/* Read PI3USB9281 register. */ +uint8_t pi3usb9281_read(uint8_t chip_idx, uint8_t reg); + +/* Write PI3USB9281 register. */ +int pi3usb9281_write(uint8_t chip_idx, uint8_t reg, uint8_t val); + +/* Enable interrupts. */ +int pi3usb9281_enable_interrupts(uint8_t chip_idx); + +/* Disable all interrupts. */ +int pi3usb9281_disable_interrupts(uint8_t chip_idx); + +/* Set interrupt mask. */ +int pi3usb9281_set_interrupt_mask(uint8_t chip_idx, uint8_t mask); + +/* Get and clear current interrupt status. */ +int pi3usb9281_get_interrupts(uint8_t chip_idx); + +/* Get but keep interrupt status. */ +int pi3usb9281_peek_interrupts(uint8_t chip_idx); + +/* Get attached device type. */ +int pi3usb9281_get_device_type(uint8_t chip_idx); + +/* Get attached charger status. */ +int pi3usb9281_get_charger_status(uint8_t chip_idx); + +/* Set switch configuration to manual. */ +int pi3usb9281_set_switch_manual(uint8_t chip_idx, int val); + +/* Set bits to enable pins in manual switch register */ +int pi3usb9281_set_pins(uint8_t chip_idx, uint8_t mask); + +/* Reset PI3USB9281. */ +int pi3usb9281_reset(uint8_t chip_idx); + +#endif /* PI3USB9281_H */ |