mirror_ubuntu-kernels/include/linux/platform_data
Florian Fainelli ee975351cf net: mdio: mdio-bcm-unimac: Manage clock around I/O accesses
Up until now we have managed not to have the mdio-bcm-unimac manage its
clock except during probe and suspend/resume. This works most of the
time, except where it does not.

With a fully modular build, we can get into a situation whereby the
GENET driver is fully registered, and so is the mdio-bcm-unimac driver,
however the Ethernet PHY driver is not yet, because it depends on a
resource that is not yet available (e.g.: GPIO provider). In that state,
the network device is not usable yet, and so to conserve power, the
GENET driver will have turned off its "main" clock which feeds its MDIO
controller.

When the PHY driver finally probes however, we make an access to the PHY
registers to e.g.: disable interrupts, and this causes a bus error
within the MDIO controller space because the MDIO controller clock(s)
are turned off.

To remedy that, we manage the clock around all of the I/O accesses to
the hardware which are done exclusively during read, write and clock
divider configuration.

This ensures that the register space is accessible, and this also
ensures that there are not unnecessarily elevated reference counts
keeping the clocks active when the network device is administratively
turned off. It would be the case with the previous way of managing the
clock.

Reviewed-by: Jacob Keller <jacob.e.keller@intel.com>
Signed-off-by: Florian Fainelli <florian.fainelli@broadcom.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2024-02-21 12:46:17 +00:00
..
gpio
media ARM: s3c: simplify platform code 2023-01-16 09:26:05 +01:00
txx9
x86 platform-drivers-x86 for v6.7-3 2023-12-11 11:22:02 +01:00
ad5449.h
ad5761.h
ad7266.h
ad7791.h
ad7793.h
ad7887.h
adau17x1.h
adp8860.h
adp8870.h
ads7828.h
amd_xdma.h dmaengine: xilinx: xdma: Add xilinx xdma driver 2023-02-10 11:32:26 +05:30
ams-delta-fiq.h
apds990x.h
arm-ux500-pm.h
asoc-imx-ssi.h
asoc-kirkwood.h
asoc-pxa.h ARM: pxa: fix missing-prototypes warnings 2023-05-26 13:33:05 +02:00
asoc-s3c.h
asoc-ti-mcbsp.h
ata-pxa.h
atmel.h
b53.h
bcm7038_wdt.h watchdog: bcm7038_wdt: Support platform data configuration 2021-12-28 13:59:07 +01:00
bcmgenet.h
bd6107.h backlight/bd6107: Rename struct bd6107_platform_data.fbdev to 'dev' 2023-06-27 09:58:48 +02:00
bh1770glc.h
brcmfmac.h wifi: brcmfmac: fix copyright year mentioned in platform_data header 2024-01-31 18:48:06 +02:00
brcmnand.h mtd: rawnand: brcmnand: Add platform data structure for BCMA 2022-01-23 16:37:18 +01:00
clk-da8xx-cfgchip.h
clk-davinci-pll.h
clk-fch.h ACPI: APD: Add a fmw property clk-name 2022-01-06 17:57:52 -08:00
cpuidle-exynos.h
cros_ec_chardev.h
cros_ec_commands.h media: cros-ec-cec: Get number of CEC ports from EC 2023-09-27 09:39:55 +02:00
cros_ec_proto.h platform/chrome: cros_ec_proto: Mark outdata as const 2023-10-04 11:40:54 +08:00
cros_ec_sensorhub.h
cros_usbpd_notify.h
crypto-ux500.h
cyttsp4.h
davinci_asp.h treewide: Replace GPLv2 boilerplate/reference with SPDX - gpl-2.0_30.RULE (part 2) 2022-06-10 14:51:35 +02:00
davinci-cpufreq.h ARM: davinci: fix davinci_cpufreq_init() declaration 2023-05-26 13:31:31 +02:00
dma-dw.h dmaengine: dw: Convert members to u32 in platform data 2021-08-06 19:18:35 +05:30
dma-ep93xx.h
dma-hsu.h dmaengine: hsu: Include headers we are direct user of 2022-09-04 22:49:35 +05:30
dma-iop32x.h
dma-mcf-edma.h
dma-mv_xor.h
dmtimer-omap.h
ds620.h
dsa.h
edma.h
elm.h
emc2305.h platform_data/emc2305: define platform data for EMC2305 driver 2022-09-19 06:17:05 -07:00
emif_plat.h
eth-ep93xx.h
g762.h
gpio_backlight.h backlight/gpio_backlight: Rename field 'fbdev' to 'dev' 2023-06-27 09:58:48 +02:00
gpio-ath79.h
gpio-davinci.h treewide: Replace GPLv2 boilerplate/reference with SPDX - gpl-2.0_30.RULE (part 2) 2022-06-10 14:51:35 +02:00
gpio-htc-egpio.h
gpio-omap.h OMAP/gpio: drop MPUIO static base 2023-10-04 11:37:25 +02:00
gpmc-omap.h memory: omap-gpmc: fix coverity issue "Control flow issues" 2022-11-10 11:04:07 +01:00
gsc_hwmon.h hwmon: Annotate struct gsc_hwmon_platform_data with __counted_by 2023-10-08 22:46:04 -07:00
hirschmann-hellcreek.h net: dsa: use capital "OR" for multiple licenses in SPDX 2023-08-24 12:02:53 -07:00
hsmmc-omap.h
hwmon-s3c.h
i2c-davinci.h
i2c-gpio.h i2c: gpio: support write-only sda/scl w/o pull-up 2023-01-23 23:18:54 +01:00
i2c-imx.h
i2c-mux-gpio.h
i2c-mux-reg.h i2c: mux: reg: Remove class-based device auto-detection support 2024-01-18 21:10:43 +01:00
i2c-ocores.h
i2c-omap.h
i2c-pca-platform.h
i2c-pxa.h
i2c-s3c2410.h
i2c-xiic.h
ina2xx.h
intel-mid_wdt.h
invensense_mpu6050.h iio:imu:mpu6050: Modify matricies to matrices 2021-03-29 11:06:01 +01:00
iommu-omap.h
isl9305.h
itco_wdt.h
keyboard-spear.h
keypad-ep93xx.h
keypad-nomadik-ske.h
keypad-omap.h Input: omap-keypad - drop optional GPIO support 2023-12-13 21:26:13 -08:00
keypad-pxa27x.h
keyscan-davinci.h
lcd-mipid.h Input: ads7846 - Convert to use software nodes 2023-05-24 15:01:30 +02:00
leds-lm355x.h
leds-lm3642.h
leds-lp55xx.h leds: lp55xx: Configure internal charge pump 2023-05-25 12:16:05 +01:00
lm3630a_bl.h
lm3639_bl.h
lm8323.h
lp855x.h
lp8727.h
lp8755.h
ltc4245.h
lv5207lp.h backlight/lv5207lp: Rename struct lv5207lp_platform_data.fbdev to 'dev' 2023-06-27 09:58:48 +02:00
max197.h
max732x.h gpio: max732x: Drop unused support for irq and setup code via platform data 2022-05-05 14:37:17 +02:00
max3421-hcd.h
max6639.h
max6697.h
mcs.h
mdio-bcm-unimac.h net: mdio: mdio-bcm-unimac: Manage clock around I/O accesses 2024-02-21 12:46:17 +00:00
mdio-gpio.h
mfd-mcp-sa11x0.h
microchip-ksz.h net: dsa: Add KSZ8567 switch support 2024-02-01 11:17:24 +01:00
mlxcpld.h i2c: mux: mlxcpld: Add callback to notify mux creation completion 2021-02-09 11:35:44 +01:00
mlxreg.h platform_data/mlxreg: Add field with mapped resource address 2023-02-13 12:07:50 +01:00
mmc-davinci.h
mmc-esdhc-mcf.h
mmc-mxcmmc.h
mmc-omap.h ARM/mmc: Convert old mmci-omap to GPIO descriptors 2023-05-24 15:01:36 +02:00
mmc-pxamci.h
mmc-sdhci-s3c.h
mmp_dma.h
mtd-davinci-aemif.h
mtd-davinci.h
mtd-nand-omap2.h Memory controller drivers for v5.17 - OMAP GPMC 2021-12-31 12:45:57 +01:00
mtd-nand-pxa3xx.h
mtd-nand-s3c2410.h
mtd-orion_nand.h
mv88e6xxx.h
mv_usb.h
net-cw1200.h wifi: cw1200: Convert to GPIO descriptors 2024-02-05 20:17:10 +02:00
omap1_bl.h
omap-twl4030.h ASoC: ti: Convert TWL4030 to use GPIO descriptors 2023-10-02 14:06:20 +01:00
omap-wd-timer.h
omapdss.h
pca953x.h gpio: pca953x: Drop unused fields in struct pca953x_platform_data 2023-09-11 08:59:57 +02:00
phy-da8xx-usb.h
pinctrl-single.h
pm33xx.h
pxa2xx_udc.h ARM: pxa: fix missing-prototypes warnings 2023-05-26 13:33:05 +02:00
pxa_sdhci.h
regulator-haptic.h
s3c-hsotg.h
sa11x0-serial.h
sc18is602.h
sdhci-pic32.h
serial-omap.h
serial-sccnxp.h
sgi-w1.h
sh_mmcif.h mmc: sh_mmcif: move platform_data header to proper location 2022-04-26 14:05:21 +02:00
shmob_drm.h drm: renesas: shmobile: Use media bus formats in platform data 2023-10-16 11:47:46 +02:00
shtc1.h
si5351.h clk: si5351: allow PLLs to be adjusted without reset 2023-12-17 22:31:36 -08:00
simplefb.h drm/simpledrm: Support the XB24/AB24 format 2023-01-23 16:06:06 +01:00
spi-davinci.h
spi-ep93xx.h
spi-mt65xx.h spi: mediatek: add tick_delay support 2021-07-14 13:30:43 +01:00
spi-omap2-mcspi.h
spi-s3c64xx.h spi: s3c64xx: change polling mode to optional 2023-05-08 09:10:50 +09:00
st_sensors_pdata.h iio: Comment that the LSM303D also has the Magnetometer DRDY 2023-05-13 17:56:04 +01:00
syscon.h
tda9950.h
ti-aemif.h
ti-prm.h
ti-sysc.h bus: ti-sysc: Handle otg force idle quirk 2021-09-21 12:56:14 +03:00
touchscreen-s3c2410.h
tps68470.h platform/x86: int3472: Support multiple clock consumers 2022-09-24 19:12:32 +02:00
tsc2007.h
tsl2772.h
uio_dmem_genirq.h treewide: Replace GPLv2 boilerplate/reference with SPDX - gpl-2.0_30.RULE (part 2) 2022-06-10 14:51:35 +02:00
uio_pruss.h treewide: Replace GPLv2 boilerplate/reference with SPDX - gpl-2.0_30.RULE (part 2) 2022-06-10 14:51:35 +02:00
usb3503.h usb: misc: usb3503: support usb3803 and bypass mode 2023-03-16 12:18:03 +01:00
usb-davinci.h
usb-ehci-orion.h
usb-musb-ux500.h
usb-ohci-pxa27x.h
usb-ohci-s3c2410.h
usb-omap1.h ARM: omap1: innovator: move ohci phy power handling to board file 2022-04-21 15:01:44 +02:00
usb-omap.h treewide: Replace GPLv2 boilerplate/reference with SPDX - gpl-2.0_152.RULE 2022-06-10 14:51:35 +02:00
video_s3c.h
video-ep93xx.h
video-pxafb.h ARM: pxa: move regs-lcd.h into driver 2022-04-19 16:29:03 +02:00
voltage-omap.h ARM: omap2: make functions static 2023-01-09 17:00:54 +01:00
wilco-ec.h
wiznet.h
wkup_m3.h
xilinx-ll-temac.h
xtalk-bridge.h
zforce_ts.h