From: Timur Tabi <timur@freescale.com>
To: Scott Wood <scottwood@freescale.com>
Cc: linuxppc-dev@ozlabs.org
Subject: Re: [PATCH] powerpc/p5040ds: Add support for P5040DS board
Date: Tue, 24 Jul 2012 13:09:07 -0500 [thread overview]
Message-ID: <500EE4C3.40707@freescale.com> (raw)
In-Reply-To: <500EE1BB.6060104@freescale.com>
Scott Wood wrote:
> On 07/24/2012 11:42 AM, Timur Tabi wrote:
>> +/* controller at 0x200000 */
>> +&pci0 {
>> + compatible = "fsl,p5040-pcie", "fsl,qoriq-pcie-v2.2";
>
> p5040 has PCIe v2.4.
Then it's broken on the SDK as well.
> Note that there is a version register, so perhaps we should drop the
> version number from the compatible (and mention the version register in
> the binding).
>
> Might want to double check the other version numbers in this file too.
>
>> + bus-range = <0x0 0xff>;
>
> Do we really need this?
>
>> + clock-frequency = <33333333>;
>
> I doubt this is accurate.
Almost all of this is copy-paste from the P5020, so if it's broken here,
it's either broken on the P5020 or also broken on the SDK.
>> + iommu@20000 {
>> + compatible = "fsl,pamu-v1.0", "fsl,pamu";
>> + reg = <0x20000 0x5000>;
>> + interrupts = <
>> + 24 2 0 0
>> + 16 2 1 30>;
>> + };
>
> It's PAMU v1.1, and there's a version register.
Also broken in the SDK. :-(
>> +/include/ "qoriq-mpic.dtsi"
>> +
>> + guts: global-utilities@e0000 {
>> + compatible = "fsl,qoriq-device-config-1.0";
>> + reg = <0xe0000 0xe00>;
>> + fsl,has-rstcr;
>> + #sleep-cells = <1>;
>> + fsl,liodn-bits = <12>;
>> + };
>> +
>> + pins: global-utilities@e0e00 {
>> + compatible = "fsl,qoriq-pin-control-1.0";
>> + reg = <0xe0e00 0x200>;
>> + #sleep-cells = <2>;
>> + };
>
> Please add fsl,p5040-device-config and fsl,p5040-pin-control. If you
> want to leave the "1.0" thing in (which was a mistake since this stuff
> doesn't seem to be versioned in any public way), double check that it's
> 100% backwards compatible with p4080.
Ok.
>> + rcpm: global-utilities@e2000 {
>> + compatible = "fsl,qoriq-rcpm-1.0";
>> + reg = <0xe2000 0x1000>;
>> + #sleep-cells = <1>;
>> + };
>
> Likewise.
>
>> +/dts-v1/;
>> +/ {
>> + compatible = "fsl,P5040";
>
> When would we not override this?
I don't understand.
>> + spi@110000 {
>> + flash@0 {
>> + #address-cells = <1>;
>> + #size-cells = <1>;
>> + compatible = "spansion,s25sl12801";
>> + reg = <0>;
>> + spi-max-frequency = <40000000>; /* input clock */
>> + partition@u-boot {
>> + label = "u-boot";
>> + reg = <0x00000000 0x00100000>;
>> + read-only;
>> + };
>> + partition@kernel {
>> + label = "kernel";
>> + reg = <0x00100000 0x00500000>;
>> + read-only;
>> + };
>> + partition@dtb {
>> + label = "dtb";
>> + reg = <0x00600000 0x00100000>;
>> + read-only;
>> + };
>> + partition@fs {
>> + label = "file system";
>> + reg = <0x00700000 0x00900000>;
>> + };
>
> Why are kernel/dtb read only?
Because that's how it is on the P5020!
I'm surprised the P5020 DTS files are so broken.
>> + flash@0,0 {
>> + compatible = "cfi-flash";
>> + reg = <0 0 0x08000000>;
>> + bank-width = <2>;
>> + device-width = <2>;
>> + };
>
> No partitions on NOR flash?
I'll check.
>> + partition@2000000 {
>> + label = "NAND Root File System";
>> + reg = <0x02000000 0x10000000>;
>> + };
>> +
>> + partition@12000000 {
>> + label = "NAND Compressed RFS Image";
>> + reg = <0x12000000 0x08000000>;
>> + };
>
> Why do we need both of these? Why not one big partition for whichever
> type of RFS you have?
Beats me. Like I said, I just copied them over. I know that's bad, but
the source files have been around for quite some time, so I'm surprised
they're still all broken.
>> diff --git a/arch/powerpc/platforms/85xx/p5040_ds.c b/arch/powerpc/platforms/85xx/p5040_ds.c
>> new file mode 100644
>> index 0000000..ca3358f
>> --- /dev/null
>> +++ b/arch/powerpc/platforms/85xx/p5040_ds.c
>> @@ -0,0 +1,96 @@
>> +/*
>> + * P5040 DS Setup
>> + *
>> + * Copyright 2009-2010 Freescale Semiconductor Inc.
>> + *
>> + * This program 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.
>> + */
>> +
>> +#include <linux/kernel.h>
>> +#include <linux/pci.h>
>> +#include <linux/kdev_t.h>
>> +#include <linux/delay.h>
>> +#include <linux/interrupt.h>
>> +#include <linux/phy.h>
>> +
>> +#include <asm/time.h>
>> +#include <asm/machdep.h>
>> +#include <asm/pci-bridge.h>
>> +#include <mm/mmu_decl.h>
>> +#include <asm/prom.h>
>> +#include <asm/udbg.h>
>> +#include <asm/mpic.h>
>> +
>> +#include <linux/of_platform.h>
>> +#include <sysdev/fsl_soc.h>
>> +#include <sysdev/fsl_pci.h>
>> +#include <asm/ehv_pic.h>
>> +
>> +#include "corenet_ds.h"
>
> Do you really need all these? kdev_t? phy?
Probably not.
>> +
>> +/*
>> + * Called very early, device-tree isn't unflattened
>> + */
>> +static int __init p5040_ds_probe(void)
>> +{
>> + unsigned long root = of_get_flat_dt_root();
>> +#ifdef CONFIG_SMP
>> + extern struct smp_ops_t smp_85xx_ops;
>> +#endif
>> +
>> + if (of_flat_dt_is_compatible(root, "fsl,P5040DS"))
>> + return 1;
>> +
>> + /* Check if we're running under the Freescale hypervisor */
>> + if (of_flat_dt_is_compatible(root, "fsl,P5040DS-hv")) {
>> + ppc_md.init_IRQ = ehv_pic_init;
>> + ppc_md.get_irq = ehv_pic_get_irq;
>> + ppc_md.restart = fsl_hv_restart;
>> + ppc_md.power_off = fsl_hv_halt;
>> + ppc_md.halt = fsl_hv_halt;
>> +#ifdef CONFIG_SMP
>> + /*
>> + * Disable the timebase sync operations because we can't write
>> + * to the timebase registers under the hypervisor.
>> + */
>> + smp_85xx_ops.give_timebase = NULL;
>> + smp_85xx_ops.take_timebase = NULL;
>> +#endif
>
> Why are they getting set in the first place?
This is how the structure is defined in smp.c:
struct smp_ops_t smp_85xx_ops = {
.kick_cpu = smp_85xx_kick_cpu,
#ifdef CONFIG_KEXEC
.give_timebase = smp_generic_give_timebase,
.take_timebase = smp_generic_take_timebase,
#endif
};
This code has not changed in years. I'm not sure what you think is wrong
with it.
> While you're at it, you might want to look into converting corenet_ds to
> the new PCI init code.
Well, I just want to get this out the door.
>
> -Scott
>
--
Timur Tabi
Linux kernel developer at Freescale
next prev parent reply other threads:[~2012-07-24 18:10 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-07-24 16:42 [PATCH] powerpc/p5040ds: Add support for P5040DS board Timur Tabi
2012-07-24 17:56 ` Scott Wood
2012-07-24 18:09 ` Timur Tabi [this message]
2012-07-24 18:32 ` Scott Wood
2012-07-24 18:55 ` Timur Tabi
2012-07-24 20:42 ` Scott Wood
2012-07-25 2:55 ` Zang Roy-R61911
2012-07-24 19:40 ` Timur Tabi
2012-07-24 20:16 ` Timur Tabi
2012-07-24 20:45 ` Timur Tabi
2012-07-24 21:19 ` Timur Tabi
2012-07-24 21:31 ` Scott Wood
2012-07-24 21:36 ` Timur Tabi
2012-07-24 21:42 ` Scott Wood
2012-07-24 21:43 ` Timur Tabi
2012-07-24 21:45 ` Scott Wood
2012-07-24 21:47 ` Timur Tabi
2012-07-24 21:54 ` Scott Wood
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=500EE4C3.40707@freescale.com \
--to=timur@freescale.com \
--cc=linuxppc-dev@ozlabs.org \
--cc=scottwood@freescale.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).