mbox

[GIT,PULL] SoCFPGA updates for v4.2

Message ID 1431371529-22593-2-git-send-email-dinguyen@opensource.altera.com
State New
Headers show

Pull-request

git://git.kernel.org:pub/scm/linux/kernel/git/dinguyen/linux.git tags/socfpga_updates_for_v4.2

Message

Dinh Nguyen May 11, 2015, 7:12 p.m. UTC
Hi Arnd, Kevin and Olof,

Please consider pulling in these patches for v4.2.

Thanks,
Dinh

The following changes since commit 5ebe6afaf0057ac3eaeb98defd5456894b446d22:

  Linux 4.1-rc2 (2015-05-03 19:22:23 -0700)

are available in the git repository at:

  git://git.kernel.org:pub/scm/linux/kernel/git/dinguyen/linux.git tags/socfpga_updates_for_v4.2

for you to fetch changes up to 65ce7a37ec23c9e7878bd77e2f75b1eb9d8926e3:

  ARM: socfpga: remove the need to map uart_io_desc (2015-05-11 13:59:53 -0500)

----------------------------------------------------------------
SoCFPGA updates for v4.2
- Add big endian support
- Add earlyprintk support on UART1 that is used on Arria10
- Remove the need to map uart_io_desc

----------------------------------------------------------------
Ben Dooks (3):
      ARM: debug: fix big endian operation for 8250 word mode
      ARM: socfpga: enable big endian for secondary core(s)
      ARM: socfpga: support big endian for socfpga

Dinh Nguyen (2):
      ARM: socfpga: Add support for UART1 debug uart for earlyprintk
      ARM: socfpga: remove the need to map uart_io_desc

 arch/arm/Kconfig.debug          | 26 +++++++++++++++++++-------
 arch/arm/include/debug/8250.S   |  3 +++
 arch/arm/mach-socfpga/Kconfig   |  1 +
 arch/arm/mach-socfpga/headsmp.S |  5 ++++-
 arch/arm/mach-socfpga/socfpga.c |  9 ---------
 5 files changed, 27 insertions(+), 17 deletions(-)

Comments

Arnd Bergmann May 12, 2015, 8:20 p.m. UTC | #1
On Monday 11 May 2015 14:12:09 dinguyen@opensource.altera.com wrote:
> SoCFPGA updates for v4.2
> - Add big endian support
> - Add earlyprintk support on UART1 that is used on Arria10
> - Remove the need to map uart_io_desc
> 

The patches look almost ok, but please clarify a minor issue:

 static void __init socfpga_map_io(void)
 {
        socfpga_scu_map_io();
-       iotable_init(&uart_io_desc, 1);
-       early_printk("Early printk initialized\n");
 }


You have a map_io() function here, which means that the debug_ll_io_init()
function is not called. How does the debug_ll mapping get created then?

If it's not, I think the best solution is to remove the socfpga_map_io()
function entirely, and turn socfpga_scu_base_addr into a local variable
in arch/arm/mach-socfpga/platsmp.c that gets set using of_iomap().

	Arn
Arnd Bergmann May 12, 2015, 8:25 p.m. UTC | #2
On Tuesday 12 May 2015 22:20:53 Arnd Bergmann wrote:
> On Monday 11 May 2015 14:12:09 dinguyen@opensource.altera.com wrote:
> > SoCFPGA updates for v4.2
> > - Add big endian support
> > - Add earlyprintk support on UART1 that is used on Arria10
> > - Remove the need to map uart_io_desc
> > 
> 
> The patches look almost ok, but please clarify a minor issue:
> 
>  static void __init socfpga_map_io(void)
>  {
>         socfpga_scu_map_io();
> -       iotable_init(&uart_io_desc, 1);
> -       early_printk("Early printk initialized\n");
>  }
> 
> 
> You have a map_io() function here, which means that the debug_ll_io_init()
> function is not called. How does the debug_ll mapping get created then?
> 
> If it's not, I think the best solution is to remove the socfpga_map_io()
> function entirely, and turn socfpga_scu_base_addr into a local variable
> in arch/arm/mach-socfpga/platsmp.c that gets set using of_iomap().
> 


