Linux Serial subsystem development
 help / color / mirror / Atom feed
From: "Arnd Bergmann" <arnd@arndb.de>
To: "Yoshinori Sato" <ysato@users.sourceforge.jp>, linux-sh@vger.kernel.org
Cc: "Damien Le Moal" <dlemoal@kernel.org>,
	"Rob Herring" <robh+dt@kernel.org>,
	"Krzysztof Kozlowski" <krzysztof.kozlowski+dt@linaro.org>,
	"Conor Dooley" <conor+dt@kernel.org>,
	"Geert Uytterhoeven" <geert+renesas@glider.be>,
	"Michael Turquette" <mturquette@baylibre.com>,
	"Stephen Boyd" <sboyd@kernel.org>,
	"Dave Airlie" <airlied@gmail.com>,
	"Daniel Vetter" <daniel@ffwll.ch>,
	"Maarten Lankhorst" <maarten.lankhorst@linux.intel.com>,
	"Maxime Ripard" <mripard@kernel.org>,
	"Thomas Zimmermann" <tzimmermann@suse.de>,
	"Thomas Gleixner" <tglx@linutronix.de>,
	"Lorenzo Pieralisi" <lpieralisi@kernel.org>,
	"Krzysztof Wilczyński" <kw@linux.com>,
	"Bjorn Helgaas" <bhelgaas@google.com>,
	"Greg Kroah-Hartman" <gregkh@linuxfoundation.org>,
	"Jiri Slaby" <jirislaby@kernel.org>,
	"Magnus Damm" <magnus.damm@gmail.com>,
	"Daniel Lezcano" <daniel.lezcano@linaro.org>,
	"Rich Felker" <dalias@libc.org>,
	"John Paul Adrian Glaubitz" <glaubitz@physik.fu-berlin.de>,
	"Lee Jones" <lee@kernel.org>, "Helge Deller" <deller@gmx.de>,
	"Heiko Stübner" <heiko@sntech.de>,
	"Jernej Skrabec" <jernej.skrabec@gmail.com>,
	"Chris Morgan" <macromorgan@hotmail.com>,
	"Linus Walleij" <linus.walleij@linaro.org>,
	"Randy Dunlap" <rdunlap@infradead.org>,
	"Hyeonggon Yoo" <42.hyeyoo@gmail.com>,
	"David Rientjes" <rientjes@google.com>,
	"Vlastimil Babka" <vbabka@suse.cz>, "Baoquan He" <bhe@redhat.com>,
	"Andrew Morton" <akpm@linux-foundation.org>,
	"Guenter Roeck" <linux@roeck-us.net>,
	"Stephen Rothwell" <sfr@canb.auug.org.au>,
	guoren <guoren@kernel.org>,
	"Javier Martinez Canillas" <javierm@redhat.com>,
	"Azeem Shaikh" <azeemshaikh38@gmail.com>,
	"Palmer Dabbelt" <palmer@rivosinc.com>,
	"Bin Meng" <bmeng@tinylab.org>,
	"Max Filippov" <jcmvbkbc@gmail.com>, "Tom Rix" <trix@redhat.com>,
	"Herve Codina" <herve.codina@bootlin.com>,
	"Jacky Huang" <ychuang3@nuvoton.com>,
	"Lukas Bulwahn" <lukas.bulwahn@gmail.com>,
	"Jonathan Corbet" <corbet@lwn.net>,
	"Biju Das" <biju.das.jz@bp.renesas.com>,
	"Uwe Kleine-König" <u.kleine-koenig@pengutronix.de>,
	"Sam Ravnborg" <sam@ravnborg.org>,
	"Michael Karcher" <kernel@mkarcher.dialup.fu-berlin.de>,
	"Sergey Shtylyov" <s.shtylyov@omp.ru>,
	"Laurent Pinchart" <laurent.pinchart+renesas@ideasonboard.com>,
	linux-ide@vger.kernel.org, devicetree@vger.kernel.org,
	linux-kernel@vger.kernel.org,
	Linux-Renesas <linux-renesas-soc@vger.kernel.org>,
	linux-clk@vger.kernel.org, dri-devel@lists.freedesktop.org,
	linux-pci@vger.kernel.org, linux-serial@vger.kernel.org,
	linux-fbdev@vger.kernel.org
Subject: Re: [DO NOT MERGE v5 11/37] pci: pci-sh7751: Add SH7751 PCI driver
Date: Tue, 05 Dec 2023 14:26:13 +0100	[thread overview]
Message-ID: <2ef81211-9525-4f96-a6b2-3fcfbed0c6e5@app.fastmail.com> (raw)
In-Reply-To: <602e1ba4f02489fcbc47e8f9904f3c1db1c9f14a.1701768028.git.ysato@users.sourceforge.jp>

