From c9bbd0f27e589efe257d0946f52cb8fa9e84edaa Mon Sep 17 00:00:00 2001 From: mntmn Date: Fri, 22 May 2020 13:47:49 +0200 Subject: [PATCH 1/5] keyboard: serial timeout tweak and show voltage percentage estimation --- reform-keyboard2-fw-d3/Keyboard.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/reform-keyboard2-fw-d3/Keyboard.c b/reform-keyboard2-fw-d3/Keyboard.c index cbe349a..7eaa96f 100644 --- a/reform-keyboard2-fw-d3/Keyboard.c +++ b/reform-keyboard2-fw-d3/Keyboard.c @@ -122,7 +122,7 @@ int remote_receive_string(int print) { while (chr==-1 || chr==0) { chr=Serial_ReceiveByte(); clock++; - if (clock>100000) goto timeout; + if (clock>500000) goto timeout; } int poke_chr = chr; if (chr=='\n') poke_chr=' '; @@ -256,17 +256,17 @@ void remote_get_voltages(void) { if (percentage<0) percentage = 0; char str[32]; - sprintf(str,"[] %.1f [] %.1f",voltages[0],voltages[4]); + sprintf(str,"[] %.1f [] %.1f %d%%",voltages[0],voltages[4],(int)percentage); insert_bat_icon(str,0,voltages[0]); insert_bat_icon(str,8,voltages[4]); gfx_poke_str(0,0,str); - sprintf(str,"[] %.1f [] %.1f %d%%",voltages[1],voltages[5],(int)percentage); + sprintf(str,"[] %.1f [] %.1f ",voltages[1],voltages[5]); insert_bat_icon(str,0,voltages[1]); insert_bat_icon(str,8,voltages[5]); gfx_poke_str(0,1,str); - sprintf(str,"[] %.1f [] %.1f %.2fA",voltages[2],voltages[6],bat_amps); + sprintf(str,"[] %.1f [] %.1f %.2fA",voltages[2],voltages[6],-bat_amps); insert_bat_icon(str,0,voltages[2]); insert_bat_icon(str,8,voltages[6]); gfx_poke_str(0,2,str); From 9d78b250abe1e8e720eb3dd7d05bfa10a72118da Mon Sep 17 00:00:00 2001 From: mntmn Date: Fri, 22 May 2020 13:48:32 +0200 Subject: [PATCH 2/5] trackball: remove 1.5x X multiplier --- reform-trackball-fw/Mouse.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/reform-trackball-fw/Mouse.c b/reform-trackball-fw/Mouse.c index 9b7a9d4..8238263 100644 --- a/reform-trackball-fw/Mouse.c +++ b/reform-trackball-fw/Mouse.c @@ -292,7 +292,7 @@ bool CALLBACK_HID_Device_CreateHIDReport(USB_ClassInfo_HID_Device_t* const HIDIn MouseReport->Wheel = -ny; led_error(); } else { - MouseReport->X = 1.5*(float)(abs(nx)*nx); + MouseReport->X = abs(nx)*nx; MouseReport->Y = abs(ny)*ny; } From e776df329a8b071a150d9ecb2fe0e159e578144f Mon Sep 17 00:00:00 2001 From: mntmn Date: Fri, 22 May 2020 13:54:14 +0200 Subject: [PATCH 3/5] restore after merge: keyboard: serial timeout tweak and show voltage percentage estimation --- reform2-keyboard-fw/Keyboard.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/reform2-keyboard-fw/Keyboard.c b/reform2-keyboard-fw/Keyboard.c index 38ec5e6..7eaa96f 100644 --- a/reform2-keyboard-fw/Keyboard.c +++ b/reform2-keyboard-fw/Keyboard.c @@ -122,7 +122,7 @@ int remote_receive_string(int print) { while (chr==-1 || chr==0) { chr=Serial_ReceiveByte(); clock++; - if (clock>100000) goto timeout; + if (clock>500000) goto timeout; } int poke_chr = chr; if (chr=='\n') poke_chr=' '; @@ -229,7 +229,7 @@ void remote_get_voltages(void) { Serial_SendByte('\r'); Delay_MS(1); remote_receive_string(0); - bat_amps = -((float)atoi(response))/1000.0; + bat_amps = ((float)atoi(response))/1000.0; float sum_volts = 0; @@ -256,17 +256,17 @@ void remote_get_voltages(void) { if (percentage<0) percentage = 0; char str[32]; - sprintf(str,"[] %.1f [] %.1f",voltages[0],voltages[4]); + sprintf(str,"[] %.1f [] %.1f %d%%",voltages[0],voltages[4],(int)percentage); insert_bat_icon(str,0,voltages[0]); insert_bat_icon(str,8,voltages[4]); gfx_poke_str(0,0,str); - sprintf(str,"[] %.1f [] %.1f %d%%",voltages[1],voltages[5],(int)percentage); + sprintf(str,"[] %.1f [] %.1f ",voltages[1],voltages[5]); insert_bat_icon(str,0,voltages[1]); insert_bat_icon(str,8,voltages[5]); gfx_poke_str(0,1,str); - sprintf(str,"[] %.1f [] %.1f %.2fA",voltages[2],voltages[6],bat_amps); + sprintf(str,"[] %.1f [] %.1f %.2fA",voltages[2],voltages[6],-bat_amps); insert_bat_icon(str,0,voltages[2]); insert_bat_icon(str,8,voltages[6]); gfx_poke_str(0,2,str); From 2dce2c69df1f242eedb10c1c018971d9be73020f Mon Sep 17 00:00:00 2001 From: mntmn Date: Fri, 22 May 2020 14:15:19 +0200 Subject: [PATCH 4/5] handbook: autoresize svg diagram --- reform2-handbook/build.sh | 3 +++ reform2-handbook/system-diagram.pdf | Bin 28443 -> 28443 bytes reform2-handbook/system-diagram.svg | 2 +- 3 files changed, 4 insertions(+), 1 deletion(-) diff --git a/reform2-handbook/build.sh b/reform2-handbook/build.sh index de005e3..ad2f5f7 100755 --- a/reform2-handbook/build.sh +++ b/reform2-handbook/build.sh @@ -4,6 +4,9 @@ function build { dot -Tsvg system-diagram.dot -o system-diagram.svg rsvg-convert -f pdf -o system-diagram.pdf system-diagram.svg kramdown system.md >system.html + + sed -i 's/width="[^"]*"/width="100%"/' system-diagram.svg + sed -i 's/height="[^"]*"//' system-diagram.svg } build diff --git a/reform2-handbook/system-diagram.pdf b/reform2-handbook/system-diagram.pdf index d0df1c0bd2f656e924dbfd539526c4d4ec0a0a97..b841674996526f941e7988b85d45bd6a774b32de 100644 GIT binary patch delta 21 bcmbPzk8$=r#trK;*bGg8(0udOj5Ia?W7h~U delta 21 dcmbPzk8$=r#trK;*bEE|ER0MyZ_P+!0{~;T2rU2r diff --git a/reform2-handbook/system-diagram.svg b/reform2-handbook/system-diagram.svg index 7d4c0d4..78b32f6 100644 --- a/reform2-handbook/system-diagram.svg +++ b/reform2-handbook/system-diagram.svg @@ -4,7 +4,7 @@ - G From a8cc89f50c596b6428e0f77be780f6e016cc5e3c Mon Sep 17 00:00:00 2001 From: mntmn Date: Fri, 22 May 2020 16:34:52 +0200 Subject: [PATCH 5/5] handbook: fill in a lot more system diagram information --- reform2-handbook/system-diagram.dot | 92 ++++++------ reform2-handbook/system-diagram.pdf | Bin 28443 -> 40583 bytes reform2-handbook/system-diagram.svg | 138 +++++++++++++++++ reform2-handbook/system.html | 286 +++++++++++++++++++++++++++++++++++- reform2-handbook/system.md | 226 +++++++++++++++++++++++++++- 5 files changed, 684 insertions(+), 58 deletions(-) diff --git a/reform2-handbook/system-diagram.dot b/reform2-handbook/system-diagram.dot index 528f639..0064966 100644 --- a/reform2-handbook/system-diagram.dot +++ b/reform2-handbook/system-diagram.dot @@ -11,7 +11,7 @@ digraph G { labelloc="t"; rtc [label="Realtime\nClock" color=black href="system.html#rtc"]; - rtcbat [label="Coin Cell"]; + rtcbat [label="Coin Cell" href="system.html#rtc"]; subgraph cluster_som { fontname="Inter"; @@ -51,7 +51,7 @@ digraph G { pwm [label="PWM" href="system.html#pwm"]; - ethmac [label="ETH MAC"]; + ethmac [label="ETH MAC" href="system.html#eth-mac"]; cpu0 [label="Cortex-A53" href="system.html#cortex-a53"]; cpu1 [label="Cortex-M4F" href="system.html#cortex-m4f"]; @@ -61,10 +61,10 @@ digraph G { spi1 [label="SPI" href="system.html#spi"]; } - ram [label="LPDDR4\nRAM 4GB" color=black]; - emmc [label="eMMC\n~8GB" color=black]; + ram [label="LPDDR4\nRAM 4GB" color=black href="system.html#ddrc"]; + emmc [label="eMMC\n~8GB" color=black href="system.html#mmc"]; - ethphy [label="ETH PHY" color=black]; + ethphy [label="ETH PHY" color=black href="system.html#eth-phy"]; s5v [label="5V Input"]; } @@ -82,14 +82,14 @@ digraph G { style=filled; label=<Internal Ports
>; - iuart0 [label="UART1"]; - iuart1 [label="UART2\nConsole"]; + iuart0 [label="UART1" href="system.html#uart"]; + iuart1 [label="UART2\nConsole" href="system.html#uart"]; - iusb0 [label="IUSB1"]; - iusb1 [label="IUSB2"]; + iusb0 [label="IUSB1" href="system.html#usb3"]; + iusb1 [label="IUSB2" href="system.html#usb3"]; - impcie [label="mPCIe Slot"]; - im2 [label="M.2 Slot\nKey M"]; + impcie [label="mPCIe Slot" href="system.html#pcie"]; + im2 [label="M.2 Slot\nKey M" href="system.html#pcie"]; } subgraph cluster_power { @@ -108,18 +108,18 @@ digraph G { style=filled; margin="25.0"; - lpc [label="MCU LPC11U24" color=black width=4]; - ina [label="Current &\nVoltage Monitor" color=black]; + lpc [label="MCU LPC11U24" color=black width=4 href="system.html#lpc"]; + ina [label="Current &\nVoltage Monitor" color=black href="system.html#ina"]; - ltc [label="Buck/Boost\nDC-DC and Charger" color=black]; + ltc [label="Buck/Boost\nDC-DC and Charger" color=black href="system.html#ltc4020"]; - mon [label="Cell Monitor\nBalancer" color=black]; + mon [label="Cell Monitor\nBalancer" color=black href="system.html#balancer"]; - lspi [label="SPI" shape=diamond style=filled color=lightgrey]; - li2c [label="I2C" shape=diamond style=filled color=lightgrey]; + lspi [label="SPI" shape=diamond style=filled color=lightgrey href="system.html#spi"]; + li2c [label="I2C" shape=diamond style=filled color=lightgrey href="system.html#i2c"]; - cells [label="8x LiFePO4 18650 Batteries" shape=rectangle]; - supply [label="24V Power Supply\nfrom Barrel Jack" shape=rectangle]; + cells [label="8x LiFePO4 18650 Batteries" shape=rectangle href="system.html#cells"]; + supply [label="24V Power Supply\nfrom Barrel Jack" shape=rectangle href="system.html#barreljack"]; enabchg [label="Charge On" shape=diamond style=filled color=lightgrey]; enab5v [label="On" shape=diamond style=filled color=lightgrey]; @@ -134,13 +134,13 @@ digraph G { margin="25.0"; r28v [label="~28V" shape=diamond style=filled color=lightgrey]; - stby [label="3V3 Standby" color=black]; - r5v [label="5V" width=1.1 color=black]; - r3v3 [label="3V3" color=black]; + stby [label="3V3 Standby" color=black href="system.html#standby"]; + r5v [label="5V" width=1.1 color=black href="system.html#r5v"]; + r3v3 [label="3V3" color=black href="system.html#r3v3"]; - r1v2 [label="1V2" width=0.5 color=black]; - r1v5 [label="1V5" width=0.5 color=black]; - r1v8 [label="1V8" width=0.5 color=black]; + r1v2 [label="1V2" width=0.5 color=black href="system.html#r1v2"]; + r1v5 [label="1V5" width=0.5 color=black href="system.html#r1v5"]; + r1v8 [label="1V8" width=0.5 color=black href="system.html#r1v8"]; } } @@ -152,19 +152,19 @@ digraph G { color=lightgrey; style=filled; - pusb3 [label="USB3 Port 3"]; - pusb2 [label="USB3 Port 2"]; - pusb1 [label="USB3 Port 1"]; + pusb3 [label="USB3 Port 3" href="system.html#usb3"]; + pusb2 [label="USB3 Port 2" href="system.html#usb3"]; + pusb1 [label="USB3 Port 1" href="system.html#usb3"]; - pbarrel [label="Barrel Jack"]; + pbarrel [label="Barrel Jack" href="system.html#barreljack"]; - phdmi [label="HDMI Port"]; - psdcard [label="SD Card Slot"]; - peth [label="1G Ethernet Port"]; + phdmi [label="HDMI Port" href="system.html#hdmi"]; + psdcard [label="SD Card Slot" href="system.html#mmc"]; + peth [label="1G Ethernet Port" href="system.html#eth-mac"]; - paudio [label="Headphone &\nMic Jack"]; + paudio [label="Headphone &\nMic Jack" href="system.html#audiojack"]; } - lshift [label="Level Shifter"]; + lshift [label="Level Shifter" href="system.html#mmc"]; //refclk [label="PCIe Clock Generator"]; @@ -184,9 +184,9 @@ digraph G { label="Screen Assembly\n "; margin="25.0"; - panel [label="12.5\" 1920x1080\nIPS Panel"]; - backlight [label="Backlight"]; - speakers [label="Stereo\nSpeakers"]; + panel [label="12.5\" 1920x1080\nIPS Panel" href="system.html#panel"]; + backlight [label="Backlight" href="system.html#panel"]; + speakers [label="Stereo\nSpeakers" href="system.html#speakers"]; } subgraph cluster_trackball { @@ -196,13 +196,13 @@ digraph G { label="Trackball\n "; margin="25.0"; - tmcu [label="MCU Atmega32U2" color=black width=3]; - tsens [label="Motion Sensor"]; + tmcu [label="MCU Atmega32U2" color=black width=3 href="system.html#tbctrl"]; + tsens [label="Motion Sensor" href="system.html#tbsensor"]; - ti2c [label="I2C" shape=diamond style=filled color=lightgrey]; + ti2c [label="I2C" shape=diamond style=filled color=lightgrey href="system.html#i2c"]; tgpio [label="GPIO" shape=diamond style=filled color=lightgrey]; - tkeys [label="5 Buttons"]; + tkeys [label="5 Buttons" href="system.html#kbkeys"]; } subgraph cluster_keyboard { @@ -212,14 +212,14 @@ digraph G { label="Keyboard\n "; margin="25.0"; - kmcu [label="MCU Atmega32U4" color=black width=3]; + kmcu [label="MCU Atmega32U4" color=black width=3 href="system.html#kbctrl"]; - oled [label="OLED Display 128x32"]; + oled [label="OLED Display 128x32" href="system.html#oled"]; - ki2c [label="I2C" shape=diamond style=filled color=lightgrey]; - kuart [label="UART" shape=diamond style=filled color=lightgrey]; + ki2c [label="I2C" shape=diamond style=filled color=lightgrey href="system.html#i2c"]; + kuart [label="UART" shape=diamond style=filled color=lightgrey href="system.html#kbctrl"]; kgpio [label="GPIO" shape=diamond style=filled color=lightgrey]; - kkeys [label="Key Matrix"]; + kkeys [label="Key Matrix" href="system.html#kbkeys"]; } } diff --git a/reform2-handbook/system-diagram.pdf b/reform2-handbook/system-diagram.pdf index b841674996526f941e7988b85d45bd6a774b32de..eb0e22ce751774f3a67056b7a0da3734d822eda8 100644 GIT binary patch delta 13042 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 delta 8744 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 diff --git a/reform2-handbook/system-diagram.svg b/reform2-handbook/system-diagram.svg index 78b32f6..b21ea57 100644 --- a/reform2-handbook/system-diagram.svg +++ b/reform2-handbook/system-diagram.svg @@ -89,8 +89,11 @@ rtcbat + Coin Cell + + @@ -134,8 +137,11 @@ phdmi + HDMI Port + + @@ -191,8 +197,11 @@ pusb3 + USB3 Port 3 + + @@ -234,9 +243,12 @@ ram + LPDDR4 RAM 4GB + + @@ -255,9 +267,12 @@ emmc + eMMC ~8GB + + @@ -276,8 +291,11 @@ lshift + Level Shifter + + @@ -296,9 +314,12 @@ iuart1 + UART2 Console + + @@ -317,8 +338,11 @@ impcie + mPCIe Slot + + @@ -337,9 +361,12 @@ im2 + M.2 Slot Key M + + @@ -358,8 +385,11 @@ iuart0 + UART1 + + @@ -378,8 +408,11 @@ backlight + Backlight + + @@ -390,14 +423,20 @@ ethmac + ETH MAC + + ethphy + ETH PHY + + @@ -457,8 +496,11 @@ lpc + MCU LPC11U24 + + @@ -468,8 +510,11 @@ peth + 1G Ethernet Port + + @@ -485,8 +530,11 @@ iusb0 + IUSB1 + + @@ -496,8 +544,11 @@ iusb1 + IUSB2 + + @@ -507,8 +558,11 @@ pusb2 + USB3 Port 2 + + @@ -518,8 +572,11 @@ pusb1 + USB3 Port 1 + + @@ -529,9 +586,12 @@ paudio + Headphone & Mic Jack + + @@ -541,9 +601,12 @@ speakers + Stereo Speakers + + @@ -553,9 +616,12 @@ panel + 12.5" 1920x1080 IPS Panel + + @@ -566,8 +632,11 @@ kmcu + MCU Atmega32U4 + + @@ -577,8 +646,11 @@ tmcu + MCU Atmega32U2 + + @@ -588,8 +660,11 @@ lspi + SPI + + @@ -599,8 +674,11 @@ li2c + I2C + + @@ -646,15 +724,21 @@ ina + Current & Voltage Monitor + + cells + 8x LiFePO4 18650 Batteries + + @@ -664,9 +748,12 @@ ltc + Buck/Boost DC-DC and Charger + + @@ -688,9 +775,12 @@ mon + Cell Monitor Balancer + + @@ -716,9 +806,12 @@ supply + 24V Power Supply from Barrel Jack + + @@ -734,8 +827,11 @@ r5v + 5V + + @@ -746,8 +842,11 @@ r3v3 + 3V3 + + @@ -758,8 +857,11 @@ stby + 3V3 Standby + + @@ -800,8 +902,11 @@ r1v2 + 1V2 + + @@ -812,8 +917,11 @@ r1v5 + 1V5 + + @@ -824,8 +932,11 @@ r1v8 + 1V8 + + @@ -836,14 +947,20 @@ pbarrel + Barrel Jack + + psdcard + SD Card Slot + + @@ -858,8 +975,11 @@ ti2c + I2C + + @@ -880,8 +1000,11 @@ tsens + Motion Sensor + + @@ -891,8 +1014,11 @@ tkeys + 5 Buttons + + @@ -902,8 +1028,11 @@ ki2c + I2C + + @@ -913,8 +1042,11 @@ kuart + UART + + @@ -935,8 +1067,11 @@ oled + OLED Display 128x32 + + @@ -951,8 +1086,11 @@ kkeys + Key Matrix + + diff --git a/reform2-handbook/system.html b/reform2-handbook/system.html index 63f23ab..a4ce70f 100644 --- a/reform2-handbook/system.html +++ b/reform2-handbook/system.html @@ -1,4 +1,4 @@ -

Reform 2.0D-4 Electronic System Components

+

MNT Reform 2.0D-4 Electronic System Components

+

This is an interactive block diagram of the MNT Reform open hardware laptop. Click on a label in the diagram to jump to the corresponding bit of information.

+ +

For general information, visit the MNT Reform Website.

+

System-on-Module: Boundary Devices Nitrogen8M_SOM

The default SOM of Reform.

@@ -37,10 +41,6 @@ iframe {
  • Reference Manual
  • -

    Some interesting core drivers: -- drivers/clk/imx/clk-imx8mq.c --

    -

    Cortex-A53

    The four main 64-bit ARM cores of the default SOC of Reform. The bootloader and operating system usually run on these processors.

    @@ -161,7 +161,7 @@ iframe {
    • The first controller connects to an eMMC flash disk on the SOM (usually 8GB in size).
    • -

      The second controller connects to the SD card slot on the motherboard via a level shifter.

      +

      The second controller connects to the SD card slot on the motherboard via a level shifter. The level shifter converts between the SoC’s 1.8V and the SD card’s 3.3V signal levels.

    • Driver
    @@ -186,6 +186,10 @@ iframe {

    The PHY part of the Ethernet interface is a chip on the SOM. The default SOM has an Atheros AR8035 PHY, which is driven in Linux by a generic PHY driver.

    + +

    USB Hub

    Reform has a TI TUSB8041 USB Hub chip with four downstream ports, two of which lead to external USB3.0 connectors.

    @@ -195,3 +199,273 @@ iframe {
  • Datasheet
  • +

    Battery-Backed Realtime Clock

    + +

    The Reform motherboard has a NXP PCF8523T realtime clock chip that is backed by a 3.3V lithium coin cell when the system is unpowered. It is accessed by the SoC via I²C.

    + + + +

    DSI to eDP Converter

    + +

    The Reform motherboard has a TI SN65DSI86 (variant SN65DSI86IPAPQ1) chip that converts MIPI-DSI signals to eDP signals that the built-in display panel can understand. The DSI output on the default SOM is available on a flat cable connector. A short, 30 pin FPC cable goes from the SOM into the motherboard’s MIPI-DSI input connector directly below the SOM. The DSI signals are routed from there to the SN65DSI86 chip.

    + +

    The eDP signals are available on the 2x15 pin, 2mm DuPont header J24. Normally, a cable is plugged into this header, routed through the right-hand screen hinge and it’s IPEX connector side plugged into the display panel.

    + +
      +
    • Input DSI lanes: 4 + Clock
    • +
    • Output eDP lanes: 2 + AUX
    • +
    • Color depth: 8 bit per color channel (24 bit per pixel)
    • +
    • Standard Resolution: 1920x1080 @ 60 FPS
    • +
    • SN65DSI86 Datasheet
    • +
    + +

    Audio DAC/ADC

    + +

    The Audio DAC/ADC converts between the digital SAI audio signals and the signals on the audio jack and the speakers. It can drive both speakers and headphones with independent volumes.

    + +
      +
    • Model: Cirrus/Wolfson WM8960
    • +
    • Datasheet
    • +
    + +

    TRRS 3.5mm Audio Jack

    + +

    The 3.5mm audio jack, also called a TRRS jack (Tip/Ring/Ring/Sleeve) can be used to connect headphones, an external power amplifier or a headset with integrated microphone.

    + +

    The audio jack uses the CTIA standard to define which signals are located on which contacts on the plug:

    + +
      +
    • Tip: Left Speaker
    • +
    • First Ring: Right Speaker
    • +
    • Second Ring: Microphone
    • +
    • Sleeve: Ground
    • +
    + +

    System Controller

    + +

    Except for extreme undervoltage conditions (battery cells below 2.5V), the LPC is always running a C program that implements a state machine which watches over the battery cells and controls their charging and discharging/balancing.

    + +

    In addition, the LPC can toggle the main power rails in the system on and off via GPIOs going to the relevant voltage converters and load switches.

    + +

    The LPC can be directly controlled by Circle commands given via the keyboard.

    + +

    Model: NXP LPC11U24

    + + + +

    Cell Monitor/Balancer

    + +
      +
    • Model: Analog/Linear LTC6803-4
    • +
    • Datasheet
    • +
    + +

    Battery Voltage/Current Monitor

    + +
      +
    • Model: Texas Instruments INA260
    • +
    • Datasheet
    • +
    + +

    Buck-Boost DC-DC/Charger

    + +
      +
    • Model: Analog/Linear LTC4020
    • +
    • Datasheet
    • +
    + +

    Barrel Jack (Wall Power)

    + +

    The barrel jack accepts DC voltage in the range of 7V to 32V. The default power supply shipped with MNT Reform is specified at 24V / 2A.

    + +
      +
    • Receptacle: Switchcraft RAPC712X
    • +
    • Inner diameter: 2.5mm
    • +
    • Outer diameter: 5.5mm
    • +
    • Poles: Positive on inner pole, negative on outer barrel.
    • +
    + +

    5V Power Rail

    + +
      +
    • Type: Buck
    • +
    • Model: Texas Instruments LM2677SX-5
    • +
    • Datasheet
    • +
    • Max Current: 5A
    • +
    + +

    3V3 Power Rail

    + +
      +
    • Model: Texas Instruments LM2677SX-3.3
    • +
    • Datasheet
    • +
    • Max Current: 5A
    • +
    + +

    3V3 Standby Power Rail

    + +
      +
    • Type: Buck
    • +
    • Model: Texas Instruments LMR16006YQ3
    • +
    • Datasheet
    • +
    + +

    1V8 Power Rail

    + +
      +
    • Type: LDO
    • +
    • Model: Texas Instruments TLV1117-18
    • +
    • Datasheet
    • +
    + +

    1V5 Power Rail

    + +
      +
    • Type: Buck
    • +
    • Model: Texas Instruments TLV62568DBV
    • +
    • Datasheet
    • +
    + +

    1V2 Power Rail

    + +
      +
    • Type: Buck
    • +
    • Model: Texas Instruments TLV62568DBV
    • +
    • Datasheet
    • +
    + +

    Keyboard Controller

    + + + +

    The following shortcuts are available indepdently of the main processor in Reform, even when the system is powered off. Acting like a primitive terminal, most shortcuts trigger a command string to be sent over the keyboard’s UART to the LPC. The LPC then responds with characters to display on the OLED.

    + +

    In the 2.0D-3/D-4 development version:

    + +
      +
    • Circle + 1: Turn on the main system (powers up 5V, 3V3 and PCIe rails)
    • +
    • Circle + 0: Turn off the main system (powers down 5V, 3V3 and PCIe rails)
    • +
    • Circle + 2: Turn off the OLED display (turned back on by any other command)
    • +
    • Circle + F1: Decrease keyboard backlight brightness
    • +
    • Circle + F2: Increase keyboard backlight brightness
    • +
    • Circle + V: Show voltages of all cells, total voltage and Amps going in or out of batteries plus charge percentage estimation.
    • +
    • Circle + Y: Show voltage and amps as measured by the INA260 voltage/current monitor.
    • +
    • Circle + S: Display LPC status (idle/charging, overvoltage/balancing, undervoltage)
    • +
    + +

    Keep in mind that Circle + 0 powers off the system immediately, so save your work and make sure it is synced to disk before powering off. For example, use the sync or shutdown commands.

    + +

    Keyboard and Trackball Keys

    + +

    The keyboard and trackball modules both use the same type of switch.

    + +
      +
    • Standard Keyswitch Model: Kailh PG1350 Low Profile Choc Brown.
    • +
    • PG1350 Datasheet
    • +
    • Keyboard Keycaps: Kailh Black Low Profile / Choc Keycap 1.5U and 1U.
    • +
    + +

    The trackball has custom keycaps designed by MNT Research and 3D printed in an SLA process.

    + + + +

    Keyboard OLED

    + +

    The OLED display sits on its own little PCB on top of the keyboard, and is powered and controlled by the keyboard’s MCU independently from the computer’s main processor.

    + +

    The display is currently used to show the results of Circle commands given via the keyboard.

    + +
      +
    • Model: Generic SSD1306 128x32 Pixel OLED, Monochrome, I²C Interface
    • +
    + +

    Trackball Controller

    + + + +

    Trackball Sensor

    + + + +

    Trackpad Controller

    + +
      +
    • Model: Microchip/Atmel Atmega32U2
    • +
    • Firmware
    • +
    + +

    Trackpad Sensor

    + + + +

    Display Panel

    + +

    The display panel is connected to two main types of signals via a single IPEX connector:

    + +
      +
    • eDP (embedded DisplayPort), via the MIPI-DSI to eDP converter
    • +
    • +

      PWM to set the LED backlight’s brightness. The brightness is set via the duty cycle of the PWM signal, while the frequency is set at a fixed value (default: 10KHz).

      +
    • +
    • Model: Innolux N125HCE-GN1
    • +
    • Panelook Information
    • +
    + +

    Speakers

    + +

    Reform uses 2x 8 Ohm, 1 Watt mobile speakers mounted below the display panel. They are powered by the Audio DAC.

    + + + +

    Battery Cells

    + +

    Reform uses 8 battery cells with LiFePO4 (Lithium Iron Phosphate) chemistry.

    + +

    Important Warnings of Potential Fire and Injury Hazards

    + +
      +
    • Do not use batteries of any other chemistry in MNT Reform!
    • +
    • Double check polarity of battery cells and make sure they are the right way around!
    • +
    • +

      The cells are connected in series, resulting in a 28.8V total voltage with high current capability. If shorted, traces can easily be burned and sparks could ignite nearby material. - Do not use metal tools or open wires inside of MNT Reform!

      +
    • +
    • Chemistry: LiFePO4
    • +
    • Form Factor: 18650
    • +
    • Voltage: 3.2V
    • +
    • Cell Charge Voltage: 3.6V
    • +
    • Configuration: Series (28.8V)
    • +
    + +

    Examples of compatible cells

    + + diff --git a/reform2-handbook/system.md b/reform2-handbook/system.md index 2d0bc56..a3fb27f 100644 --- a/reform2-handbook/system.md +++ b/reform2-handbook/system.md @@ -1,4 +1,4 @@ -# Reform 2.0D-4 Electronic System Components +# MNT Reform 2.0D-4 Electronic System Components +This is an interactive block diagram of the MNT Reform open hardware laptop. Click on a label in the diagram to jump to the corresponding bit of information. + +For general information, visit the [MNT Reform Website](https://mntre.com/reform). + ## System-on-Module: Boundary Devices Nitrogen8M_SOM The default SOM of Reform. @@ -33,10 +37,6 @@ The default SOC of Reform. - [Data Sheet](https://www.nxp.com/docs/en/data-sheet/IMX8MDQLQCEC.pdf) - [Reference Manual](https://www.nxp.com/webapp/Download?colCode=IMX8MDQLQRM) -Some interesting core drivers: -- drivers/clk/imx/clk-imx8mq.c -- - #### Cortex-A53 {#cortex-a53} The four main 64-bit ARM cores of the default SOC of Reform. The bootloader and operating system usually run on these processors. @@ -130,7 +130,7 @@ Reform has 3 external USB 3.0 ports and two internal USB 2.0 ports. All of these Reform uses both USDHC MMC/SD controllers of i.MX8M: - The first controller connects to an eMMC flash disk on the SOM (usually 8GB in size). -- The second controller connects to the SD card slot on the motherboard via a level shifter. +- The second controller connects to the SD card slot on the motherboard via a level shifter. The level shifter converts between the SoC's 1.8V and the SD card's 3.3V signal levels. - [Driver](https://github.com/torvalds/linux/tree/master/drivers/mmc/host/sdhci-esdhc-imx.c) @@ -150,6 +150,8 @@ Ethernet in Reform is made from 3 parts (MAC, PHY and the connector with built-i The PHY part of the Ethernet interface is a chip on the SOM. The default SOM has an Atheros AR8035 PHY, which is driven in Linux by a generic PHY driver. +- [Datasheet](https://media.digikey.com/pdf/data%20sheets/csr%20pdfs/ar8035_ds_(atheros)_mar2011.pdf) + ## USB Hub {#usb-hub} Reform has a TI TUSB8041 USB Hub chip with four downstream ports, two of which lead to external USB3.0 connectors. @@ -157,3 +159,215 @@ Reform has a TI TUSB8041 USB Hub chip with four downstream ports, two of which l - [Website](https://www.ti.com/product/TUSB8041) - [Datasheet](https://www.ti.com/lit/ds/symlink/tusb8041.pdf?&ts=1590007407171) +## Battery-Backed Realtime Clock {#rtc} + +The Reform motherboard has a NXP PCF8523T realtime clock chip that is backed by a 3.3V lithium coin cell when the system is unpowered. It is accessed by the SoC via [I²C](#i2c). + +- [RTC Datasheet](https://www.nxp.com/docs/en/data-sheet/PCF8523.pdf) +- Coin cell standard: CR1220 + +## DSI to eDP Converter {#dsi2edp} + +The Reform motherboard has a TI SN65DSI86 (variant SN65DSI86IPAPQ1) chip that converts [MIPI-DSI](#dsi) signals to eDP signals that the built-in [display panel](#panel) can understand. The DSI output on the default SOM is available on a flat cable connector. A short, 30 pin FPC cable goes from the SOM into the motherboard's MIPI-DSI input connector directly below the SOM. The DSI signals are routed from there to the SN65DSI86 chip. + +The eDP signals are available on the 2x15 pin, 2mm DuPont header J24. Normally, a cable is plugged into this header, routed through the right-hand screen hinge and it's IPEX connector side plugged into the display panel. + +- Input DSI lanes: 4 + Clock +- Output eDP lanes: 2 + AUX +- Color depth: 8 bit per color channel (24 bit per pixel) +- Standard Resolution: 1920x1080 @ 60 FPS +- [SN65DSI86 Datasheet](https://www.ti.com/lit/ds/symlink/sn65dsi86-q1.pdf?&ts=1590150753809) + +## Audio DAC/ADC {#dac} + +The Audio DAC/ADC converts between the [digital SAI audio signals](#sai) and the signals on the [audio jack](#audiojack) and the [speakers](#speakers). It can drive both speakers and headphones with independent volumes. + +- Model: Cirrus/Wolfson WM8960 +- [Datasheet](https://statics.cirrus.com/pubs/proDatasheet/WM8960_v4.4.pdf) + +## TRRS 3.5mm Audio Jack {#audiojack} + +The 3.5mm audio jack, also called a TRRS jack (Tip/Ring/Ring/Sleeve) can be used to connect headphones, an external power amplifier or a headset with integrated microphone. + +The audio jack uses the CTIA standard to define which signals are located on which contacts on the plug: + +- Tip: Left Speaker +- First Ring: Right Speaker +- Second Ring: Microphone +- Sleeve: Ground + +## System Controller {#lpc} + +Except for extreme undervoltage conditions (battery cells below 2.5V), the LPC is always running a C program that implements a state machine which watches over the battery cells and controls their charging and discharging/balancing. + +In addition, the LPC can toggle the main power rails in the system on and off via GPIOs going to the relevant voltage converters and load switches. + +The LPC can be directly controlled by [Circle commands given via the keyboard](#kbctrl). + +Model: NXP LPC11U24 + +- [Datasheet](https://www.nxp.com/docs/en/data-sheet/LPC11U2X.pdf) +- [Firmware](https://source.mntmn.com/MNT/reform/src/branch/master/reform2-lpc-fw/src/boards/reform2) + +## Cell Monitor/Balancer {#balancer} + +- Model: Analog/Linear LTC6803-4 +- [Datasheet](https://www.analog.com/media/en/technical-documentation/data-sheets/680324fa.pdf) + +## Battery Voltage/Current Monitor {#ina} + +- Model: Texas Instruments INA260 +- [Datasheet](http://www.ti.com/lit/ds/symlink/ina260.pdf?&ts=1590151953117) + +## Buck-Boost DC-DC/Charger {#ltc4020} + +- Model: Analog/Linear LTC4020 +- [Datasheet](https://www.analog.com/media/en/technical-documentation/data-sheets/4020fd.pdf) + +## Barrel Jack (Wall Power) {#barreljack} + +The barrel jack accepts DC voltage in the range of 7V to 32V. The default power supply shipped with MNT Reform is specified at 24V / 2A. + +- Receptacle: Switchcraft RAPC712X +- Inner diameter: 2.5mm +- Outer diameter: 5.5mm +- Poles: Positive on inner pole, negative on outer barrel. + +## 5V Power Rail {#r5v} + +- Type: Buck +- Model: Texas Instruments LM2677SX-5 +- [Datasheet](http://www.ti.com/lit/ds/symlink/lm2677.pdf?&ts=1590152214783) +- Max Current: 5A + +## 3V3 Power Rail {#r3v3} + +- Model: Texas Instruments LM2677SX-3.3 +- [Datasheet](http://www.ti.com/lit/ds/symlink/lm2677.pdf?&ts=1590152214783) +- Max Current: 5A + +## 3V3 Standby Power Rail {#standby} + +- Type: Buck +- Model: Texas Instruments LMR16006YQ3 +- [Datasheet](http://www.ti.com/lit/gpn/lmr16006y-q1) + +## 1V8 Power Rail {#r1v8} + +- Type: LDO +- Model: Texas Instruments TLV1117-18 +- [Datasheet](http://www.ti.com/lit/ds/symlink/tlv1117.pdf?&ts=1590152118151) + +## 1V5 Power Rail {#r1v5} + +- Type: Buck +- Model: Texas Instruments TLV62568DBV +- [Datasheet](http://www.ti.com/lit/ds/symlink/tlv62568.pdf?&ts=1590152066123) + +## 1V2 Power Rail {#r1v2} + +- Type: Buck +- Model: Texas Instruments TLV62568DBV +- [Datasheet](http://www.ti.com/lit/ds/symlink/tlv62568.pdf?&ts=1590152066123) + +## Keyboard Controller {#kbctrl} + +- Model: Microchip/Atmel Atmega32U4 +- [Datasheet](http://ww1.microchip.com/downloads/en/devicedoc/atmel-7766-8-bit-avr-atmega16u4-32u4_datasheet.pdf) +- [Firmware](https://source.mntmn.com/MNT/reform/src/branch/master/reform2-keyboard-fw) + +The following shortcuts are available indepdently of the main processor in Reform, even when the system is powered off. Acting like a primitive terminal, most shortcuts trigger a command string to be sent over the keyboard's UART to the [LPC](#lpc). The LPC then responds with characters to display on the [OLED](#oled). + +In the 2.0D-3/D-4 development version: + +- *Circle + 1:* Turn on the main system (powers up 5V, 3V3 and PCIe rails) +- *Circle + 0:* Turn off the main system (powers down 5V, 3V3 and PCIe rails) +- *Circle + 2:* Turn off the OLED display (turned back on by any other command) +- *Circle + F1:* Decrease keyboard backlight brightness +- *Circle + F2:* Increase keyboard backlight brightness +- *Circle + V:* Show voltages of all cells, total voltage and Amps going in or out of batteries plus charge percentage estimation. +- *Circle + Y:* Show voltage and amps as measured by the [INA260](#ina) voltage/current monitor. +- *Circle + S:* Display LPC status (idle/charging, overvoltage/balancing, undervoltage) + +Keep in mind that *Circle + 0* powers off the system immediately, so save your work and make sure it is synced to disk before powering off. For example, use the `sync` or `shutdown` commands. + +## Keyboard and Trackball Keys {#kbkeys} + +The keyboard and trackball modules both use the same type of switch. + +- Standard Keyswitch Model: Kailh PG1350 Low Profile Choc Brown. +- [PG1350 Datasheet](https://www.kailhswitch.com/uploads/201915927/CPG135001D02-1_Choc_Burnt_Orange.pdf) +- Keyboard Keycaps: Kailh Black Low Profile / Choc Keycap 1.5U and 1U. + +The trackball has custom keycaps designed by MNT Research and 3D printed in an SLA process. + +- [Trackball 3D Printed Parts](https://source.mntmn.com/MNT/reform/src/branch/master/reform2-3d-printed-parts/reform2-stl) + +## Keyboard OLED {#oled} + +The OLED display sits on its own little PCB on top of the keyboard, and is powered and controlled by the [keyboard's MCU](#kbctrl) independently from the computer's main processor. + +The display is currently used to show the results of [Circle commands given via the keyboard](#kbctrl). + +- Model: Generic SSD1306 128x32 Pixel OLED, Monochrome, I²C Interface + +## Trackball Controller {#tbctrl} + +- Model: Microchip/Atmel Atmega32U2 +- [Datasheet](http://ww1.microchip.com/downloads/en/DeviceDoc/doc7799.pdf) +- [Firmware](https://source.mntmn.com/MNT/reform/src/branch/master/reform2-trackball-fw) +- [Trackball 3D Printed Parts](https://source.mntmn.com/MNT/reform/src/branch/master/reform2-3d-printed-parts/reform2-stl) + +## Trackball Sensor {#tbsensor} + +- Model: Pixart PAT9125EL +- [Datasheet](https://www.codico.com/shop/media/datasheets/PixArt_PAT9125EL_InfoBrief.pdf) + +## Trackpad Controller {#tpcrtl} + +- Model: Microchip/Atmel Atmega32U2 +- [Firmware](https://source.mntmn.com/MNT/reform/src/branch/master/reform2-trackpad-fw) + +## Trackpad Sensor {#tpsensor} + +- Model: Azoteq TPS65-201A-S +- [Datasheet](https://www.mouser.de/datasheet/2/42/proxsense_i2c_trackpad_datasheet-1626845.pdf) + +## Display Panel {#panel} + +The display panel is connected to two main types of signals via a single IPEX connector: + +- eDP (embedded DisplayPort), via the [MIPI-DSI to eDP converter](#dsi2edp) +- [PWM](#pwm) to set the LED backlight's brightness. The brightness is set via the duty cycle of the PWM signal, while the frequency is set at a fixed value (default: 10KHz). + +- Model: Innolux N125HCE-GN1 +- [Panelook Information](http://www.panelook.com/N125HCE-GN1_Innolux_12.5_LCM_overview_28140.html) + +## Speakers {#speakers} + +Reform uses 2x 8 Ohm, 1 Watt mobile speakers mounted below the [display panel](#panel). They are powered by the [Audio DAC](#dac). + +- Model: PUI AS01808AO-3-R +- [Datasheet](http://www.puiaudio.com/pdf/AS01808AO-3-R.pdf) + +## Battery Cells {#cells} + +Reform uses 8 battery cells with LiFePO4 (Lithium Iron Phosphate) chemistry. + +### Important Warnings of Potential Fire and Injury Hazards + +- *Do not use batteries of any other chemistry in MNT Reform!* +- *Double check polarity of battery cells and make sure they are the right way around!* +- *The cells are connected in series, resulting in a 28.8V total voltage with high current capability. If shorted, traces can easily be burned and sparks could ignite nearby material.* - *Do not use metal tools or open wires inside of MNT Reform!* + +- Chemistry: LiFePO4 +- Form Factor: 18650 +- Voltage: 3.2V +- Cell Charge Voltage: 3.6V +- Configuration: Series (28.8V) + +### Examples of compatible cells + +- [Battery Space](https://www.batteryspace.com/lifepo4-18650-rechargeable-cell-3-2v-1500-mah-8-4a-rate-4-32wh-ul-listed-un38-3-passed-ndgr.aspx) +- [ENERpower](https://enerprof.de/akkus/akkus-lifepo4/akkuzellen-lifepo4/akkuzellen-lifepo4-18650/32/enerpower-18650-lifepo4-3-2v-1800-mah?c=26) +- [Lithium Werks](https://www.18650batterystore.com/Lithium-Werks-p/lithiumwerks-apr18650m1b.htm)