18054d7ccSMaxim Sobolev /*- 28054d7ccSMaxim Sobolev * Copyright (c) 2012 Damjan Marion <dmarion@FreeBSD.org> 38054d7ccSMaxim Sobolev * Copyright (c) 2015 Maksym Sobolyev <sobomax@FreeBSD.org> 48054d7ccSMaxim Sobolev * All rights reserved. 58054d7ccSMaxim Sobolev * 68054d7ccSMaxim Sobolev * Redistribution and use in source and binary forms, with or without 78054d7ccSMaxim Sobolev * modification, are permitted provided that the following conditions 88054d7ccSMaxim Sobolev * are met: 98054d7ccSMaxim Sobolev * 1. Redistributions of source code must retain the above copyright 108054d7ccSMaxim Sobolev * notice, this list of conditions and the following disclaimer. 118054d7ccSMaxim Sobolev * 2. Redistributions in binary form must reproduce the above copyright 128054d7ccSMaxim Sobolev * notice, this list of conditions and the following disclaimer in the 138054d7ccSMaxim Sobolev * documentation and/or other materials provided with the distribution. 148054d7ccSMaxim Sobolev * 158054d7ccSMaxim Sobolev * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 168054d7ccSMaxim Sobolev * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 178054d7ccSMaxim Sobolev * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 188054d7ccSMaxim Sobolev * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 198054d7ccSMaxim Sobolev * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 208054d7ccSMaxim Sobolev * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 218054d7ccSMaxim Sobolev * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 228054d7ccSMaxim Sobolev * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 238054d7ccSMaxim Sobolev * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 248054d7ccSMaxim Sobolev * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 258054d7ccSMaxim Sobolev * SUCH DAMAGE. 268054d7ccSMaxim Sobolev */ 278054d7ccSMaxim Sobolev 288054d7ccSMaxim Sobolev #ifndef __TPS65217X_H__ 298054d7ccSMaxim Sobolev #define __TPS65217X_H__ 308054d7ccSMaxim Sobolev 318054d7ccSMaxim Sobolev /* 328054d7ccSMaxim Sobolev * TPS65217 PMIC is a companion chip for AM335x SoC sitting on I2C bus 338054d7ccSMaxim Sobolev */ 348054d7ccSMaxim Sobolev 35*02f4627cSMaxim Sobolev /* TPS65217 Registers */ 368054d7ccSMaxim Sobolev #define TPS65217_CHIPID_REG 0x00 378054d7ccSMaxim Sobolev struct tps65217_chipid_reg { 388054d7ccSMaxim Sobolev unsigned int rev:4; 398054d7ccSMaxim Sobolev unsigned int chip:4; 408054d7ccSMaxim Sobolev #define TPS65217A 0x7 418054d7ccSMaxim Sobolev #define TPS65217B 0xF 428054d7ccSMaxim Sobolev #define TPS65217C 0xE 438054d7ccSMaxim Sobolev #define TPS65217D 0x6 448054d7ccSMaxim Sobolev } __attribute__((__packed__)); 458054d7ccSMaxim Sobolev 468054d7ccSMaxim Sobolev #define TPS65217_INT_REG 0x02 478054d7ccSMaxim Sobolev struct tps65217_int_reg { 488054d7ccSMaxim Sobolev unsigned int usbi:1; 498054d7ccSMaxim Sobolev unsigned int aci:1; 508054d7ccSMaxim Sobolev unsigned int pbi:1; 518054d7ccSMaxim Sobolev unsigned int reserved3:1; 528054d7ccSMaxim Sobolev unsigned int usbm:1; 538054d7ccSMaxim Sobolev unsigned int acm:1; 548054d7ccSMaxim Sobolev unsigned int pbm:1; 558054d7ccSMaxim Sobolev unsigned int reserved7:1; 568054d7ccSMaxim Sobolev } __attribute__((__packed__)); 578054d7ccSMaxim Sobolev 588054d7ccSMaxim Sobolev #define TPS65217_STATUS_REG 0x0A 598054d7ccSMaxim Sobolev struct tps65217_status_reg { 608054d7ccSMaxim Sobolev unsigned int pb:1; 618054d7ccSMaxim Sobolev unsigned int reserved1:1; 628054d7ccSMaxim Sobolev unsigned int usbpwr:1; 638054d7ccSMaxim Sobolev unsigned int acpwr:1; 648054d7ccSMaxim Sobolev unsigned int reserved4:3; 658054d7ccSMaxim Sobolev unsigned int off:1; 668054d7ccSMaxim Sobolev } __attribute__((__packed__)); 678054d7ccSMaxim Sobolev 688054d7ccSMaxim Sobolev #define TPS65217_CHGCONFIG0_REG 0x03 698054d7ccSMaxim Sobolev struct tps65217_chgconfig0_reg { 708054d7ccSMaxim Sobolev unsigned int battemp:1; 718054d7ccSMaxim Sobolev unsigned int pchgtout:1; 728054d7ccSMaxim Sobolev unsigned int chgtout:1; 738054d7ccSMaxim Sobolev unsigned int active:1; 748054d7ccSMaxim Sobolev unsigned int termi:1; 758054d7ccSMaxim Sobolev unsigned int tsusp:1; 768054d7ccSMaxim Sobolev unsigned int dppm:1; 778054d7ccSMaxim Sobolev unsigned int treg:1; 788054d7ccSMaxim Sobolev } __attribute__((__packed__)); 798054d7ccSMaxim Sobolev 808054d7ccSMaxim Sobolev #define TPS65217_CHGCONFIG1_REG 0x04 818054d7ccSMaxim Sobolev struct tps65217_chgconfig1_reg { 828054d7ccSMaxim Sobolev unsigned int chg_en:1; 838054d7ccSMaxim Sobolev unsigned int susp:1; 848054d7ccSMaxim Sobolev unsigned int term:1; 858054d7ccSMaxim Sobolev unsigned int reset:1; 868054d7ccSMaxim Sobolev unsigned int ntc_type:1; 878054d7ccSMaxim Sobolev unsigned int tmr_en:1; 888054d7ccSMaxim Sobolev unsigned int timer:2; 898054d7ccSMaxim Sobolev } __attribute__((__packed__)); 908054d7ccSMaxim Sobolev 918054d7ccSMaxim Sobolev #define TPS65217_CHGCONFIG2_REG 0x05 928054d7ccSMaxim Sobolev struct tps65217_chgconfig2_reg { 938054d7ccSMaxim Sobolev unsigned int reserved:4; 948054d7ccSMaxim Sobolev unsigned int voreg:2; 958054d7ccSMaxim Sobolev #define TPS65217_VO_410V 0b00 968054d7ccSMaxim Sobolev #define TPS65217_VO_415V 0b01 978054d7ccSMaxim Sobolev #define TPS65217_VO_420V 0b10 988054d7ccSMaxim Sobolev #define TPS65217_VO_425V 0b11 998054d7ccSMaxim Sobolev unsigned int vprechg:1; 1008054d7ccSMaxim Sobolev unsigned int dyntmr:1; 1018054d7ccSMaxim Sobolev } __attribute__((__packed__)); 1028054d7ccSMaxim Sobolev 1038054d7ccSMaxim Sobolev #define TPS65217_CHGCONFIG3_REG 0x06 1048054d7ccSMaxim Sobolev struct tps65217_chgconfig3_reg { 1058054d7ccSMaxim Sobolev unsigned int trange:1; 1068054d7ccSMaxim Sobolev unsigned int termif:2; 1078054d7ccSMaxim Sobolev unsigned int pchrgt:1; 1088054d7ccSMaxim Sobolev unsigned int dppmth:2; 1098054d7ccSMaxim Sobolev unsigned int ichrg:2; 1108054d7ccSMaxim Sobolev } __attribute__((__packed__)); 1118054d7ccSMaxim Sobolev 1128054d7ccSMaxim Sobolev #endif /* __TPS65217X_H__ */ 113