On Tue, Dec 5, 2023, at 10:45, Yoshinori Sato wrote:

> +#include <asm/addrspace.h>
> +#include "pci-sh7751.h"
> +
> +#define pcic_writel(val, base, reg) __raw_writel(val, base + (reg))
> +#define pcic_readl(base, reg) __raw_readl(base + (reg))

__raw_writel()/__raw_readl() has a number of problems with
atomicity (the compiler may split or merge pointer
dereferences), barriers and endianess. You should normally
always use readl()/writel() instead.

> +	memset(pci_config, 0, sizeof(pci_config));
> +	if (of_property_read_u32_array(np, "renesas,config",
> +				       pci_config, SH7751_NUM_CONFIG) == 0) {
> +		for (i = 0; i < SH7751_NUM_CONFIG; i++) {
> +			r = pci_config[i * 2];
> +			/* CONFIG0 is read-only, so make it a sentinel. */
> +			if (r == 0)
> +				break;
> +			pcic_writel(pci_config[i * 2 + 1], pcic, r * 4);
> +		}
> +	}

the config property seems a little too specific to this
implementation of the driver. Instead of encoding register
values in DT, I think these should either be described
in named properties where needed, or hardcoded in the driver
if there is only one sensible value.

> +/*
> + * We need to avoid collisions with `mirrored' VGA ports
> + * and other strange ISA hardware, so we always want the
> + * addresses to be allocated in the 0x000-0x0ff region
> + * modulo 0x400.
> + */
> +#define IO_REGION_BASE 0x1000
> +resource_size_t pcibios_align_resource(void *data, const struct 
> resource *res,
> +				resource_size_t size, resource_size_t align)
> +{

You can't have these generic functions in a driver, as that
prevents you from building more than one such driver.

The logic you have here is neither architecture nor
driver specific.

> +static int sh7751_pci_probe(struct platform_device *pdev)
> +{
> +	struct resource *res, *bscres;
> +	void __iomem *pcic;
> +	void __iomem *bsc;
> +	u32 memory[2];
> +	u16 vid, did;
> +	u32 word;
> +
> +	res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
> +	if (IS_ERR(res))
> +		return PTR_ERR(res);
> +	pcic = (void __iomem *)res->start;

This cast is invalid, as res->start is a physical address
that you would need to ioremap() to turn into an __iomem
pointer.

> +	bscres = platform_get_resource(pdev, IORESOURCE_MEM, 1);
> +	bsc = devm_ioremap_resource(&pdev->dev, bscres);
> +	if (IS_ERR(bsc))
> +		return PTR_ERR(bsc);
> +
> +	if (of_property_read_u32_array(pdev->dev.of_node,
> +				       "renesas,memory", memory, 2) < 0) {
> +		/*
> +		 * If no memory range is specified,
> +		 *  the entire main memory will be targeted for DMA.
> +		 */
> +		memory[0] = memory_start;
> +		memory[1] = memory_end - memory_start;
> +	}

There is a generic "dma-ranges" proerty for describing
which memory is visible by a bus.

> diff --git a/drivers/pci/controller/pci-sh7751.h 
> b/drivers/pci/controller/pci-sh7751.h
> new file mode 100644
> index 000000000000..540cee7095c6
> --- /dev/null
> +++ b/drivers/pci/controller/pci-sh7751.h
> @@ -0,0 +1,76 @@

If the header is only included from one file, just removed
it and add the register definitions to the driver directly.

     Arnd

  reply	other threads:[~2023-12-05 13:26 UTC|newest]

Thread overview: 61+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-12-05  9:45 [DO NOT MERGE v5 00/37] Device Tree support for SH7751 based board Yoshinori Sato
2023-12-05  9:45 ` [DO NOT MERGE v5 01/37] sh: passing FDT address to kernel startup Yoshinori Sato
2023-12-05  9:45 ` [DO NOT MERGE v5 02/37] sh: Kconfig unified OF supported targets Yoshinori Sato
2023-12-05  9:45 ` [DO NOT MERGE v5 03/37] sh: Enable OF support for build and configuration Yoshinori Sato
2023-12-05  9:45 ` [DO NOT MERGE v5 04/37] dt-bindings: interrupt-controller: Add header for Renesas SH3/4 INTC Yoshinori Sato
2023-12-05 16:01   ` Krzysztof Kozlowski
2023-12-05  9:45 ` [DO NOT MERGE v5 05/37] sh: GENERIC_IRQ_CHIP support for CONFIG_OF=y Yoshinori Sato
2023-12-05  9:45 ` [DO NOT MERGE v5 06/37] sh: kernel/setup Update DT support Yoshinori Sato
2023-12-05 13:14   ` Arnd Bergmann
2023-12-05  9:45 ` [DO NOT MERGE v5 07/37] sh: Fix COMMON_CLK support in CONFIG_OF=y Yoshinori Sato
2023-12-05  9:45 ` [DO NOT MERGE v5 08/37] clocksource: sh_tmu: CLOCKSOURCE support Yoshinori Sato
2023-12-05  9:45 ` [DO NOT MERGE v5 09/37] dt-bindings: timer: renesas,tmu: add renesas,tmu-sh7750 Yoshinori Sato
2023-12-05 15:29   ` Geert Uytterhoeven
2023-12-05 16:07   ` Krzysztof Kozlowski
2023-12-05  9:45 ` [DO NOT MERGE v5 10/37] sh: Common PCI Framework driver support Yoshinori Sato
2023-12-05 13:05   ` Arnd Bergmann
2023-12-05  9:45 ` [DO NOT MERGE v5 11/37] pci: pci-sh7751: Add SH7751 PCI driver Yoshinori Sato
2023-12-05 13:26   ` Arnd Bergmann [this message]
2023-12-05 13:34     ` Geert Uytterhoeven
2023-12-05 21:48     ` Linus Walleij
2023-12-05  9:45 ` [DO NOT MERGE v5 12/37] dt-bindings: pci: pci-sh7751: Add SH7751 PCI Yoshinori Sato
2023-12-05 14:14   ` Geert Uytterhoeven
2023-12-05  9:45 ` [DO NOT MERGE v5 13/37] dt-bindings: clock: sh7750-cpg: Add renesas,sh7750-cpg header Yoshinori Sato
2023-12-05  9:45 ` [DO NOT MERGE v5 14/37] clk: Compatible with narrow registers Yoshinori Sato
2023-12-05 10:10   ` Uwe Kleine-König
2023-12-05  9:45 ` [DO NOT MERGE v5 15/37] clk: renesas: Add SH7750/7751 CPG Driver Yoshinori Sato
2023-12-05  9:45 ` [DO NOT MERGE v5 16/37] irqchip: Add SH7751 INTC driver Yoshinori Sato
2023-12-08 15:49   ` Thomas Gleixner
2023-12-05  9:45 ` [DO NOT MERGE v5 17/37] dt-bindings: interrupt-controller: renesas,sh7751-intc: Add json-schema Yoshinori Sato
2023-12-05  9:59   ` Linus Walleij
2023-12-05 15:01   ` Geert Uytterhoeven
2023-12-05 16:04   ` Krzysztof Kozlowski
2023-12-05  9:45 ` [DO NOT MERGE v5 18/37] irqchip: SH7751 IRL external encoder with enable gate Yoshinori Sato
2023-12-05  9:45 ` [DO NOT MERGE v5 19/37] dt-bindings: interrupt-controller: renesas,sh7751-irl-ext: Add json-schema Yoshinori Sato
2023-12-05 21:01   ` Rob Herring
2023-12-05  9:45 ` [DO NOT MERGE v5 20/37] serial: sh-sci: fix SH4 OF support Yoshinori Sato
2023-12-05 15:27   ` Geert Uytterhoeven
2023-12-05  9:45 ` [DO NOT MERGE v5 21/37] dt-bindings: serial: renesas,scif: Add scif-sh7751 Yoshinori Sato
2023-12-05 14:57   ` Geert Uytterhoeven
2023-12-05  9:45 ` [DO NOT MERGE v5 22/37] dt-bindings: display: smi,sm501: SMI SM501 binding json-schema Yoshinori Sato
2023-12-05 13:36   ` Rob Herring
2023-12-05 13:36   ` Arnd Bergmann
2023-12-05 15:56     ` Krzysztof Kozlowski
2023-12-05  9:45 ` [DO NOT MERGE v5 23/37] mfd: sm501: Convert platform_data to OF property Yoshinori Sato
2023-12-07 16:36   ` Lee Jones
2023-12-05  9:45 ` [DO NOT MERGE v5 24/37] dt-binding: sh: cpus: Add SH CPUs json-schema Yoshinori Sato
2023-12-05 15:07   ` Geert Uytterhoeven
2023-12-05  9:45 ` [DO NOT MERGE v5 25/37] dt-bindings: vendor-prefixes: Add iodata Yoshinori Sato
2023-12-05  9:45 ` [DO NOT MERGE v5 26/37] dt-bindings: vendor-prefixes: Add smi Yoshinori Sato
2023-12-05  9:45 ` [DO NOT MERGE v5 27/37] dt-bindings: ata: ata-generic: Add new targets Yoshinori Sato
2023-12-05  9:45 ` [DO NOT MERGE v5 28/37] dt-bindings: soc: renesas: sh: Add SH7751 based target Yoshinori Sato
2023-12-05  9:45 ` [DO NOT MERGE v5 29/37] sh: SH7751R SoC Internal peripheral definition dtsi Yoshinori Sato
2023-12-05  9:45 ` [DO NOT MERGE v5 30/37] sh: add RTS7751R2D Plus DTS Yoshinori Sato
2023-12-05  9:45 ` [DO NOT MERGE v5 31/37] sh: Add IO DATA LANDISK dts Yoshinori Sato
2023-12-05  9:45 ` [DO NOT MERGE v5 32/37] sh: Add IO DATA USL-5P dts Yoshinori Sato
2023-12-05  9:45 ` [DO NOT MERGE v5 33/37] sh: j2_mimas_v2.dts update Yoshinori Sato
2023-12-05  9:45 ` [DO NOT MERGE v5 34/37] sh: Add dtbs target support Yoshinori Sato
2023-12-05  9:45 ` [DO NOT MERGE v5 35/37] sh: RTS7751R2D Plus OF defconfig Yoshinori Sato
2023-12-05 13:01   ` Arnd Bergmann
2023-12-05  9:45 ` [DO NOT MERGE v5 36/37] sh: LANDISK " Yoshinori Sato
2023-12-05  9:45 ` [DO NOT MERGE v5 37/37] sh: j2_defconfig: update 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=2ef81211-9525-4f96-a6b2-3fcfbed0c6e5@app.fastmail.com \
    --to=arnd@arndb.de \
    --cc=42.hyeyoo@gmail.com \
    --cc=airlied@gmail.com \
    --cc=akpm@linux-foundation.org \
    --cc=azeemshaikh38@gmail.com \
    --cc=bhe@redhat.com \
    --cc=bhelgaas@google.com \
    --cc=biju.das.jz@bp.renesas.com \
    --cc=bmeng@tinylab.org \
    --cc=conor+dt@kernel.org \
    --cc=corbet@lwn.net \
    --cc=dalias@libc.org \
    --cc=daniel.lezcano@linaro.org \
    --cc=daniel@ffwll.ch \
    --cc=deller@gmx.de \
    --cc=devicetree@vger.kernel.org \
    --cc=dlemoal@kernel.org \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=geert+renesas@glider.be \
    --cc=glaubitz@physik.fu-berlin.de \
    --cc=gregkh@linuxfoundation.org \
    --cc=guoren@kernel.org \
    --cc=heiko@sntech.de \
    --cc=herve.codina@bootlin.com \
    --cc=javierm@redhat.com \
    --cc=jcmvbkbc@gmail.com \
    --cc=jernej.skrabec@gmail.com \
    --cc=jirislaby@kernel.org \
    --cc=kernel@mkarcher.dialup.fu-berlin.de \
    --cc=krzysztof.kozlowski+dt@linaro.org \
    --cc=kw@linux.com \
    --cc=laurent.pinchart+renesas@ideasonboard.com \
    --cc=lee@kernel.org \
    --cc=linus.walleij@linaro.org \
    --cc=linux-clk@vger.kernel.org \
    --cc=linux-fbdev@vger.kernel.org \
    --cc=linux-ide@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-pci@vger.kernel.org \
    --cc=linux-renesas-soc@vger.kernel.org \
    --cc=linux-serial@vger.kernel.org \
    --cc=linux-sh@vger.kernel.org \
    --cc=linux@roeck-us.net \
    --cc=lpieralisi@kernel.org \
    --cc=lukas.bulwahn@gmail.com \
    --cc=maarten.lankhorst@linux.intel.com \
    --cc=macromorgan@hotmail.com \
    --cc=magnus.damm@gmail.com \
    --cc=mripard@kernel.org \
    --cc=mturquette@baylibre.com \
    --cc=palmer@rivosinc.com \
    --cc=rdunlap@infradead.org \
    --cc=rientjes@google.com \
    --cc=robh+dt@kernel.org \
    --cc=s.shtylyov@omp.ru \
    --cc=sam@ravnborg.org \
    --cc=sboyd@kernel.org \
    --cc=sfr@canb.auug.org.au \
    --cc=tglx@linutronix.de \
    --cc=trix@redhat.com \
    --cc=tzimmermann@suse.de \
    --cc=u.kleine-koenig@pengutronix.de \
    --cc=vbabka@suse.cz \
    --cc=ychuang3@nuvoton.com \
    --cc=ysato@users.sourceforge.jp \
    /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