mbox series

[v13,0/4] Add support for the Purism Librem5 devkit

Message ID 20190520142330.3556-1-angus@akkea.ca
Headers show
Series Add support for the Purism Librem5 devkit | expand

Message

Angus Ainslie May 20, 2019, 2:23 p.m. UTC
The Librem5 devkit is based on the imx8mq from NXP. This is a default
devicetree to boot the board to a command prompt.

Changes since v12:

Updated patch to vendor-prefixes.yaml.
Dropped always on from regulators.

Changes since v11:

Added reviewed-by tags.
Fixed subject typo.

Changes since v10:

Moved MAINTAINERS entry to "ARM/FREESCALE IMX" section

Changes since v9:

Added a MAINTAINERS entry for arm64 imx devicetree files.

Changes since v8:

Fixed license comment.
Changed regulators to all lower case.
Changed clock frequency for NXP errata e7805.
Dropped blank line.

Changes since v7:

More regulators always on for USB.
Add vbus regulator.
Drop vbat regulator.
Replace legacy "gpio-key,wakeup" with "wakeup-source".
Add vbus-supply to get rid of warning
imx8mq-usb-phy 382f0040.usb-phy: 382f0040.usb-phy supply vbus not found,
using dummy regulator

Changes since v6:

Dropped unused regulators.
Fix regulator phandles case.
Dropped extra whitespace.

Changes since v5:

Added reviewed-by tags.
Moved USB port links to USB controller node.

Changes since v4:

Compiled against linux-next next-20190415.
Added imx8mq to the arm yaml file.
Re-arrange regulator nodes to drop undefined supplies.
Additional ordering for aesthetics.
Split some long lines.
Added lots of blank lines.
Moved pinctl muxes to where they are used.
Cleaned out reg defintions from regulator nodes.

Changes since v3:

Freshly sorted and pressed nodes.
Change the backlight to an interpolated scale.
Dropped i2c2.
Dropped devkit version number to match debian MR.

Changes since v2:

Fixed incorrect phy-supply for the fsl-fec.
Dropped unused regulator property.
Fixup Makefile for linux-next.

Changes since v1:

Dropped config file.
Updated the board compatible label.
Changed node names to follow naming conventions.
Added a more complete regulator hierachy.
Removed unused nodes.
Removed unknown devices.
Fixed comment style.
Dropped undocumented properties.


Angus Ainslie (Purism) (4):
  MAINTAINERS: add an entry for for arm64 imx devicetrees
  arm64: dts: fsl: librem5: Add a device tree for the Librem5 devkit
  dt-bindings: Add an entry for Purism SPC
  dt-bindings: arm: fsl: Add the imx8mq boards

 .../devicetree/bindings/arm/fsl.yaml          |   7 +
 .../devicetree/bindings/vendor-prefixes.yaml  |   2 +
 MAINTAINERS                                   |   1 +
 arch/arm64/boot/dts/freescale/Makefile        |   1 +
 .../dts/freescale/imx8mq-librem5-devkit.dts   | 810 ++++++++++++++++++
 5 files changed, 821 insertions(+)
 create mode 100644 arch/arm64/boot/dts/freescale/imx8mq-librem5-devkit.dts

Comments

Pavel Machek May 23, 2019, 7:19 p.m. UTC | #1
Hi!

> This is for the development kit board for the Librem 5. The current level
> of support yields a working console and is able to boot userspace from
> the network or eMMC.
> 
> Additional subsystems that are active :

> - haptic motor

Haptic motor is not a LED. It should be controlled by input subsystem.

> +	pwmleds {
> +		compatible = "pwm-leds";
> +
> +		haptic {
> +			label = "librem5::haptic";
> +			pwms = <&pwm2 0 200000>;
> +			active-low;
> +			max-brightness = <255>;
> +			power-supply = <&reg_3v3_p>;
> +		};
> +	};

You can take a look at N900, that has reasonable interface.

Thanks,
										Pavel
Pavel Machek May 23, 2019, 7:19 p.m. UTC | #2
Hi!

> - LEDs
> - gyro
> - magnetometer

