diff mbox

[0/6] Add i.MX6 (Single/Dual/Quad) support

Message ID 56AA6A8C.6030906@tribudubois.net (mailing list archive)
State New, archived
Headers show

Commit Message

Jean-Christophe Dubois Jan. 28, 2016, 7:22 p.m. UTC
Hello Peter,

Le 28/01/2016 15:57, Peter Maydell a écrit :
> On 26 January 2016 at 21:44, Jean-Christophe Dubois <jcd@tribudubois.net> wrote:
>> This patch series adds support for the Freescale i.MX6 processor.
>>
>> For now we only support the following devices:
>> * up to 4 Cortex A9 cores
>> * A9 MPCORE (SCU, GIC, TWD)
>> * 5 i.MX UARTs
>> * 2 EPIT timers
>> * 1 GPT timer
>> * 7 GPIO controllers
>> * 6 SDHC controllers
>> * 1 CCM device
>> * 1 SRC device
>> * various ROM/RAM areas.
>>
>> This also adds the sabrelite board as a an actual platform for i.MX6.
>>
>> This series was tested by booting a 4.4 linux kernel (using the
>> imx_v6_v7_defconfig file as kernel configuration).
>>
>> Note: In order for Linux to work I had to customize a bit the
>> arch/arm/boot/dts/imx6qdl-sabrelite.dtsi device tree file.
> What changes did you have to make to the dt, and why?

Please find attached the diff file for the linux imx6qdl-sabrelite.dtsi 
file.

Basically, it boils down to the following:

  * Sabrelite uses uart2 for console but on qemu, this is uart1 that is
    wired to the default stdout. Consequently, I changed stdout-path in
    "chosen" to uart1.
  * For now i.MX6 SOC code does not emulate SPI controller. During the
    boot Linux was getting stuck trying to access a SPI device that is
    supposed to be there. Therefore I disabled the SPI controller in the
    device tree.
  * The sabrelite is supposed to have a bunch of push buttons (home,
    power, back, vol up, vol down) wired to various GPIOs. I guess these
    buttons might have pull up or pull down resistors on the real
    hardware but obviously on qemu we have no such things. As a results
    the GPIOs were triggering a lot of interrupts for nothing. So I
    commented out the GPIO sections were the buttons were defined.

Regards

JC

>
> thanks
> -- PMM
>

Comments

Peter Maydell Feb. 2, 2016, 5:01 p.m. UTC | #1
On 28 January 2016 at 19:22, Jean-Christophe DUBOIS <jcd@tribudubois.net> wrote:
> Sabrelite uses uart2 for console but on qemu, this is uart1 that is wired to
> the default stdout. Consequently, I changed stdout-path in "chosen" to
> uart1.

This I find a bit awkward: we'd like to get eventually to the point
where you can run the stock device tree unedited. The other items
on your list are just "we don't emulate something yet", so the path
forward is to (eventually) emulate the missing things. But it's not
clear to me what we need to do to be able to stop editing stdout-path
in the future.

Perhaps the answer is just to use QEMU command line arguments to make
stdout be the uart2 rather than uart1?

> For now i.MX6 SOC code does not emulate SPI controller. During the boot
> Linux was getting stuck trying to access a SPI device that is supposed to be
> there. Therefore I disabled the SPI controller in the device tree.

This is OK for now, though I guess it means the SPI controller is
worth emulating to at least some extent.

> The sabrelite is supposed to have a bunch of push buttons (home, power,
> back, vol up, vol down) wired to various GPIOs. I guess these buttons might
> have pull up or pull down resistors on the real hardware but obviously on
> qemu we have no such things. As a results the GPIOs were triggering a lot of
> interrupts for nothing. So I commented out the GPIO sections were the
> buttons were defined.

This is OK for now, though it would be nice to wire all the GPIOs to 0 or
something if that helps avoid the problem without editing the DT.

thanks
--- PMM
Jean-Christophe Dubois Feb. 7, 2016, 6:44 p.m. UTC | #2
Le 02/02/2016 18:01, Peter Maydell a écrit :
> On 28 January 2016 at 19:22, Jean-Christophe DUBOIS <jcd@tribudubois.net> wrote:
>> Sabrelite uses uart2 for console but on qemu, this is uart1 that is wired to
>> the default stdout. Consequently, I changed stdout-path in "chosen" to
>> uart1.
> This I find a bit awkward: we'd like to get eventually to the point
> where you can run the stock device tree unedited. The other items
> on your list are just "we don't emulate something yet", so the path
> forward is to (eventually) emulate the missing things. But it's not
> clear to me what we need to do to be able to stop editing stdout-path
> in the future.
>
> Perhaps the answer is just to use QEMU command line arguments to make
> stdout be the uart2 rather than uart1?

I'll send a new version where the platform (sabrelite) can chose 
(through properties) which uart of the SOC (i.MX6) it wants to use as 
default output.

>
>> For now i.MX6 SOC code does not emulate SPI controller. During the boot
>> Linux was getting stuck trying to access a SPI device that is supposed to be
>> there. Therefore I disabled the SPI controller in the device tree.
> This is OK for now, though I guess it means the SPI controller is
> worth emulating to at least some extent.

I'll see what I can do next.

>
>> The sabrelite is supposed to have a bunch of push buttons (home, power,
>> back, vol up, vol down) wired to various GPIOs. I guess these buttons might
>> have pull up or pull down resistors on the real hardware but obviously on
>> qemu we have no such things. As a results the GPIOs were triggering a lot of
>> interrupts for nothing. So I commented out the GPIO sections were the
>> buttons were defined.
> This is OK for now, though it would be nice to wire all the GPIOs to 0 or
> something if that helps avoid the problem without editing the DT.

Ditto.

>
> thanks
> --- PMM
>
diff mbox

Patch

diff --git a/arch/arm/boot/dts/imx6qdl-sabrelite.dtsi b/arch/arm/boot/dts/imx6qdl-sabrelite.dtsi
index 1a69a34..760020e 100644
--- a/arch/arm/boot/dts/imx6qdl-sabrelite.dtsi
+++ b/arch/arm/boot/dts/imx6qdl-sabrelite.dtsi
@@ -44,7 +44,8 @@ 
 
 / {
 	chosen {
-		stdout-path = &uart2;
+                bootargs = "console=ttymxc0,115200";
+		stdout-path = &uart1;
 	};
 
 	memory {
@@ -96,6 +97,7 @@ 
 		};
 	};
 
+/*
 	gpio-keys {
 		compatible = "gpio-keys";
 		pinctrl-names = "default";
@@ -138,6 +140,7 @@ 
 			linux,code = <KEY_VOLUMEDOWN>;
 		};
 	};
+*/
 
 	sound {
 		compatible = "fsl,imx6q-sabrelite-sgtl5000",
@@ -245,7 +248,7 @@ 
 	cs-gpios = <&gpio3 19 0>;
 	pinctrl-names = "default";
 	pinctrl-0 = <&pinctrl_ecspi1>;
-	status = "okay";
+	/* status = "okay"; */
 
 	flash: m25p80@0 {
 		compatible = "sst,sst25vf016b", "jedec,spi-nor";