@@ -149,7 +149,7 @@ const PinDescription g_APinDescription[] = {
149149 { PORTA, 15 , PIO_SERCOM_ALT, (PIN_ATTR_NONE ), No_ADC_Channel, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_NONE }, // MISO: SERCOM4/PAD[3]
150150 { PORTA, 27 , PIO_DIGITAL, (PIN_ATTR_NONE ), No_ADC_Channel, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_NONE },
151151
152- { PORTA, 28 , PIO_DIGITAL, (PIN_ATTR_NONE ), No_ADC_Channel, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_NONE },
152+ { PORTA, 28 , PIO_DIGITAL, (PIN_ATTR_NONE ), No_ADC_Channel, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_8 },
153153 { PORTB, 8 , PIO_ANALOG, (PIN_ATTR_DIGITAL|PIN_ATTR_ANALOG ), ADC_Channel2, NOT_ON_PWM, NOT_ON_TIMER, EXTERNAL_INT_NONE },
154154 { PORTB, 9 , PIO_DIGITAL, (PIN_ATTR_PWM|PIN_ATTR_TIMER ), ADC_Channel3, PWM4_CH1, TC4_CH1, EXTERNAL_INT_9 },
155155
@@ -163,6 +163,50 @@ const PinDescription g_APinDescription[] = {
163163
164164const void * g_apTCInstances[TCC_INST_NUM + TC_INST_NUM]={ TCC0, TCC1, TCC2, TC3, TC4, TC5 };
165165
166+
167+ #if defined(USE_BQ24195L_PMIC)
168+ #include " wiring_private.h"
169+
170+ #define PMIC_ADDRESS 0x6B
171+ #define PMIC_REG01 0x01
172+ #define PMIC_REG07 0x07
173+
174+ static inline void enable_battery_charging () {
175+ PERIPH_WIRE.initMasterWIRE (100000 );
176+ PERIPH_WIRE.enableWIRE ();
177+ pinPeripheral (PIN_WIRE_SDA, g_APinDescription[PIN_WIRE_SDA].ulPinType );
178+ pinPeripheral (PIN_WIRE_SCL, g_APinDescription[PIN_WIRE_SCL].ulPinType );
179+
180+ PERIPH_WIRE.startTransmissionWIRE ( PMIC_ADDRESS, WIRE_WRITE_FLAG );
181+ PERIPH_WIRE.sendDataMasterWIRE (PMIC_REG01);
182+ PERIPH_WIRE.sendDataMasterWIRE (0x1B ); // Charge Battery + Minimum System Voltage 3.5V
183+ PERIPH_WIRE.prepareCommandBitsWire (WIRE_MASTER_ACT_STOP);
184+
185+ PERIPH_WIRE.disableWIRE ();
186+ }
187+
188+ static inline void disable_battery_fet (bool disabled) {
189+ PERIPH_WIRE.initMasterWIRE (100000 );
190+ PERIPH_WIRE.enableWIRE ();
191+ pinPeripheral (PIN_WIRE_SDA, g_APinDescription[PIN_WIRE_SDA].ulPinType );
192+ pinPeripheral (PIN_WIRE_SCL, g_APinDescription[PIN_WIRE_SCL].ulPinType );
193+
194+ PERIPH_WIRE.startTransmissionWIRE ( PMIC_ADDRESS, WIRE_WRITE_FLAG );
195+ PERIPH_WIRE.sendDataMasterWIRE (PMIC_REG07);
196+ // No D+/D– detection + Safety timer not slowed by 2X during input DPM or thermal regulation +
197+ // BAT fet disabled/enabled + charge and bat fault INT
198+ PERIPH_WIRE.sendDataMasterWIRE (0x0B | (disabled ? 0x20 : 0x00 ));
199+ PERIPH_WIRE.prepareCommandBitsWire (WIRE_MASTER_ACT_STOP);
200+
201+ PERIPH_WIRE.disableWIRE ();
202+ }
203+
204+ void initVariant () {
205+ enable_battery_charging ();
206+ disable_battery_fet (false );
207+ }
208+ #endif
209+
166210// Multi-serial objects instantiation
167211SERCOM sercom0 (SERCOM0);
168212SERCOM sercom1 (SERCOM1);
0 commit comments