From: Yoshinori Sato <ysato@users.sourceforge.jp>
To: Geert Uytterhoeven <geert@linux-m68k.org>
Cc: linux-sh@vger.kernel.org, glaubitz@physik.fu-berlin.de,
linux-pci@vger.kernel.org
Subject: Re: [RFC PATCH v2 07/30] drivers/pci: SH7751 PCI Host bridge controller driver.
Date: Wed, 20 Sep 2023 21:15:59 +0900 [thread overview]
Message-ID: <87sf79t4zk.wl-ysato@users.sourceforge.jp> (raw)
In-Reply-To: <CAMuHMdX0enQeLcLO6hmKFXqMeZVfoT0qrz3XTCWuUUTWwS-vHw@mail.gmail.com>
On Tue, 19 Sep 2023 00:32:46 +0900,
Geert Uytterhoeven wrote:
>
> Hi Sato-san,
>
> On Wed, Sep 13, 2023 at 11:35 AM Yoshinori Sato
> <ysato@users.sourceforge.jp> wrote:
> > Signed-off-by: Yoshinori Sato <ysato@users.sourceforge.jp>
>
> Thanks for your patch!
>
> > --- /dev/null
> > +++ b/drivers/pci/controller/pci-sh7751.c
> > @@ -0,0 +1,338 @@
> > +// SPDX-License-Identifier: GPL-2.0
> > +/*
> > + * SH7751 PCI driver
> > + * Copyright (C) 2023 Yoshinori Sato
> > + *
> > + */
> > +
> > +#include <linux/kernel.h>
> > +#include <linux/module.h>
> > +#include <linux/of_address.h>
> > +#include <linux/of_pci.h>
> > +#include <linux/of_platform.h>
> > +#include <linux/pci-ecam.h>
> > +#include <linux/platform_device.h>
> > +#include <linux/io.h>
> > +#include <asm-generic/pci.h>
> > +#include "pci-sh7751.h"
> > +
> > +#define pcic_writel(val, reg) __raw_writel(val, pci_reg_base + (reg))
> > +#define pcic_readl(reg) __raw_readl(pci_reg_base + (reg))
> > +
> > +DEFINE_RAW_SPINLOCK(pci_config_lock);
> > +
> > +/*
> > + * PCIC fixups
> > + */
> > +
> > +#define PCIMCR_MRSET 0x40000000
> > +#define PCIMCR_RFSH 0x00000004
> > +
> > +/* board depend PCI bus fixups */
> > +static void __init julian_fixup(void __iomem *pci_reg_base, void __iomem *bcr)
>
> Please drop all the __init* annotations.
> Although I no longer see invalid section warnings, all symbols tagged
> with __init* are still referenced from sh7751_pci_probe(), eventually.
>
> > +{
> > + unsigned long bcr1, mcr;
> > +
> > + bcr1 = __raw_readl(bcr + SH7751_BCR1);
> > + bcr1 |= 0x00080000; /* Enable Bit 19 BREQEN, set PCIC to slave */
> > + pcic_writel(bcr1, SH4_PCIBCR1);
> > +
> > + mcr = __raw_readl(bcr + SH7751_MCR);
> > + mcr &= (~PCIMCR_MRSET) & (~PCIMCR_RFSH);
> > + pcic_writel(mcr, SH4_PCIMCR);
> > +
> > + pcic_writel(0x0c000000, SH7751_PCICONF5);
> > + pcic_writel(0xd0000000, SH7751_PCICONF6);
> > + pcic_writel(0x0c000000, SH4_PCILAR0);
> > + pcic_writel(0x00000000, SH4_PCILAR1);
> > +}
> > +
> > +static void __init r2d_fixup(void __iomem *pci_reg_base, void __iomem *bcr)
> > +{
> > + unsigned long bcr1, mcr;
> > +
> > + bcr1 = ioread32(bcr + SH7751_BCR1);
> > + bcr1 |= 0x40080000; /* Enable Bit 19 BREQEN, set PCIC to slave */
> > + pcic_writel(bcr1, SH4_PCIBCR1);
> > +
> > + /* Enable all interrupts, so we known what to fix */
> > + pcic_writel(0x0000c3ff, SH4_PCIINTM);
> > + pcic_writel(0x0000380f, SH4_PCIAINTM);
> > +
> > + pcic_writel(0xfb900047, SH7751_PCICONF1);
> > + pcic_writel(0xab000001, SH7751_PCICONF4);
> > +
> > + mcr = ioread32(bcr + SH7751_MCR);
> > + mcr &= (~PCIMCR_MRSET) & (~PCIMCR_RFSH);
> > + pcic_writel(mcr, SH4_PCIMCR);
> > +
> > + pcic_writel(0x0c000000, SH7751_PCICONF5);
> > + pcic_writel(0xd0000000, SH7751_PCICONF6);
> > + pcic_writel(0x0c000000, SH4_PCILAR0);
> > + pcic_writel(0x00000000, SH4_PCILAR1);
> > +}
> > +
> > +static const __initconst struct fixups {
> > + char *compatible;
> > + void (*fixup)(void __iomem *pci_reg_base, void __iomem *bcr);
> > +} fixup_list[] = {
> > + {
> > + .compatible = "iodata,julian-pci",
> > + .fixup = julian_fixup,
> > + },
> > + {
> > + .compatible = "renesas,r2d-pci",
> > + .fixup = r2d_fixup,
> > + },
> > +};
>
> These fixups seem to be board-specific instead of specific to the
> PCI block in the SoCs on these boards.
>
> I see three options to handle this in a more appropriate way:
> 1. Handle this in the bootloader.
> Not an attractive solution, as not everyone can/wants to update
> the bootloader,
> 2. Use of_machine_is_compatible() in a platform-specific quirk
> handler, outside the PCI driver,
> 3. Move the common parts into sh7751_pci_probe(), and the
> handle the differences through DT topology analysis and/or
> properties in DT.
I think the bootloader is not initialized on targets that do not use
a PCI device for booting.
I think it's better to use option 2 or 3.
I looked at the current fixup, but the only difference is the PCIC setting,
so I will try plan 3.
> Gr{oetje,eeting}s,
>
> Geert
>
> --
> Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org
>
> In personal conversations with technical people, I call myself a hacker. But
> when I'm talking to journalists I just say "programmer" or something like that.
> -- Linus Torvalds
--
Yosinori Sato
next prev parent reply other threads:[~2023-09-20 12:16 UTC|newest]
Thread overview: 83+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-09-13 9:23 [RFC PATCH v2 00/30] Device Tree support for SH7751 based board Yoshinori Sato
2023-09-13 9:23 ` [RFC PATCH v2 01/30] arch/sh: head_32.S passing FDT address to initialize function Yoshinori Sato
2023-09-18 15:16 ` Geert Uytterhoeven
2023-09-13 9:23 ` [RFC PATCH v2 02/30] arch/sh: boards/Kconfig unified OF supported targets Yoshinori Sato
2023-09-18 15:05 ` Geert Uytterhoeven
2023-09-13 9:23 ` [RFC PATCH v2 03/30] arch/sh: Disable SH specific drivers in OF enabled Yoshinori Sato
2023-09-18 15:14 ` Geert Uytterhoeven
2023-09-13 9:23 ` [RFC PATCH v2 04/30] include: sh_intc.h Add stub function "intc_finalize" Yoshinori Sato
2023-09-18 15:16 ` Geert Uytterhoeven
2023-09-13 9:23 ` [RFC PATCH v2 05/30] arch/sh: setup.c update DeviceTree support Yoshinori Sato
2023-09-13 9:23 ` [RFC PATCH v2 06/30] drivers/pci: SH7751 PCI Host bridge header Yoshinori Sato
2023-09-18 19:16 ` Bjorn Helgaas
2023-09-13 9:23 ` [RFC PATCH v2 07/30] drivers/pci: SH7751 PCI Host bridge controller driver Yoshinori Sato
2023-09-18 15:32 ` Geert Uytterhoeven
2023-09-20 12:15 ` Yoshinori Sato [this message]
2023-09-18 19:30 ` Bjorn Helgaas
2023-09-13 9:23 ` [RFC PATCH v2 08/30] drivers/pci: Add SH7751 Host bridge controller Yoshinori Sato
2023-09-18 15:34 ` Geert Uytterhoeven
2023-09-18 19:33 ` Bjorn Helgaas
2023-10-12 7:16 ` Geert Uytterhoeven
2023-09-13 9:23 ` [RFC PATCH v2 09/30] Documentation/devicetree: Add renesas,sh7751-pci binding document Yoshinori Sato
2023-09-13 10:42 ` Krzysztof Kozlowski
2023-09-18 15:41 ` Geert Uytterhoeven
2023-09-13 9:23 ` [RFC PATCH v2 10/30] drivers/clk: SH7750 / SH7751 CPG Driver Yoshinori Sato
2023-09-13 10:43 ` Krzysztof Kozlowski
2023-09-18 16:05 ` Geert Uytterhoeven
2023-09-13 9:23 ` [RFC PATCH v2 11/30] drivers/clk: SuperH generai clock divider helper Yoshinori Sato
2023-09-18 18:59 ` Geert Uytterhoeven
2023-09-13 9:23 ` [RFC PATCH v2 12/30] drivers/clk: Add SH7750 CPG drivers entry Yoshinori Sato
2023-09-18 19:05 ` Geert Uytterhoeven
2023-09-13 9:23 ` [RFC PATCH v2 13/30] Documentation/devicetree: Add renesas,sh7751-cpg binding document Yoshinori Sato
2023-09-13 10:44 ` Krzysztof Kozlowski
2023-09-18 19:21 ` Geert Uytterhoeven
2023-10-03 9:16 ` Geert Uytterhoeven
2023-09-13 9:23 ` [RFC PATCH v2 14/30] drivers/irqchip: Add SH7751 Internal INTC drivers Yoshinori Sato
2023-09-19 11:50 ` Geert Uytterhoeven
2023-09-22 10:12 ` Yoshinori Sato
2023-09-25 7:38 ` Geert Uytterhoeven
2023-09-30 15:14 ` Yoshinori Sato
2023-09-13 9:23 ` [RFC PATCH v2 15/30] Documentation/devicetree: Add renesas,sh7751-intc binding document Yoshinori Sato
2023-09-13 10:44 ` Krzysztof Kozlowski
2023-09-19 11:56 ` Geert Uytterhoeven
2023-09-13 9:23 ` [RFC PATCH v2 16/30] drivers/irqchip: SH7751 IRL external encoder with enable gate Yoshinori Sato
2023-09-19 12:10 ` Geert Uytterhoeven
2023-09-13 9:23 ` [RFC PATCH v2 17/30] Documentation/devicetree: Add renesas,sh7751-irl-ext binding document Yoshinori Sato
2023-09-13 10:45 ` Krzysztof Kozlowski
2023-09-19 12:08 ` Geert Uytterhoeven
2023-09-13 9:23 ` [RFC PATCH v2 18/30] drivers/clocksource: sh_tmu clocks property support Yoshinori Sato
2023-09-19 12:15 ` Geert Uytterhoeven
2023-09-13 9:23 ` [RFC PATCH v2 19/30] drivers/tty: sh-sci fix SH4 OF support Yoshinori Sato
2023-09-19 12:25 ` Geert Uytterhoeven
2023-10-02 12:56 ` Yoshinori Sato
2023-09-13 9:23 ` [RFC PATCH v2 20/30] drivers/mfd: sm501 add some properties Yoshinori Sato
2023-09-20 12:25 ` Lee Jones
2023-09-13 9:23 ` [RFC PATCH v2 21/30] Documentation/devicetree: sm501fb add properies Yoshinori Sato
2023-09-13 10:45 ` Krzysztof Kozlowski
2023-09-13 9:23 ` [RFC PATCH v2 22/30] arch/sh: Add dtbs target support Yoshinori Sato
2023-09-19 12:28 ` Geert Uytterhoeven
2023-09-13 9:23 ` [RFC PATCH v2 23/30] arch/sh: Add SH7751 SoC Internal periphreal devicetree Yoshinori Sato
2023-09-13 10:49 ` Krzysztof Kozlowski
2023-09-19 12:41 ` Geert Uytterhoeven
2023-09-19 13:11 ` Geert Uytterhoeven
2023-09-13 9:23 ` [RFC PATCH v2 24/30] include/dt-bindings: Add SH7750 CPG header Yoshinori Sato
2023-09-13 10:46 ` Krzysztof Kozlowski
2023-09-19 12:43 ` Geert Uytterhoeven
2023-09-20 11:52 ` Krzysztof Kozlowski
2023-09-19 12:46 ` Geert Uytterhoeven
2023-09-13 9:23 ` [RFC PATCH v2 25/30] include/dt-bindings: Add sh_intc IRQ - EVT conversion helper Yoshinori Sato
2023-09-13 10:47 ` Krzysztof Kozlowski
2023-09-19 13:02 ` Geert Uytterhoeven
2023-09-20 11:51 ` Krzysztof Kozlowski
2023-09-20 12:30 ` Geert Uytterhoeven
2023-09-19 13:05 ` Geert Uytterhoeven
2023-09-13 9:23 ` [RFC PATCH v2 26/30] arch/sh: RTS7751R2D Plus DeviceTree Yoshinori Sato
2023-09-13 10:49 ` Krzysztof Kozlowski
2023-09-15 15:43 ` Geert Uytterhoeven
2023-09-19 13:25 ` Geert Uytterhoeven
2023-10-02 13:21 ` Yoshinori Sato
2023-10-02 13:51 ` Geert Uytterhoeven
2023-09-13 9:23 ` [RFC PATCH v2 27/30] arch/sh: LANDISK DeviceTree Yoshinori Sato
2023-09-13 9:23 ` [RFC PATCH v2 28/30] arch/sh: USL-5P DeviceTree Yoshinori Sato
2023-09-13 9:23 ` [RFC PATCH v2 29/30] arch/sh: RTS7751R2D Plus OF defconfig Yoshinori Sato
2023-09-13 9:23 ` [RFC PATCH v2 30/30] arch/sh: LANDISK " Yoshinori Sato
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=87sf79t4zk.wl-ysato@users.sourceforge.jp \
--to=ysato@users.sourceforge.jp \
--cc=geert@linux-m68k.org \
--cc=glaubitz@physik.fu-berlin.de \
--cc=linux-pci@vger.kernel.org \
--cc=linux-sh@vger.kernel.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).