Andy - AMD In Place
- - Other vendors in progress
NDA with team
Mechanical Form Factor
Need to dissasemble X220 Laptop
Andy & Jane (Vince?)
- Measure the dimensions of the case (mounting points, connector ports, airflow, DIMM access)
- Measure the dimensions of each PCB
- Measure the height and location of each component (scan PCB and label part heights)
- Idenify each board and function
- Location, type and pinout of all connectors
- Location and sizes of all fastenings
- Locations of SODIMMS (and DIMM access)
- Pin-outs of battery connector
- Size and type of connector (both sides)
- Reverse engineer schematic
- Understand BUS interface
- Where is the battery charger? is it in the battery or is it part of the laptop (most likely)
- Charging: firmware or device driver? (do I control this from a separate MCU??)
USB Device. Is it USB directly to the camera moudule in the screen assembly or is the system split up somehow:
[ 2.686313] usb 1-1.6: new high-speed USB device number 4 using ehci_hcd
[ 2.784044] usb 1-1.6: New USB device found, idVendor=17ef, idProduct=4816
[ 2.784049] usb 1-1.6: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[ 2.784052] usb 1-1.6: Product: Integrated Camera
[ 2.784055] usb 1-1.6: Manufacturer: Chicony Electronics Co., Ltd.
Keyboard, Nipple & Trackpad
This needs to be properly understood, as we will be using this system.
How is this presented to the current system?
input: AT Translated Set 2 keyboard as /devices/platform/i8042/serio0/input/input0
[ 5.535549] psmouse serio1: synaptics: Touchpad model: 1, fw: 7.4, id: 0x1e0b1, caps: 0xd047b3/0xb40000/0xa0000
[ 5.535560] psmouse serio1: synaptics: serio: Synaptics pass-through port at isa0060/serio1/input0
[ 5.586186] input: SynPS/2 Synaptics TouchPad as /devices/platform/i8042/serio1/input/input10
...Is this the the power key? or is this so that the ACPI system can send key presses...
[ 8.656343] input: ACPI Virtual Keyboard Device as /devices/virtual/input/input11
Fingerprint scanner sits on USB
[ 2.522587] usb 1-1.3: new full-speed USB device number 3 using ehci_hcd
[ 2.615815] usb 1-1.3: New USB device found, idVendor=147e, idProduct=2016
[ 2.615820] usb 1-1.3: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[ 2.615824] usb 1-1.3: Product: Biometric Coprocessor
[ 2.615827] usb 1-1.3: Manufacturer: UPEK
Sensors and Actuators
[ 4.533090] input: Lid Switch as /devices/LNXSYSTM:00/LNXSYBUS:00/PNP0C0D:00/input/input1
[ 4.533330] ACPI: Lid Switch [LID]
- Where is this? is it even brought out to the outside?
[ 4.533479] input: Sleep Button as /devices/LNXSYSTM:00/LNXSYBUS:00/PNP0C0E:00/input/input2
[ 4.533490] ACPI: Sleep Button [SLPB]
[ 4.550330] input: Power Button as /devices/LNXSYSTM:00/LNXPWRBN:00/input/input3
[ 4.550343] ACPI: Power Button [PWRF]
Claims to support 8 brightness levels (3bit) but in reality I see 16 Levels (and off as a 17th level!)
[ 4.599001] thinkpad_acpi: http://ibm-acpi.sf.net/
[ 4.599003] thinkpad_acpi: ThinkPad BIOS 6QET61WW (1.31 ), EC 6QHT31WW-1.12
[ 4.599006] thinkpad_acpi: Lenovo ThinkPad X201, model 3323B61
[ 4.605073] thinkpad_acpi: detected a 8-level brightness capable ThinkPad
[ 4.605692] thinkpad_acpi: This ThinkPad has standard ACPI backlight brightness control, supported by the ACPI video driver
[ 4.605695] thinkpad_acpi: Disabling thinkpad-acpi brightness events by default...
Radio (WiFi / BT etc) Master switch
[ 4.605243] thinkpad_acpi: radio switch found; radios are disabled
[ 4.605555] thinkpad_acpi: possible tablet mode switch found; ThinkPad in laptop mode
[ 4.613102] Registered led device: tpacpi::thinklight << Screen / keyboard LED.
[ 4.613202] Registered led device: tpacpi::power << Round symbol with stylizes Z in middle - front of screen only
[ 4.613264] Registered led device: tpacpi::standby << Sleep LED on both sides of screen
[ 4.613305] Registered led device: tpacpi::thinkvantage << AC power indicator both sides of screen
(I think that these are mute, volume +/- and 'blue' think vantage). If so they are NOT part of the standard keyboard.
[ 4.618408] input: ThinkPad Extra Buttons as /devices/platform/thinkpad_acpi/input/input4
Daniel will look at speccing this
We will need to supply some form of RTC.
However if we need to provide a coulomb counter for part of the battery managment subsystem then it would be logical to include the RTC there (as they will both need continuous power).
What bus do we place the RTC on?
Thermal & Power Managment System
Daniel will look at speccing this
- Is this part of ACPI?
- Do we need it to be part of ACPI?
I would like to handle thermal & power managment from a dedicated MCU.
The host OS should be able to read and control the TPMS from a single bus interface, with simple register read and write.
Thus reading any of the thermal sensors / fan speeds / power rails will actuly just read a register on the TPMS MCU.
The TPMS MCU will already be monitoring these devices (probably much more often!), and will convert from a RAW reading into SI units.
The TPMS will also 'filter' these readings and provide a weighted running average for example.
I guess this will mean that the TPMS should also have registers for 'RAW' values.
The TPMS should be able to control fan speed on behalf of the host system.
Under Automatic 'servo' control - if set by the host OS, and it will ramp up fan speeds according to temperature.
The TPMS can be configured to provide interrupts back to the host OS. Interrupts are for:
- FAN stalled
- FAN speed underrun (unable to acheve desired fan speed)
- FAN speed overrun (fan is spinning faster than desired speed)
- Getting Warm (fan system is running at maximum, but temperature is still rising)
- Thermal warning0 (user configurabel temperature warning)
- Thermal warning1 (user configurabel temperature warning)
- Thermal warning2 (user configurabel temperature warning)
- Thermal warning3 (user configurabel temperature warning)
Thermal AlarmHot (user configurable temperature that the system will trigger controlled shutdown)
Thermal CriticalHot (user configurable temperature that the system will remove power to prevent hardware damage)
Thermal AlarmCold (user configurable temperature that the system will trigger controlled shutdown)
Thermal CriticalCold (user configurable temperature that the system will remove power to prevent hardware damage)
What Fan(s) do we need?
- Fan type
- Fans should have an RPM pulse output (probably from a hall effect sensor)
- Fan location
What thermal monitoring points should we have?
- near CPU (I assime that there is some 'on-die' thermal sensing)
- near PMIC
- near Primary SMPS
- near RAM
- near GPU (Again we may assume 'on-die')
- in the Lid (a good place for ambiant temperature sensors)
- at heatsink vent points
Daniel will look at speccing this
In exactly the same way that the TPMS monitors and provides low pass filtering on temperature monitoring, the same should be true for Power monitoring.
We probably do not need to perform this for CPU and RAM power lines (I would expect that to be handled by the PMIC), but we should definately monitor all VCC rails NOT covered by the PMIC / PSU itself.
- ADC levels should be converted to SI units.
- Registers should provide SI voltage levels for all monitored lines (as well as RAW and unfiltered values)
- We probably should make available Power usage figures from:
- The mains supply;
- The battery (note this can be in either direction); and
- perhaps the USB ports.
I guess we should also have upper and lower limits for power rails (or a % tolerance) that creates a warning if the limits are exceeded, then a wider tolerance that will shutdown the system and finally one that will remove power.
- Can we identify separate power domains for peripherals?
- Can we isolate these domains in such a way that the TPMS MCU can have registers to turn power to these domains on and off?
- I am assuming that it is OK to just have the feed rails for each power domain on an ADC, and a digital sensor to indicate if the power domain is active or not.
- Each point of load PSU should be switchable
- PSU should have its own ADC
- Power domains should be switchable
- Data into a power domain will therefore need buffering to isolate when the power domain is offline
- Each power domain should have a 'VCC good' detector
We probably should sample and hold worst case values (pre-filtered) that caused us to go into an alarm state...
Should this be non-volatile?
- What should the physical clock tree look like?
- Which devices need a clock?
- How stable does the clock need to be?
- Should we detect / measure clocks in the PTMS?
- Can we shutdown / isolate clocks when we wish to take a power domain offline?
Debug Serial "consoles"
There must be at least one debug console that is brought to the outside world somehow.
This MUST be a dedicated port and MAY NOT be repurposed later - i.e. it should always be possible to get into the system via this console.
I am not against this being presented on a USB port.
If we can make one of the ports OTG via the hub this would be cool - i.e. in host mode you could access all the USB devices that are internal.
Such a host mode may need a physical (sic - missing word here?) to enable this mode
Steve McIntyre is dealing with this
Leif Lindholm is dealing with this
2014-09-14, MASS: Having read the above, I have the following comments:
- As well as ACPI look at IPMI;
- On server-grade hardware, a lights-out network console is routinely provided by the lights-out processor [this may be serial, or provide emulation of a screen]. On the chipset you are intending to use can the smaller processor provide a network serial console?
More modern fans use PWM to control desired speed see: PWM fan interface specification
http://www.chromium.org/chromium-os/ec-development could be a useful starting point for the EC firmware. it handles fan control, keyboard scanning, battery charging, etc.
the idea of making the internal USB devices accessible via a USB connector is interesting! maybe you could use something like http://www.onsemi.com/PowerSolutions/product.do?id=NLAS7222A to switch a USB-A receptacle between 'host' and 'device (ie connected to the internal hub)' mode? you can then use http://www.amazon.com/Type-Male-Cable-Version-Black/dp/B000I9B2AU/ref=pd_bxgy_e_img_b to connect the board in 'device' mode to another machine. if the controller chosen for the EC also does usb device, it could be hooked up to the internal USB hub as well. this would allow interacting with the EC from another machine for debugging/testing/... even when the main SoC is not running. if the EC has access to all flash chips onboard, it could also be used to provide a convenient way to flash all the firmware in the system.