> +	leds {
> +		compatible = "gpio-leds";
> +		pinctrl-names = "default";
> +		pinctrl-0 = <&pinctrl_gpio_leds>;
> +
> +		led1 {
> +			label = "LED 1";

So, what kind of LED do you have, and what color is it? label should probably be something like
notify:green.

> +	charger@6b { /* bq25896 */
> +		compatible = "ti,bq25890";
> +		reg = <0x6b>;
> +		pinctrl-names = "default";
> +		pinctrl-0 = <&pinctrl_charger>;
> +		interrupt-parent = <&gpio3>;
> +		interrupts = <25 IRQ_TYPE_EDGE_FALLING>;
> +		ti,battery-regulation-voltage = <4192000>; /* 4.192V */
> +		ti,charge-current = <1600000>; /* 1.6 A */

No space before A, for consistency.

> +		ti,termination-current = <66000>;  /* 66mA */
> +		ti,precharge-current = <1300000>; /* 1.3A */

I thought precharge is usually something low, because you are not yet sure of battery health...?

> +		ti,minimum-sys-voltage = <2750000>; /* 2.75V */

Are you sure? Normally systems shut down at 3.2V, 3V or so. Li-ion batteries don't
really like to be discharged _this_ deep.

										Pavel
Angus Ainslie May 23, 2019, 9:52 p.m. UTC | #3
Hi Pavel,


On 2019-05-23 12:19, Pavel Machek wrote:
> Hi!
> 
>> This is for the development kit board for the Librem 5. The current 
>> level
>> of support yields a working console and is able to boot userspace from
>> the network or eMMC.
>> 
>> Additional subsystems that are active :
> 
>> - haptic motor
> 
> Haptic motor is not a LED. It should be controlled by input subsystem.
> 
>> +	pwmleds {
>> +		compatible = "pwm-leds";
>> +
>> +		haptic {
>> +			label = "librem5::haptic";
>> +			pwms = <&pwm2 0 200000>;
>> +			active-low;
>> +			max-brightness = <255>;
>> +			power-supply = <&reg_3v3_p>;
>> +		};
>> +	};
> 
> You can take a look at N900, that has reasonable interface.
> 

I wanted to control the haptic with the pwm-vibra driver but 
"fsl,imx27-pwm" doesn't seem to respect the PWM_POLARITY_INVERTED flag 
so when I start the system the vibrator is full on.

I could use gpio-vibrator but that seemed like a waste when the device 
is connected to pwm.

I figured the using the pwm-leds interface was a reasonable compromise 
until I had an opportunity to make changes the the imx27-pwm driver.

Thanks
Angus


> Thanks,
> 										Pavel
Pavel Machek May 23, 2019, 10:06 p.m. UTC | #4
Hi!

> >>This is for the development kit board for the Librem 5. The current
> >>level
> >>of support yields a working console and is able to boot userspace from
> >>the network or eMMC.
> >>
> >>Additional subsystems that are active :
> >
> >>- haptic motor
> >
> >Haptic motor is not a LED. It should be controlled by input subsystem.
> >
> >>+	pwmleds {
> >>+		compatible = "pwm-leds";
> >>+
> >>+		haptic {
> >>+			label = "librem5::haptic";
> >>+			pwms = <&pwm2 0 200000>;
> >>+			active-low;
> >>+			max-brightness = <255>;
> >>+			power-supply = <&reg_3v3_p>;
> >>+		};
> >>+	};
> >
> >You can take a look at N900, that has reasonable interface.
> 
> I wanted to control the haptic with the pwm-vibra driver but "fsl,imx27-pwm"
> doesn't seem to respect the PWM_POLARITY_INVERTED flag so when I start the
> system the vibrator is full on.

Ok, lets fix that :-).

> I could use gpio-vibrator but that seemed like a waste when the device is
> connected to pwm.
> 
> I figured the using the pwm-leds interface was a reasonable compromise until
> I had an opportunity to make changes the the imx27-pwm driver.

I guess in such case it would be best to leave out this section for
now... or keep it disabled / something. We don't want incorrect device
trees to stick around.

Thanks,
									Pavel
Angus Ainslie May 24, 2019, 10 p.m. UTC | #5
Hi Pavel,

On 2019-05-23 12:19, Pavel Machek wrote:
> Hi!
> 
>> - LEDs
>> - gyro
>> - magnetometer
> 
>> +	leds {
>> +		compatible = "gpio-leds";
>> +		pinctrl-names = "default";
>> +		pinctrl-0 = <&pinctrl_gpio_leds>;
>> +
>> +		led1 {
>> +			label = "LED 1";
> 
> So, what kind of LED do you have, and what color is it? label should
> probably be something like
> notify:green.
> 

As we don't have a specific use for these yet does it really matter if 
there is a colour or a number associated with them ?

>> +	charger@6b { /* bq25896 */
>> +		compatible = "ti,bq25890";
>> +		reg = <0x6b>;
>> +		pinctrl-names = "default";
>> +		pinctrl-0 = <&pinctrl_charger>;
>> +		interrupt-parent = <&gpio3>;
>> +		interrupts = <25 IRQ_TYPE_EDGE_FALLING>;
>> +		ti,battery-regulation-voltage = <4192000>; /* 4.192V */
>> +		ti,charge-current = <1600000>; /* 1.6 A */
> 
> No space before A, for consistency.
> 
>> +		ti,termination-current = <66000>;  /* 66mA */
>> +		ti,precharge-current = <1300000>; /* 1.3A */
> 
> I thought precharge is usually something low, because you are not yet
> sure of battery health...?
> 

I think I put that in incorrectly. The intention was 130mA.

>> +		ti,minimum-sys-voltage = <2750000>; /* 2.75V */
> 
> Are you sure? Normally systems shut down at 3.2V, 3V or so. Li-ion
> batteries don't
> really like to be discharged _this_ deep.

You are correct. I'll fix it for the next version.

Thanks
Angus

> 
> 										Pavel
Angus Ainslie May 24, 2019, 10:20 p.m. UTC | #6
Hi Pavel,

On 2019-05-24 15:00, Angus Ainslie wrote:
> Hi Pavel,
> 
> On 2019-05-23 12:19, Pavel Machek wrote:
>> Hi!
>> 
>>> - LEDs
>>> - gyro
>>> - magnetometer
>> 
>>> +	leds {
>>> +		compatible = "gpio-leds";
>>> +		pinctrl-names = "default";
>>> +		pinctrl-0 = <&pinctrl_gpio_leds>;
>>> +
>>> +		led1 {
>>> +			label = "LED 1";
>> 
>> So, what kind of LED do you have, and what color is it? label should
>> probably be something like
>> notify:green.
>> 
> 
> As we don't have a specific use for these yet does it really matter if
> there is a colour or a number associated with them ?
> 
>>> +	charger@6b { /* bq25896 */
>>> +		compatible = "ti,bq25890";
>>> +		reg = <0x6b>;
>>> +		pinctrl-names = "default";
>>> +		pinctrl-0 = <&pinctrl_charger>;
>>> +		interrupt-parent = <&gpio3>;
>>> +		interrupts = <25 IRQ_TYPE_EDGE_FALLING>;
>>> +		ti,battery-regulation-voltage = <4192000>; /* 4.192V */
>>> +		ti,charge-current = <1600000>; /* 1.6 A */
>> 
>> No space before A, for consistency.
>> 
>>> +		ti,termination-current = <66000>;  /* 66mA */
>>> +		ti,precharge-current = <1300000>; /* 1.3A */
>> 
>> I thought precharge is usually something low, because you are not yet
>> sure of battery health...?
>> 
> 
> I think I put that in incorrectly. The intention was 130mA.
> 
>>> +		ti,minimum-sys-voltage = <2750000>; /* 2.75V */
>> 
>> Are you sure? Normally systems shut down at 3.2V, 3V or so. Li-ion
>> batteries don't
>> really like to be discharged _this_ deep.
> 
> You are correct. I'll fix it for the next version.
> 

Looking into it further Sanyo and Panasonic get over 300 cycles bringing 
the NCR18650 down to 2.5V so 2.75V should be fine.

http://www.batteryonestop.com/baotongusa/products/datasheets/li-ion/SANYO-NCR18650B-3400mAh.pdf
https://industrial.panasonic.com/ww/products/batteries/secondary-batteries/lithium-ion/cylindrical-type/NCR18650PF

Angus

> Thanks
> Angus
> 
>> 
>> 										Pavel