From 628ee7d7712ecdb007bc91e05d0eba8c4cb5b4ea Mon Sep 17 00:00:00 2001
From: Martino Facchin <m.facchin@arduino.cc>
Date: Tue, 4 Jul 2017 17:26:26 +0200
Subject: [PATCH] Fix PMIC behaviour by borrowing Electron library

PMIC initialization is now handled by the GSM init() if the selected board is suitable. The only hadcoded PMIC initialization is 500mA maximum charge current.
---
 variants/mkrgsm1400/variant.cpp | 16 ++++++++++++++--
 1 file changed, 14 insertions(+), 2 deletions(-)

diff --git a/variants/mkrgsm1400/variant.cpp b/variants/mkrgsm1400/variant.cpp
index 615a02a5..efd368b1 100644
--- a/variants/mkrgsm1400/variant.cpp
+++ b/variants/mkrgsm1400/variant.cpp
@@ -17,6 +17,7 @@
 */
 
 #include "variant.h"
+#include "Arduino.h"
 
 const PinDescription g_APinDescription[] = {
 
@@ -172,6 +173,12 @@ SERCOM sercom5(SERCOM5);
 
 #define PMIC_ADDRESS  0x6B
 #define PMIC_REG02    0x02
+#define PMIC_REG00    0x00
+#define INPUT_CURRENT_LIMIT_0A1 (0x0)
+#define INPUT_CURRENT_LIMIT_0A9 (0x3)
+#define INPUT_CURRENT_LIMIT_1A5 (0x5)
+#define VOLTAGE_LIMIT_4V36      (0x6 << 3)
+#define VOLTAGE_LIMIT_4V04      (0x2 << 3)
 
 static inline void set_pmic_safe_defaults() {
   PERIPH_WIRE.initMasterWIRE(100000);
@@ -183,15 +190,20 @@ static inline void set_pmic_safe_defaults() {
   PERIPH_WIRE.sendDataMasterWIRE(PMIC_REG02);
   PERIPH_WIRE.sendDataMasterWIRE(0);
   PERIPH_WIRE.prepareCommandBitsWire(WIRE_MASTER_ACT_STOP);
+
   PERIPH_WIRE.disableWIRE();
 }
 
+#else
+
+static inline void set_pmic_safe_defaults() {}
+
+#endif
+
 void initVariant() {
   set_pmic_safe_defaults();
 }
 
-#endif
-
 // Serial1
 Uart Serial1(&sercom5, PIN_SERIAL1_RX, PIN_SERIAL1_TX, PAD_SERIAL1_RX, PAD_SERIAL1_TX);
 
-- 
GitLab