qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: David Gibson <david@gibson.dropbear.id.au>
To: Guenter Roeck <linux@roeck-us.net>
Cc: Alexander Graf <agraf@suse.de>,
	qemu-ppc@nongnu.org, qemu-devel@nongnu.org,
	BALATON Zoltan <balaton@eik.bme.hu>
Subject: Re: [Qemu-devel] [PATCH v4] sam460ex: Fix sam460ex device tree when booting the Linux kernel
Date: Sun, 24 Jun 2018 20:12:56 +1000	[thread overview]
Message-ID: <20180624101256.GA2258@umbus.fritz.box> (raw)
In-Reply-To: <1529788685-31687-1-git-send-email-linux@roeck-us.net>

[-- Attachment #1: Type: text/plain, Size: 3640 bytes --]

On Sat, Jun 23, 2018 at 02:18:05PM -0700, Guenter Roeck wrote:
> sam460ex (or at least this emulation) does not support the "ibm,cpm" power
> management. As a result, Linux crashes when trying to access it. Remove
> its device tree node. Also, if/when we boot the Linux kernel directly,
> serial port clock frequencies in the device tree file will be unset, and
> serial port initialization will fail. Add valid frequency values to
> the serial ports to be able to use it. Also set valid values for the other
> clock nodes otherwise set by u-boot.
> 
> Signed-off-by: Guenter Roeck <linux@roeck-us.net>

Applied to ppc-for-3.0, thanks.

> ---
> v4: Use correct UART clock.
> v3: Fix style problems (ERROR: braces {} are necessary for all arms ...).
>     Use defines for clock frequencies.
>     Use clock frequencies as reported by u-boot in real system.
>     Use more specific prefix in subject.
>     Fix typos in description.
> v2: Initialize all serial nodes to match u-boot behavior more closely.
>     Use direct fdt API functions and ignore errors when clearing out
>     /cpm and for setting the serial port clocks.
> 
>  hw/ppc/sam460ex.c | 28 ++++++++++++++++++++++++++++
>  1 file changed, 28 insertions(+)
> 
> diff --git a/hw/ppc/sam460ex.c b/hw/ppc/sam460ex.c
> index bdc53d2..33ea518 100644
> --- a/hw/ppc/sam460ex.c
> +++ b/hw/ppc/sam460ex.c
> @@ -37,6 +37,8 @@
>  #include "hw/i2c/smbus.h"
>  #include "hw/usb/hcd-ehci.h"
>  
> +#include <libfdt.h>
> +
>  #define BINARY_DEVICE_TREE_FILE "canyonlands.dtb"
>  #define UBOOT_FILENAME "u-boot-sam460-20100605.bin"
>  /* to extract the official U-Boot bin from the updater: */
> @@ -67,6 +69,10 @@
>  */
>  
>  #define CPU_FREQ 1150000000
> +#define PLB_FREQ 230000000
> +#define OPB_FREQ 115000000
> +#define EBC_FREQ 115000000
> +#define UART_FREQ 11059200
>  #define SDRAM_NR_BANKS 4
>  
>  /* FIXME: See u-boot.git 8ac41e, also fix in ppc440_uc.c */
> @@ -255,6 +261,7 @@ static int sam460ex_load_device_tree(hwaddr addr,
>      void *fdt;
>      uint32_t tb_freq = CPU_FREQ;
>      uint32_t clock_freq = CPU_FREQ;
> +    int offset;
>  
>      filename = qemu_find_file(QEMU_FILE_TYPE_BIOS, BINARY_DEVICE_TREE_FILE);
>      if (!filename) {
> @@ -308,6 +315,27 @@ static int sam460ex_load_device_tree(hwaddr addr,
>      qemu_fdt_setprop_cell(fdt, "/cpus/cpu@0", "timebase-frequency",
>                                tb_freq);
>  
> +    /* Remove cpm node if it exists (it is not emulated) */
> +    offset = fdt_path_offset(fdt, "/cpm");
> +    if (offset >= 0) {
> +        fdt_nop_node(fdt, offset);
> +    }
> +
> +    /* set serial port clocks */
> +    offset = fdt_node_offset_by_compatible(fdt, -1, "ns16550");
> +    while (offset >= 0) {
> +        fdt_setprop_cell(fdt, offset, "clock-frequency", UART_FREQ);
> +        offset = fdt_node_offset_by_compatible(fdt, offset, "ns16550");
> +    }
> +
> +    /* some more clocks */
> +    qemu_fdt_setprop_cell(fdt, "/plb", "clock-frequency",
> +                              PLB_FREQ);
> +    qemu_fdt_setprop_cell(fdt, "/plb/opb", "clock-frequency",
> +                              OPB_FREQ);
> +    qemu_fdt_setprop_cell(fdt, "/plb/opb/ebc", "clock-frequency",
> +                              EBC_FREQ);
> +
>      rom_add_blob_fixed(BINARY_DEVICE_TREE_FILE, fdt, fdt_size, addr);
>      g_free(fdt);
>      ret = fdt_size;

-- 
David Gibson			| I'll have my music baroque, and my code
david AT gibson.dropbear.id.au	| minimalist, thank you.  NOT _the_ _other_
				| _way_ _around_!
http://www.ozlabs.org/~dgibson

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]

      parent reply	other threads:[~2018-06-24 10:26 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-06-23 21:18 [Qemu-devel] [PATCH v4] sam460ex: Fix sam460ex device tree when booting the Linux kernel Guenter Roeck
2018-06-23 21:22 ` BALATON Zoltan
2018-06-24 10:12 ` David Gibson [this message]

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=20180624101256.GA2258@umbus.fritz.box \
    --to=david@gibson.dropbear.id.au \
    --cc=agraf@suse.de \
    --cc=balaton@eik.bme.hu \
    --cc=linux@roeck-us.net \
    --cc=qemu-devel@nongnu.org \
    --cc=qemu-ppc@nongnu.org \
    /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).