diff mbox

ARM: sun7i: dt: Add new MK808C device

Message ID 1425131004-8551-1-git-send-email-codekipper@gmail.com (mailing list archive)
State New, archived
Headers show

Commit Message

Code Kipper Feb. 28, 2015, 1:43 p.m. UTC
From: Marcus Cooper <codekipper@gmail.com>

The MK808C is an A20 based android stick, with 1G RAM, 8G NAND flash,
a RTL8723au wifi + bt combo chip, a USB host ports using USB-A receptacles,
a mini USB-B receptacle for USB OTG, mini HDMI and a TRS connector for AV.

This patch adds basic support for the device, more information can be found
here (http://linux-sunxi.org/MK808C).

Signed-off-by: Marcus Cooper <codekipper@gmail.com>
---
 arch/arm/boot/dts/Makefile             |   1 +
 arch/arm/boot/dts/sun7i-a20-mk808c.dts | 146 +++++++++++++++++++++++++++++++++
 2 files changed, 147 insertions(+)
 create mode 100644 arch/arm/boot/dts/sun7i-a20-mk808c.dts

Comments

Maxime Ripard March 3, 2015, 7:13 a.m. UTC | #1
Hi,

On Sat, Feb 28, 2015 at 02:43:24PM +0100, codekipper@gmail.com wrote:
> From: Marcus Cooper <codekipper@gmail.com>
> 
> The MK808C is an A20 based android stick, with 1G RAM, 8G NAND flash,
> a RTL8723au wifi + bt combo chip, a USB host ports using USB-A receptacles,
> a mini USB-B receptacle for USB OTG, mini HDMI and a TRS connector for AV.
> 
> This patch adds basic support for the device, more information can be found
> here (http://linux-sunxi.org/MK808C).
> 
> Signed-off-by: Marcus Cooper <codekipper@gmail.com>
> ---
>  arch/arm/boot/dts/Makefile             |   1 +
>  arch/arm/boot/dts/sun7i-a20-mk808c.dts | 146 +++++++++++++++++++++++++++++++++
>  2 files changed, 147 insertions(+)
>  create mode 100644 arch/arm/boot/dts/sun7i-a20-mk808c.dts
> 
> diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile
> index 9544768..eae7706 100644
> --- a/arch/arm/boot/dts/Makefile
> +++ b/arch/arm/boot/dts/Makefile
> @@ -542,6 +542,7 @@ dtb-$(CONFIG_MACH_SUN7I) += \
>  	sun7i-a20-hummingbird.dtb \
>  	sun7i-a20-i12-tvbox.dtb \
>  	sun7i-a20-m3.dtb \
> +	sun7i-a20-mk808c.dtb \
>  	sun7i-a20-olinuxino-lime.dtb \
>  	sun7i-a20-olinuxino-lime2.dtb \
>  	sun7i-a20-olinuxino-micro.dtb \
> diff --git a/arch/arm/boot/dts/sun7i-a20-mk808c.dts b/arch/arm/boot/dts/sun7i-a20-mk808c.dts
> new file mode 100644
> index 0000000..5722a03
> --- /dev/null
> +++ b/arch/arm/boot/dts/sun7i-a20-mk808c.dts
> @@ -0,0 +1,146 @@
> +/*
> + * Copyright 2015 Marcus Cooper
> + *
> + * Marcus Cooper <codekipper@gmail.com>
> + *
> + * This file is dual-licensed: you can use it either under the terms
> + * of the GPL or the X11 license, at your option. Note that this dual
> + * licensing only applies to this file, and not this project as a
> + * whole.
> + *
> + *  a) This file is free software; you can redistribute it and/or
> + *     modify it under the terms of the GNU General Public License as
> + *     published by the Free Software Foundation; either version 2 of the
> + *     License, or (at your option) any later version.
> + *
> + *     This file is distributed in the hope that it will be useful,
> + *     but WITHOUT ANY WARRANTY; without even the implied warranty of
> + *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
> + *     GNU General Public License for more details.
> + *
> + *     You should have received a copy of the GNU General Public
> + *     License along with this file; if not, write to the Free
> + *     Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
> + *     MA 02110-1301 USA
> + *
> + * Or, alternatively,
> + *
> + *  b) Permission is hereby granted, free of charge, to any person
> + *     obtaining a copy of this software and associated documentation
> + *     files (the "Software"), to deal in the Software without
> + *     restriction, including without limitation the rights to use,
> + *     copy, modify, merge, publish, distribute, sublicense, and/or
> + *     sell copies of the Software, and to permit persons to whom the
> + *     Software is furnished to do so, subject to the following
> + *     conditions:
> + *
> + *     The above copyright notice and this permission notice shall be
> + *     included in all copies or substantial portions of the Software.
> + *
> + *     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
> + *     EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
> + *     OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
> + *     NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
> + *     HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
> + *     WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
> + *     FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
> + *     OTHER DEALINGS IN THE SOFTWARE.
> + */
> +
> +/dts-v1/;
> +#include "sun7i-a20.dtsi"
> +#include "sunxi-common-regulators.dtsi"
> +
> +#include <dt-bindings/gpio/gpio.h>
> +#include <dt-bindings/interrupt-controller/irq.h>
> +#include <dt-bindings/pinctrl/sun4i-a10.h>

You don't seem to be using the pinctrl header.

> +
> +/ {
> +	model = "mk808c";
> +	compatible = "mk808c", "allwinner,sun7i-a20";

the compatible must be of the format "vendor,device". Please add the
vendor name.

Maxime
Code Kipper March 3, 2015, 8:22 p.m. UTC | #2
Thanks for the review Maxime,

On 3 March 2015 at 08:13, Maxime Ripard
<maxime.ripard@free-electrons.com> wrote:
> Hi,
>
> On Sat, Feb 28, 2015 at 02:43:24PM +0100, codekipper@gmail.com wrote:
>> From: Marcus Cooper <codekipper@gmail.com>
>>
>> The MK808C is an A20 based android stick, with 1G RAM, 8G NAND flash,
>> a RTL8723au wifi + bt combo chip, a USB host ports using USB-A receptacles,
>> a mini USB-B receptacle for USB OTG, mini HDMI and a TRS connector for AV.
>>
>> This patch adds basic support for the device, more information can be found
>> here (http://linux-sunxi.org/MK808C).
>>
>> Signed-off-by: Marcus Cooper <codekipper@gmail.com>
>> ---
>>  arch/arm/boot/dts/Makefile             |   1 +
>>  arch/arm/boot/dts/sun7i-a20-mk808c.dts | 146 +++++++++++++++++++++++++++++++++
>>  2 files changed, 147 insertions(+)
>>  create mode 100644 arch/arm/boot/dts/sun7i-a20-mk808c.dts
>>
>> diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile
>> index 9544768..eae7706 100644
>> --- a/arch/arm/boot/dts/Makefile
>> +++ b/arch/arm/boot/dts/Makefile
>> @@ -542,6 +542,7 @@ dtb-$(CONFIG_MACH_SUN7I) += \
>>       sun7i-a20-hummingbird.dtb \
>>       sun7i-a20-i12-tvbox.dtb \
>>       sun7i-a20-m3.dtb \
>> +     sun7i-a20-mk808c.dtb \
>>       sun7i-a20-olinuxino-lime.dtb \
>>       sun7i-a20-olinuxino-lime2.dtb \
>>       sun7i-a20-olinuxino-micro.dtb \
>> diff --git a/arch/arm/boot/dts/sun7i-a20-mk808c.dts b/arch/arm/boot/dts/sun7i-a20-mk808c.dts
>> new file mode 100644
>> index 0000000..5722a03
>> --- /dev/null
>> +++ b/arch/arm/boot/dts/sun7i-a20-mk808c.dts
>> @@ -0,0 +1,146 @@
>> +/*
>> + * Copyright 2015 Marcus Cooper
>> + *
>> + * Marcus Cooper <codekipper@gmail.com>
>> + *
>> + * This file is dual-licensed: you can use it either under the terms
>> + * of the GPL or the X11 license, at your option. Note that this dual
>> + * licensing only applies to this file, and not this project as a
>> + * whole.
>> + *
>> + *  a) This file is free software; you can redistribute it and/or
>> + *     modify it under the terms of the GNU General Public License as
>> + *     published by the Free Software Foundation; either version 2 of the
>> + *     License, or (at your option) any later version.
>> + *
>> + *     This file is distributed in the hope that it will be useful,
>> + *     but WITHOUT ANY WARRANTY; without even the implied warranty of
>> + *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
>> + *     GNU General Public License for more details.
>> + *
>> + *     You should have received a copy of the GNU General Public
>> + *     License along with this file; if not, write to the Free
>> + *     Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
>> + *     MA 02110-1301 USA
>> + *
>> + * Or, alternatively,
>> + *
>> + *  b) Permission is hereby granted, free of charge, to any person
>> + *     obtaining a copy of this software and associated documentation
>> + *     files (the "Software"), to deal in the Software without
>> + *     restriction, including without limitation the rights to use,
>> + *     copy, modify, merge, publish, distribute, sublicense, and/or
>> + *     sell copies of the Software, and to permit persons to whom the
>> + *     Software is furnished to do so, subject to the following
>> + *     conditions:
>> + *
>> + *     The above copyright notice and this permission notice shall be
>> + *     included in all copies or substantial portions of the Software.
>> + *
>> + *     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
>> + *     EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
>> + *     OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
>> + *     NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
>> + *     HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
>> + *     WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
>> + *     FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
>> + *     OTHER DEALINGS IN THE SOFTWARE.
>> + */
>> +
>> +/dts-v1/;
>> +#include "sun7i-a20.dtsi"
>> +#include "sunxi-common-regulators.dtsi"
>> +
>> +#include <dt-bindings/gpio/gpio.h>
>> +#include <dt-bindings/interrupt-controller/irq.h>
>> +#include <dt-bindings/pinctrl/sun4i-a10.h>
>
> You don't seem to be using the pinctrl header.
>
I'll remove this....
>> +
>> +/ {
>> +     model = "mk808c";
>> +     compatible = "mk808c", "allwinner,sun7i-a20";
>
> the compatible must be of the format "vendor,device". Please add the
> vendor name.

Ahhh....I've searched high and low for a vendors name. I listed it as
unknown on the wiki page,
would 'odm' be considered valid?
CK
>
> Maxime
>
> --
> Maxime Ripard, Free Electrons
> Embedded Linux, Kernel and Android engineering
> http://free-electrons.com
Maxime Ripard March 4, 2015, 8:34 p.m. UTC | #3
On Tue, Mar 03, 2015 at 09:22:32PM +0100, Code Kipper wrote:
> >> +
> >> +/ {
> >> +     model = "mk808c";
> >> +     compatible = "mk808c", "allwinner,sun7i-a20";
> >
> > the compatible must be of the format "vendor,device". Please add the
> > vendor name.
> 
> Ahhh....I've searched high and low for a vendors name. I listed it as
> unknown on the wiki page,
> would 'odm' be considered valid?

Not really. Another mk808c device might very well be made by some
other odm.

Don't your device has any brand on the case or the PCB?

Maxime
Code Kipper March 7, 2015, 8:41 a.m. UTC | #4
On 4 March 2015 at 21:34, Maxime Ripard
<maxime.ripard@free-electrons.com> wrote:
> On Tue, Mar 03, 2015 at 09:22:32PM +0100, Code Kipper wrote:
>> >> +
>> >> +/ {
>> >> +     model = "mk808c";
>> >> +     compatible = "mk808c", "allwinner,sun7i-a20";
>> >
>> > the compatible must be of the format "vendor,device". Please add the
>> > vendor name.
>>
>> Ahhh....I've searched high and low for a vendors name. I listed it as
>> unknown on the wiki page,
>> would 'odm' be considered valid?
>
> Not really. Another mk808c device might very well be made by some
> other odm.
>
Hi Maxime,

I documented the device here at http://linux-sunxi.org/MK808C.

> Don't your device has any brand on the case or the PCB?

There is nothing on the PCB to reference a manufacturer, the actual packaging
and case are from the earlier MK808B and mention A9. There was only a
small sticker on the side to show that the contents was a MK808C.
I guess 'unknown' isn't a valid vendor name,
>
> Maxime
BR,
CK
>
> --
> Maxime Ripard, Free Electrons
> Embedded Linux, Kernel and Android engineering
> http://free-electrons.com
Maxime Ripard March 8, 2015, 5:47 p.m. UTC | #5
Hi,

On Sat, Mar 07, 2015 at 09:41:54AM +0100, Code Kipper wrote:
> > Don't your device has any brand on the case or the PCB?
> 
> There is nothing on the PCB to reference a manufacturer, the actual packaging
> and case are from the earlier MK808B and mention A9. There was only a
> small sticker on the side to show that the contents was a MK808C.
> I guess 'unknown' isn't a valid vendor name,

Not really.

I really don't know what's the policy to apply in such a case when we
have a device that has no identified vendor.

We need to give a vendor name, because the compatible is used to tell
two devices apart, in the case where we would have to apply quirks for
a particular devices.

And if we have two devices (say a Marvlell and an Allwinner one), with
the same name, and without any vendor, we're screwed.

Maybe falling back to the SoC vendor, in our case, would make sense?

Arnd? Rob? Mark? An opinion on this?

Thanks,
Maxime
Arnd Bergmann March 8, 2015, 9:18 p.m. UTC | #6
On Sunday 08 March 2015 18:47:21 Maxime Ripard wrote:
> 
> Not enough information to check signature validity.	Show Details
> Hi,
> 
> On Sat, Mar 07, 2015 at 09:41:54AM +0100, Code Kipper wrote:
> > > Don't your device has any brand on the case or the PCB?
> > 
> > There is nothing on the PCB to reference a manufacturer, the actual packaging
> > and case are from the earlier MK808B and mention A9. There was only a
> > small sticker on the side to show that the contents was a MK808C.
> > I guess 'unknown' isn't a valid vendor name,
> 
> Not really.
> 
> I really don't know what's the policy to apply in such a case when we
> have a device that has no identified vendor.
> 
> We need to give a vendor name, because the compatible is used to tell
> two devices apart, in the case where we would have to apply quirks for
> a particular devices.
> 
> And if we have two devices (say a Marvlell and an Allwinner one), with
> the same name, and without any vendor, we're screwed.
> 
> Maybe falling back to the SoC vendor, in our case, would make sense?
> 
> Arnd? Rob? Mark? An opinion on this?
> 

I don't really have a good idea. In this case the SoC vendor might
not be the worst choice, because it's likely to be very close to
some reference design they actually did.

Another possibility would be to use a string that refers to the
organization that does the upstream kernel support, but that's
harder for individuals that do not work for a company that wants
its name used that way.

	Arnd
Maxime Ripard March 9, 2015, 2:50 p.m. UTC | #7
On Sun, Mar 08, 2015 at 10:18:30PM +0100, Arnd Bergmann wrote:
> On Sunday 08 March 2015 18:47:21 Maxime Ripard wrote:
> > 
> > Not enough information to check signature validity.	Show Details
> > Hi,
> > 
> > On Sat, Mar 07, 2015 at 09:41:54AM +0100, Code Kipper wrote:
> > > > Don't your device has any brand on the case or the PCB?
> > > 
> > > There is nothing on the PCB to reference a manufacturer, the actual packaging
> > > and case are from the earlier MK808B and mention A9. There was only a
> > > small sticker on the side to show that the contents was a MK808C.
> > > I guess 'unknown' isn't a valid vendor name,
> > 
> > Not really.
> > 
> > I really don't know what's the policy to apply in such a case when we
> > have a device that has no identified vendor.
> > 
> > We need to give a vendor name, because the compatible is used to tell
> > two devices apart, in the case where we would have to apply quirks for
> > a particular devices.
> > 
> > And if we have two devices (say a Marvlell and an Allwinner one), with
> > the same name, and without any vendor, we're screwed.
> > 
> > Maybe falling back to the SoC vendor, in our case, would make sense?
> > 
> > Arnd? Rob? Mark? An opinion on this?
> > 
> 
> I don't really have a good idea. In this case the SoC vendor might
> not be the worst choice, because it's likely to be very close to
> some reference design they actually did.
> 
> Another possibility would be to use a string that refers to the
> organization that does the upstream kernel support, but that's
> harder for individuals that do not work for a company that wants
> its name used that way.

Yeah, I don't really think that would be applicable for individuals,
and would understand if people wouldn't like to follow such policy
(I'm not even sure I would).

At least, the SoC vendor name would be consistent, without being very
touchy.

Maxime
diff mbox

Patch

diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile
index 9544768..eae7706 100644
--- a/arch/arm/boot/dts/Makefile
+++ b/arch/arm/boot/dts/Makefile
@@ -542,6 +542,7 @@  dtb-$(CONFIG_MACH_SUN7I) += \
 	sun7i-a20-hummingbird.dtb \
 	sun7i-a20-i12-tvbox.dtb \
 	sun7i-a20-m3.dtb \
+	sun7i-a20-mk808c.dtb \
 	sun7i-a20-olinuxino-lime.dtb \
 	sun7i-a20-olinuxino-lime2.dtb \
 	sun7i-a20-olinuxino-micro.dtb \
diff --git a/arch/arm/boot/dts/sun7i-a20-mk808c.dts b/arch/arm/boot/dts/sun7i-a20-mk808c.dts
new file mode 100644
index 0000000..5722a03
--- /dev/null
+++ b/arch/arm/boot/dts/sun7i-a20-mk808c.dts
@@ -0,0 +1,146 @@ 
+/*
+ * Copyright 2015 Marcus Cooper
+ *
+ * Marcus Cooper <codekipper@gmail.com>
+ *
+ * This file is dual-licensed: you can use it either under the terms
+ * of the GPL or the X11 license, at your option. Note that this dual
+ * licensing only applies to this file, and not this project as a
+ * whole.
+ *
+ *  a) This file is free software; you can redistribute it and/or
+ *     modify it under the terms of the GNU General Public License as
+ *     published by the Free Software Foundation; either version 2 of the
+ *     License, or (at your option) any later version.
+ *
+ *     This file is distributed in the hope that it will be useful,
+ *     but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *     GNU General Public License for more details.
+ *
+ *     You should have received a copy of the GNU General Public
+ *     License along with this file; if not, write to the Free
+ *     Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+ *     MA 02110-1301 USA
+ *
+ * Or, alternatively,
+ *
+ *  b) Permission is hereby granted, free of charge, to any person
+ *     obtaining a copy of this software and associated documentation
+ *     files (the "Software"), to deal in the Software without
+ *     restriction, including without limitation the rights to use,
+ *     copy, modify, merge, publish, distribute, sublicense, and/or
+ *     sell copies of the Software, and to permit persons to whom the
+ *     Software is furnished to do so, subject to the following
+ *     conditions:
+ *
+ *     The above copyright notice and this permission notice shall be
+ *     included in all copies or substantial portions of the Software.
+ *
+ *     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ *     EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+ *     OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ *     NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+ *     HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+ *     WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ *     FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+ *     OTHER DEALINGS IN THE SOFTWARE.
+ */
+
+/dts-v1/;
+#include "sun7i-a20.dtsi"
+#include "sunxi-common-regulators.dtsi"
+
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/interrupt-controller/irq.h>
+#include <dt-bindings/pinctrl/sun4i-a10.h>
+
+/ {
+	model = "mk808c";
+	compatible = "mk808c", "allwinner,sun7i-a20";
+
+	aliases {
+		serial0 = &uart0;
+		serial1 = &uart2;
+	};
+
+};
+
+&ehci0 {
+	status = "okay";
+};
+
+&ehci1 {
+	status = "okay";
+};
+
+&i2c0 {
+	pinctrl-names = "default";
+	pinctrl-0 = <&i2c0_pins_a>;
+	status = "okay";
+
+	axp209: pmic@34 {
+		compatible = "x-powers,axp209";
+		reg = <0x34>;
+		interrupt-parent = <&nmi_intc>;
+		interrupts = <0 IRQ_TYPE_LEVEL_LOW>;
+		interrupt-controller;
+		#interrupt-cells = <1>;
+	};
+};
+
+&i2c1 {
+	pinctrl-names = "default";
+	pinctrl-0 = <&i2c1_pins_a>;
+	status = "okay";
+};
+
+&i2c2 {
+	pinctrl-names = "default";
+	pinctrl-0 = <&i2c2_pins_a>;
+	status = "okay";
+};
+
+&mmc0 {
+	pinctrl-names = "default";
+	pinctrl-0 = <&mmc0_pins_a>, <&mmc0_cd_pin_reference_design>;
+	vmmc-supply = <&reg_vcc3v0>;
+	bus-width = <4>;
+	cd-gpios = <&pio 7 1 GPIO_ACTIVE_HIGH>; /* PH1 */
+	cd-inverted;
+	status = "okay";
+};
+
+&ohci0 {
+	status = "okay";
+};
+
+&ohci1 {
+	status = "okay";
+};
+
+&reg_usb1_vbus {
+	status = "okay";
+};
+
+&reg_usb2_vbus {
+	status = "okay";
+};
+
+&uart0 {
+	pinctrl-names = "default";
+	pinctrl-0 = <&uart0_pins_a>;
+	status = "okay";
+};
+
+&uart2 {
+	pinctrl-names = "default";
+	pinctrl-0 = <&uart2_pins_a>;
+	status = "okay";
+};
+
+&usbphy {
+	usb1_vbus-supply = <&reg_usb1_vbus>;
+	usb2_vbus-supply = <&reg_usb2_vbus>;
+	status = "okay";
+};