One more thing: the socfpga board in Olof's boot farm fails to boot
with multi_v7_defconfig, see
http://arm-soc.lixom.net/bootlogs/arm-soc/v4.1-rc3-165-g3d58f43/socfpga-arm-multi_v7_defconfig.html

Could you have a look and see if you can reproduce that probem and send
a fix if possible? It seems to work fine with socfpga_defconfig, so maybe
it's just some Kconfig option we need to enable?

	Arnd
Dinh Nguyen May 12, 2015, 8:26 p.m. UTC | #3
On 05/12/2015 03:20 PM, Arnd Bergmann wrote:
> On Monday 11 May 2015 14:12:09 dinguyen@opensource.altera.com wrote:
>> SoCFPGA updates for v4.2
>> - Add big endian support
>> - Add earlyprintk support on UART1 that is used on Arria10
>> - Remove the need to map uart_io_desc
>>
> 
> The patches look almost ok, but please clarify a minor issue:
> 
>  static void __init socfpga_map_io(void)
>  {
>         socfpga_scu_map_io();
> -       iotable_init(&uart_io_desc, 1);
> -       early_printk("Early printk initialized\n");
>  }
> 
> 
> You have a map_io() function here, which means that the debug_ll_io_init()
> function is not called. How does the debug_ll mapping get created then?
> 
> If it's not, I think the best solution is to remove the socfpga_map_io()
> function entirely, and turn socfpga_scu_base_addr into a local variable
> in arch/arm/mach-socfpga/platsmp.c that gets set using of_iomap().
> 

Yes, you're right! Thanks for catching that. Will send a patch for this.

Dinh
Dinh Nguyen May 12, 2015, 10:05 p.m. UTC | #4
On 05/12/2015 03:25 PM, Arnd Bergmann wrote:
> On Tuesday 12 May 2015 22:20:53 Arnd Bergmann wrote:
>> On Monday 11 May 2015 14:12:09 dinguyen@opensource.altera.com wrote:
>>> SoCFPGA updates for v4.2
>>> - Add big endian support
>>> - Add earlyprintk support on UART1 that is used on Arria10
>>> - Remove the need to map uart_io_desc
>>>
>>
>> The patches look almost ok, but please clarify a minor issue:
>>
>>  static void __init socfpga_map_io(void)
>>  {
>>         socfpga_scu_map_io();
>> -       iotable_init(&uart_io_desc, 1);
>> -       early_printk("Early printk initialized\n");
>>  }
>>
>>
>> You have a map_io() function here, which means that the debug_ll_io_init()
>> function is not called. How does the debug_ll mapping get created then?
>>
>> If it's not, I think the best solution is to remove the socfpga_map_io()
>> function entirely, and turn socfpga_scu_base_addr into a local variable
>> in arch/arm/mach-socfpga/platsmp.c that gets set using of_iomap().
>>
> 
> 
> One more thing: the socfpga board in Olof's boot farm fails to boot
> with multi_v7_defconfig, see
> http://arm-soc.lixom.net/bootlogs/arm-soc/v4.1-rc3-165-g3d58f43/socfpga-arm-multi_v7_defconfig.html
> 
> Could you have a look and see if you can reproduce that probem and send
> a fix if possible? It seems to work fine with socfpga_defconfig, so maybe
> it's just some Kconfig option we need to enable?
> 

Yes, I've started debugging this, but got sidetracked. The issue is that
the multi_v7_defconfig is enabling both CONFIG_PL330_DMA and CONFIG_PM.
There was a patch recently that mapped the UARTs on the platform to it's
proper DMA channel:

commit 78c03c7af897 ARM: socfpga: fix uart DMA binding error

So after the kernel has booted, and user space takes over, it tries to
open up the debug uart using DMA. But it appears the DMA has been
suspended and did not resume, thus the clock to the PL330 DMA is turned
off, and the UART hangs.

In case, you're curious here's a link to an incorrect patch that I sent
to turn on the PL330's clock:

http://www.spinics.net/lists/dmaengine/msg04409.html

I'll try to get back on this asap.

Thanks,
Dinh