cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

mbc.h (3931B)


      1/* SPDX-License-Identifier: GPL-2.0-or-later */
      2/*
      3 * mbc.h  -- Driver for NXP PCF50633 Main Battery Charger
      4 *
      5 * (C) 2006-2008 by Openmoko, Inc.
      6 * All rights reserved.
      7 */
      8
      9#ifndef __LINUX_MFD_PCF50633_MBC_H
     10#define __LINUX_MFD_PCF50633_MBC_H
     11
     12#include <linux/mfd/pcf50633/core.h>
     13#include <linux/platform_device.h>
     14
     15#define PCF50633_REG_MBCC1	0x43
     16#define PCF50633_REG_MBCC2	0x44
     17#define PCF50633_REG_MBCC3	0x45
     18#define PCF50633_REG_MBCC4	0x46
     19#define PCF50633_REG_MBCC5	0x47
     20#define PCF50633_REG_MBCC6	0x48
     21#define PCF50633_REG_MBCC7	0x49
     22#define PCF50633_REG_MBCC8	0x4a
     23#define PCF50633_REG_MBCS1	0x4b
     24#define PCF50633_REG_MBCS2	0x4c
     25#define PCF50633_REG_MBCS3	0x4d
     26
     27enum pcf50633_reg_mbcc1 {
     28	PCF50633_MBCC1_CHGENA		= 0x01,	/* Charger enable */
     29	PCF50633_MBCC1_AUTOSTOP		= 0x02,
     30	PCF50633_MBCC1_AUTORES		= 0x04, /* automatic resume */
     31	PCF50633_MBCC1_RESUME		= 0x08, /* explicit resume cmd */
     32	PCF50633_MBCC1_RESTART		= 0x10, /* restart charging */
     33	PCF50633_MBCC1_PREWDTIME_60M	= 0x20,	/* max. precharging time */
     34	PCF50633_MBCC1_WDTIME_1H	= 0x00,
     35	PCF50633_MBCC1_WDTIME_2H	= 0x40,
     36	PCF50633_MBCC1_WDTIME_4H	= 0x80,
     37	PCF50633_MBCC1_WDTIME_6H	= 0xc0,
     38};
     39#define PCF50633_MBCC1_WDTIME_MASK	  0xc0
     40
     41enum pcf50633_reg_mbcc2 {
     42	PCF50633_MBCC2_VBATCOND_2V7	= 0x00,
     43	PCF50633_MBCC2_VBATCOND_2V85	= 0x01,
     44	PCF50633_MBCC2_VBATCOND_3V0	= 0x02,
     45	PCF50633_MBCC2_VBATCOND_3V15	= 0x03,
     46	PCF50633_MBCC2_VMAX_4V		= 0x00,
     47	PCF50633_MBCC2_VMAX_4V20	= 0x28,
     48	PCF50633_MBCC2_VRESDEBTIME_64S	= 0x80,	/* debounce time (32/64sec) */
     49};
     50
     51enum pcf50633_reg_mbcc7 {
     52	PCF50633_MBCC7_USB_100mA	= 0x00,
     53	PCF50633_MBCC7_USB_500mA	= 0x01,
     54	PCF50633_MBCC7_USB_1000mA	= 0x02,
     55	PCF50633_MBCC7_USB_SUSPEND	= 0x03,
     56	PCF50633_MBCC7_BATTEMP_EN	= 0x04,
     57	PCF50633_MBCC7_BATSYSIMAX_1A6	= 0x00,
     58	PCF50633_MBCC7_BATSYSIMAX_1A8	= 0x40,
     59	PCF50633_MBCC7_BATSYSIMAX_2A0	= 0x80,
     60	PCF50633_MBCC7_BATSYSIMAX_2A2	= 0xc0,
     61};
     62#define PCF50633_MBCC7_USB_MASK 0x03
     63
     64enum pcf50633_reg_mbcc8 {
     65	PCF50633_MBCC8_USBENASUS	= 0x10,
     66};
     67
     68enum pcf50633_reg_mbcs1 {
     69	PCF50633_MBCS1_USBPRES		= 0x01,
     70	PCF50633_MBCS1_USBOK		= 0x02,
     71	PCF50633_MBCS1_ADAPTPRES	= 0x04,
     72	PCF50633_MBCS1_ADAPTOK		= 0x08,
     73	PCF50633_MBCS1_TBAT_OK		= 0x00,
     74	PCF50633_MBCS1_TBAT_ABOVE	= 0x10,
     75	PCF50633_MBCS1_TBAT_BELOW	= 0x20,
     76	PCF50633_MBCS1_TBAT_UNDEF	= 0x30,
     77	PCF50633_MBCS1_PREWDTEXP	= 0x40,
     78	PCF50633_MBCS1_WDTEXP		= 0x80,
     79};
     80
     81enum pcf50633_reg_mbcs2_mbcmod {
     82	PCF50633_MBCS2_MBC_PLAY		= 0x00,
     83	PCF50633_MBCS2_MBC_USB_PRE	= 0x01,
     84	PCF50633_MBCS2_MBC_USB_PRE_WAIT	= 0x02,
     85	PCF50633_MBCS2_MBC_USB_FAST	= 0x03,
     86	PCF50633_MBCS2_MBC_USB_FAST_WAIT = 0x04,
     87	PCF50633_MBCS2_MBC_USB_SUSPEND	= 0x05,
     88	PCF50633_MBCS2_MBC_ADP_PRE	= 0x06,
     89	PCF50633_MBCS2_MBC_ADP_PRE_WAIT	= 0x07,
     90	PCF50633_MBCS2_MBC_ADP_FAST	= 0x08,
     91	PCF50633_MBCS2_MBC_ADP_FAST_WAIT = 0x09,
     92	PCF50633_MBCS2_MBC_BAT_FULL	= 0x0a,
     93	PCF50633_MBCS2_MBC_HALT		= 0x0b,
     94};
     95#define PCF50633_MBCS2_MBC_MASK		0x0f
     96enum pcf50633_reg_mbcs2_chgstat {
     97	PCF50633_MBCS2_CHGS_NONE	= 0x00,
     98	PCF50633_MBCS2_CHGS_ADAPTER	= 0x10,
     99	PCF50633_MBCS2_CHGS_USB		= 0x20,
    100	PCF50633_MBCS2_CHGS_BOTH	= 0x30,
    101};
    102#define PCF50633_MBCS2_RESSTAT_AUTO	0x40
    103
    104enum pcf50633_reg_mbcs3 {
    105	PCF50633_MBCS3_USBLIM_PLAY	= 0x01,
    106	PCF50633_MBCS3_USBLIM_CGH	= 0x02,
    107	PCF50633_MBCS3_TLIM_PLAY	= 0x04,
    108	PCF50633_MBCS3_TLIM_CHG		= 0x08,
    109	PCF50633_MBCS3_ILIM		= 0x10,	/* 1: Ibat > Icutoff */
    110	PCF50633_MBCS3_VLIM		= 0x20,	/* 1: Vbat == Vmax */
    111	PCF50633_MBCS3_VBATSTAT		= 0x40,	/* 1: Vbat > Vbatcond */
    112	PCF50633_MBCS3_VRES		= 0x80, /* 1: Vbat > Vth(RES) */
    113};
    114
    115#define PCF50633_MBCC2_VBATCOND_MASK	  0x03
    116#define PCF50633_MBCC2_VMAX_MASK	  0x3c
    117
    118/* Charger status */
    119#define PCF50633_MBC_USB_ONLINE		0x01
    120#define PCF50633_MBC_USB_ACTIVE		0x02
    121#define PCF50633_MBC_ADAPTER_ONLINE	0x04
    122#define PCF50633_MBC_ADAPTER_ACTIVE	0x08
    123
    124int pcf50633_mbc_usb_curlim_set(struct pcf50633 *pcf, int ma);
    125
    126int pcf50633_mbc_get_status(struct pcf50633 *);
    127int pcf50633_mbc_get_usb_online_status(struct pcf50633 *);
    128
    129#endif
    130