On Fri, Nov 29, 2024 at 9:54 AM Geert Uytterhoeven <geert@xxxxxxxxxxxxxx> wrote: > On Fri, Nov 29, 2024 at 9:48 AM Claudiu Beznea <claudiu.beznea@xxxxxxxxx> wrote: > > On 28.11.2024 17:24, Geert Uytterhoeven wrote: > > > On Tue, Nov 26, 2024 at 10:21 AM Claudiu <claudiu.beznea@xxxxxxxxx> wrote: > > >> From: Claudiu Beznea <claudiu.beznea.uj@xxxxxxxxxxxxxx> > > >> > > >> The RZ/G3S system controller (SYSC) has various registers that control > > >> signals specific to individual IPs. IP drivers must control these signals > > >> at different configuration phases. > > >> > > >> Add SYSC driver that allows individual SYSC consumers to control these > > >> signals. The SYSC driver exports a syscon regmap enabling IP drivers to > > >> use a specific SYSC offset and mask from the device tree, which can then be > > >> accessed through regmap_update_bits(). > > >> > > >> Currently, the SYSC driver provides control to the USB PWRRDY signal, which > > >> is routed to the USB PHY. This signal needs to be managed before or after > > >> powering the USB PHY off or on. > > >> > > >> Other SYSC signals candidates (as exposed in the the hardware manual of the > > >> > > >> * PCIe: > > >> - ALLOW_ENTER_L1 signal controlled through the SYS_PCIE_CFG register > > >> - PCIE_RST_RSM_B signal controlled through the SYS_PCIE_RST_RSM_B > > >> register > > >> - MODE_RXTERMINATION signal controlled through SYS_PCIE_PHY register > > >> > > >> * SPI: > > >> - SEL_SPI_OCTA signal controlled through SYS_IPCONT_SEL_SPI_OCTA > > >> register > > >> > > >> * I2C/I3C: > > >> - af_bypass I2C signals controlled through SYS_I2Cx_CFG registers > > >> (x=0..3) > > >> - af_bypass I3C signal controlled through SYS_I3C_CFG register > > >> > > >> * Ethernet: > > >> - FEC_GIGA_ENABLE Ethernet signals controlled through SYS_GETHx_CFG > > >> registers (x=0..1) > > >> > > >> As different Renesas RZ SoC shares most of the SYSC functionalities > > >> available on the RZ/G3S SoC, the driver if formed of a SYSC core > > >> part and a SoC specific part allowing individual SYSC SoC to provide > > >> functionalities to the SYSC core. > > >> > > >> Signed-off-by: Claudiu Beznea <claudiu.beznea.uj@xxxxxxxxxxxxxx> > > > > > >> --- /dev/null > > >> +++ b/drivers/soc/renesas/r9a08g045-sysc.c > > >> @@ -0,0 +1,31 @@ > > >> +// SPDX-License-Identifier: GPL-2.0 > > >> +/* > > >> + * RZ/G3S System controller driver > > >> + * > > >> + * Copyright (C) 2024 Renesas Electronics Corp. > > >> + */ > > >> + > > >> +#include <linux/array_size.h> > > >> +#include <linux/bits.h> > > >> +#include <linux/init.h> > > >> + > > >> +#include "rz-sysc.h" > > >> + > > >> +#define SYS_USB_PWRRDY 0xd70 > > >> +#define SYS_USB_PWRRDY_PWRRDY_N BIT(0) > > >> +#define SYS_MAX_REG 0xe20 > > >> + > > >> +static const struct rz_sysc_signal_init_data rzg3s_sysc_signals_init_data[] __initconst = { > > > > > > This is marked __initconst... > > > > > >> + { > > >> + .name = "usb-pwrrdy", > > >> + .offset = SYS_USB_PWRRDY, > > >> + .mask = SYS_USB_PWRRDY_PWRRDY_N, > > >> + .refcnt_incr_val = 0 > > >> + } > > >> +}; > > >> + > > >> +const struct rz_sysc_init_data rzg3s_sysc_init_data = { > > > > > > ... but this is not __init, causing a section mismatch. > > > > Do you know if there is a way to detect this? > > The kernel should tell you during the build... Sorry, I hit send too early; I was still verifying this... And it indeed doesn't trigger, strange... Gr{oetje,eeting}s, Geert -- Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@xxxxxxxxxxxxxx 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