uart issue on Freescale Sabre i.MX6 AI board

cancel
Showing results for 
Search instead for 
Did you mean: 

uart issue on Freescale Sabre i.MX6 AI board

2,192 Views
Contributor I

Hello all,

We are porting Linux Kernel 3.11 on Freescale Sabre iMX6 AI Board (Part no. MCIMX6QAICPU1).The linux kernel 3.11 has been taken from kernel.org. Most of the architecture and platform/Board support have been added/ported to this kernel (taking freescale Linux 3.0.35 as a reference i.e.L3.0.35_4.1.0_ER_SOURCE_BSP).

We are unable to get the kernel console and here are the logs,we have also added several prink to debug.Writing to UCR2 (Uart Control register2) fails.

Any help would be appreciated. We are using imx6_defconfig

Kernel Logs :

Serial: 8250/16550 driver, 4 ports, IRQ sharing disabled

---> uart_add_one_port

--> uart_add_one_port, uart_configure_port()

--> uart_configure_port

--> uart_add_one_port, tty_port_register_device_attr()

<--- uart_add_one_port

---> uart_add_one_port

--> uart_add_one_port, uart_configure_port()

--> uart_configure_port

--> uart_add_one_port, tty_port_register_device_attr()

<--- uart_add_one_port

---> uart_add_one_port

--> uart_add_one_port, uart_configure_port()

--> uart_configure_port

--> uart_add_one_port, tty_port_register_device_attr()

<--- uart_add_one_port

---> uart_add_one_port

--> uart_add_one_port, uart_configure_port()

--> uart_configure_port

--> uart_add_one_port, tty_port_register_device_attr()

<--- uart_add_one_port

====>> Serial: IMX driver

===> serial_imx_probe()

serial_imx_probe() -> platform_get_resource()

serial_imx_probe() -> devm_ioremap()

imx-uart.1 - base (0xf41e8000), size = 4096 (0x1000)

serial_imx_probe() -> devm_pinctrl_get_select_default()

serial_imx_probe() -> devm_clk_get()

serial_imx_probe() -> devm_clk_get()

---> uart_add_one_port

--> uart_add_one_port, uart_configure_port()

--> uart_configure_port

uart_configure_port() -> port->ops->config_port()

uart_configure_port() -> uart_report_port()

imx-uart.1: ttymxc1 at MMIO 0x21e8000 (irq = 59) is a IMX

uart_configure_port() -> uart_change_pm()

uart_configure_port() -> port->ops->set_mctrl()

uart_configure_port() -> register_console()

--> register_console

_braille_register_console()

newcon->setup()

--> imx_console_setup

return @ ENODEV

after newcon->setup()

uart_configure_port() -> uart_console()

uart_configure_port() -> uart_change_pm()

<-- uart_configure_port

--> uart_add_one_port, tty_port_register_device_attr()

<--- uart_add_one_port

serial_imx_probe() -> uart_add_one_port() , ret = 0

serial_imx_probe() -> platform_set_drvdata()

serial_imx_probe() -> uart_console()

===> serial_imx_probe()

serial_imx_probe() -> platform_get_resource()

serial_imx_probe() -> devm_ioremap()

imx-uart.2 - base (0xf41ec000), size = 4096 (0x1000)

serial_imx_probe() -> devm_pinctrl_get_select_default()

serial_imx_probe() -> devm_clk_get()

serial_imx_probe() -> devm_clk_get()

---> uart_add_one_port

--> uart_add_one_port, uart_configure_port()

--> uart_configure_port

uart_configure_port() -> port->ops->config_port()

uart_configure_port() -> uart_report_port()

imx-uart.2: ttymxc2 at MMIO 0x21ec000 (irq = 60) is a IMX

uart_configure_port() -> uart_change_pm()

uart_configure_port() -> port->ops->set_mctrl()

uart_configure_port() -> register_console()

--> register_console

_braille_register_console()

newcon->setup()

--> imx_console_setup

return @ ENODEV

after newcon->setup()

uart_configure_port() -> uart_console()

uart_configure_port() -> uart_change_pm()

<-- uart_configure_port

--> uart_add_one_port, tty_port_register_device_attr()

<--- uart_add_one_port

serial_imx_probe() -> uart_add_one_port() , ret = 0

serial_imx_probe() -> platform_set_drvdata()

serial_imx_probe() -> uart_console()

===> serial_imx_probe()

serial_imx_probe() -> platform_get_resource()

serial_imx_probe() -> devm_ioremap()

imx-uart.3 - base (0xf41f0000), size = 4096 (0x1000)

serial_imx_probe() -> devm_pinctrl_get_select_default()

serial_imx_probe() -> devm_clk_get()

serial_imx_probe() -> devm_clk_get()

---> uart_add_one_port

--> uart_add_one_port, uart_configure_port()

--> uart_configure_port

uart_configure_port() -> port->ops->config_port()

uart_configure_port() -> uart_report_port()

imx-uart.3: ttymxc3 at MMIO 0x21f0000 (irq = 61) is a IMX

uart_configure_port() -> uart_change_pm()

uart_configure_port() -> port->ops->set_mctrl()

uart_configure_port() -> register_console()

--> register_console

_braille_register_console()

newcon->setup()

--> imx_console_setup

uart_parse_options()

imx_setup_ufcr()

uart_set_options()

--> uart_set_options

===>lockdep_set_class()

===>1111lockdep_set_class()

===>coming out of switch lockdep_set_class()

===>port->ops->set_termios()

++++++> imx_set_termios

UCR1 (0xf41f0080) = 0x1

UCR2 = 0x4027

val = 0x4021, off = 0xf41f0084

Thank you

Labels (3)
0 Kudos
6 Replies

46 Views
NXP Employee
NXP Employee

This should work out of the box. There is no board file on recent kernels for mx6.

Just use kernel 3.14 instead and make sure you use device tree:

make imx6q-sabreauto.dtb

Build the kernel and then boot.

Regards,

Fabio Estevam

0 Kudos

46 Views
Contributor I

@Fabio - Thank you.

Just to make you more understand of what are we doing,

1. We are porting Android Kitkat to iMX6 Sabre AI Board. So we took freesacale kernel 3.0.35(.L3.0.35_4.1.0_ER_SOURCE_BSP) and we merged the plat-mxc and mach-mx6 in mainline kernel 3.11 + some more changes and we read some where in forums that for kitkat we need to have kernel3.8 and above ?

2. Did you mean Mainline Kernel 3.14 from kernel.org ? I have downloaded mainline kernel 3.14 and i cannot see plat-mxc and mach-mx6 in arch/arm directory.

Any help would be appreciated

Br

VK

0 Kudos

46 Views
NXP Employee
NXP Employee

Ok, I didn't know your purpose was to run Android.

I was commenting about kernel 3.14 from kernel.org. In this version there is no plat-mxc and mach-mx6 directories as it is based on device tree.

0 Kudos

46 Views
Contributor I

Thank you Fabio,

as 3.14 is based on device tree, my question is how will 3.14 boot on sabreAI board without platform and machine code ?

Br

VK

0 Kudos

46 Views
NXP Employee
NXP Employee

You may think that the dts files (arch/arm/boot/dts/) are a replacement for the old board files.

Back to your original purpose, which is to run Kit Kat on mx6: can't you wait for the FSL release?

0 Kudos

46 Views
Contributor I

Thanks Fabio. We plan to make use kernel 3.11 on Kitkat. I dont know when will freescale release the official kernel for Kitkat. At present we find Kernel 3.0.35 which runs on JellyBean.

0 Kudos