linux-imx/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 platform/x86: pcengines-apuv2: Fix typo on define of AMD_FCH_GPIO_REG_GPIO55_DEVSLP0 2020-09-24 14:04:53 +03:00
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 mailmap: change email for Ricardo Ribalda 2020-05-25 18:59:59 -06:00
ad7266.h
ad7791.h
ad7793.h platform_data: ad7793.h: drop a duplicated word 2020-08-22 10:53:23 +01:00
ad7887.h iio: adc: ad7887: invert/rework external ref logic 2020-10-10 17:38:36 +01:00
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 pcmcia: at91_cf: move definitions locally 2020-11-27 22:25:07 +01:00
b53.h net: dsa: b53: Platform data shan't include kernel.h 2020-02-05 14:00:05 +01:00
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 platform/chrome: cros_ec_sensorhub: Allocate sensorhub resource before claiming sensors 2020-04-29 23:17:45 +02:00
cros_usbpd_notify.h platform: chrome: Add cros-usbpd-notify driver 2020-02-10 10:14:19 -08:00
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 clocksource/drivers/timer-ti-dm: Enable autoreload in set_pwm 2020-03-16 12:40:51 +01:00
ds620.h
dsa.h
edma.h
elm.h include/: replace HTTP links with HTTPS ones 2020-08-12 10:57:59 -07:00
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: pxa: move private definitions to i2c-pxa.c 2020-05-05 14:50:41 +02:00
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 platform/x86: intel_pmc_ipc: Convert to MFD 2020-04-24 11:18:44 +01:00
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 m68k: mcf5441x: add support for esdhc mmc controller 2020-05-28 11:22:15 +02:00
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 include/: replace HTTP links with HTTPS ones 2020-08-12 10:57:59 -07:00
mtd-davinci.h mtd: rawnand: Use the new ECC engine type enumeration 2020-09-28 15:59:42 +02:00
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: rawnand: Use the new ECC engine type enumeration 2020-09-28 15:59:42 +02:00
mtd-orion_nand.h
mv_usb.h
mv88e6xxx.h
net-cw1200.h wifi: cw1200: Convert to GPIO descriptors 2024-02-05 20:17:10 +02:00
omap-twl4030.h ASoC: ti: Convert TWL4030 to use GPIO descriptors 2023-10-02 14:06:20 +01:00
omap-wd-timer.h
omap1_bl.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 soc: ti: pm33xx: Simplify RTC usage to prepare to drop platform data 2020-08-24 08:38:32 +03:00
pxa_sdhci.h
pxa2xx_udc.h ARM: pxa: fix missing-prototypes warnings 2023-05-26 13:33:05 +02:00
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: spi-omap2-mcspi: Handle DMA size restriction on AM65x 2020-02-06 15:53:40 +00:00
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
usb-davinci.h
usb-ehci-orion.h
usb-musb-ux500.h
usb-ohci-pxa27x.h
usb-ohci-s3c2410.h
usb-omap.h treewide: Replace GPLv2 boilerplate/reference with SPDX - gpl-2.0_152.RULE 2022-06-10 14:51:35 +02:00
usb-omap1.h ARM: omap1: innovator: move ohci phy power handling to board file 2022-04-21 15:01:44 +02:00
usb3503.h usb: misc: usb3503: support usb3803 and bypass mode 2023-03-16 12:18:03 +01: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 platform_data: wilco-ec.h: Replace zero-length array with flexible-array member 2020-04-18 15:44:55 -05:00
wiznet.h
wkup_m3.h
xilinx-ll-temac.h
xtalk-bridge.h
zforce_ts.h