mirror of
https://github.com/torvalds/linux.git
synced 2024-12-15 23:51:46 +00:00
e9a03add0c
The new ADI GPIO2 controller was introduced since the BF548 and BF60x processors. It differs a lot from the old one on BF5xx processors. So, create a pinctrl driver under the pinctrl framework. - Define gpio ports and pin interrupt controllers as individual platform devices. - Register a pinctrl driver for the whole GPIO ports and pin interrupt devices. - Probe pint devices before port devices. Put device instances into the global gpio and pint lists. - Define peripheral, irq and gpio reservation bit masks for each gpio port as runtime resources. - Save and restore gpio port and pint status MMRs in syscore PM functions. - Create the plug-in subdrivers to hold the pinctrl soc data for bf54x and bf60x. Add soc data into struct adi_pinctrl. Initialize the soc data in pin controller probe function. Get the pin groups and functions via the soc data reference. - Call gpiochip_add_pin_range() in gpio device probe function to register range cross reference between gpio device and pin control device. - Get range by pinctrl_find_gpio_range_from_pin(), find gpio_port object by container_of() and find adi_pinctrl by pin control device name. - Handle peripheral and gpio requests in pinctrl operation functions. - Demux gpio IRQs via the irq_domain created by each GPIO port. v2-changes: - Remove unlinke() directive. v3-changes: - Rename struct adi_pmx to adi_pinctrl. - Fix the comments of struct gpio_pint. - Remove unused pin_base in struct gpio_port. - Change pint_assign into bool type. - Add comments about the relationship between pint device and port device to the driver header. - Use BIT macro to shift bit. - Remove all bitmap reservation help functions. Inline reservation functions into the actual code. - Remove gpio and offset mutual reference help functions. - Remove all help functions to find gpio_port and adi_pinctrl structs. Get range by pinctrl_find_gpio_range_from_pin(), find gpio_port object by container_of() and find adi_pinctrl by pin control device name. - Pass bool type usage variable to port_setup help function. - Separate long bit operations into several lines and add comments. - Use debugfs to output all GPIO request information. - Avoid to set drvdata to NULL - Add explanation to function adi_gpio_init_int() - Call gpiochip_add_pin_range() in gpio device probe function to register range cross reference between gpio device and pin control device. - Remove the reference to pin control device from the gpio_port struct. Remove the reference list to gpio device from the adi_pinctrl struct. Replace the global adi_pinctrl list with adi_gpio_port_list. Walk through the gpio list to do power suspend and resume operations. - Remove the global GPIO base from struct adi_pinctrl, define pin base in the platform data for each GPIO port device. - Initialize adi_pinctrl_setup in arch_initcall(). - print the status of triggers, whether it is in GPIO mode, if it is flagged to be used as IRQ, etc in adi_pin_dbg_show(). - Create the plug-in subdrivers to hold the pinctrl soc data for bf54x and bf60x. Add soc data into struct adi_pinctrl. Initialize the soc data in pin controller probe function. Get the pin groups and functions via the soc data reference. v4-changes: - remove useless system_state checking. - replace dev_err with dev_warn in both irq and gpio pin cases. - comment on relationship between irq type and invert operation. - It is not necessary to check the reservation mode of the requested pin in IRQ chip operation. Remove the reservation map. - Use existing gpio/pinctrl subsystem debugfs files. Remove pinctrl-adi2 driver specific debugfs output. - Add linkport group and function information for bf60x. - Separate uart and ctsrts pins into 2 groups. - Separate APAPI and alternative ATAPI pins into 2 groups. Signed-off-by: Sonic Zhang <sonic.zhang@analog.com> Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
66 lines
2.8 KiB
Makefile
66 lines
2.8 KiB
Makefile
# generic pinmux support
|
|
|
|
ccflags-$(CONFIG_DEBUG_PINCTRL) += -DDEBUG
|
|
|
|
obj-$(CONFIG_PINCTRL) += core.o pinctrl-utils.o
|
|
obj-$(CONFIG_PINMUX) += pinmux.o
|
|
obj-$(CONFIG_PINCONF) += pinconf.o
|
|
ifeq ($(CONFIG_OF),y)
|
|
obj-$(CONFIG_PINCTRL) += devicetree.o
|
|
endif
|
|
obj-$(CONFIG_GENERIC_PINCONF) += pinconf-generic.o
|
|
obj-$(CONFIG_PINCTRL_ABX500) += pinctrl-abx500.o
|
|
obj-$(CONFIG_PINCTRL_AB8500) += pinctrl-ab8500.o
|
|
obj-$(CONFIG_PINCTRL_AB8540) += pinctrl-ab8540.o
|
|
obj-$(CONFIG_PINCTRL_AB9540) += pinctrl-ab9540.o
|
|
obj-$(CONFIG_PINCTRL_AB8505) += pinctrl-ab8505.o
|
|
obj-$(CONFIG_PINCTRL_ADI2) += pinctrl-adi2.o
|
|
obj-$(CONFIG_PINCTRL_BF54x) += pinctrl-adi2-bf54x.o
|
|
obj-$(CONFIG_PINCTRL_BF60x) += pinctrl-adi2-bf60x.o
|
|
obj-$(CONFIG_PINCTRL_AT91) += pinctrl-at91.o
|
|
obj-$(CONFIG_PINCTRL_BCM2835) += pinctrl-bcm2835.o
|
|
obj-$(CONFIG_PINCTRL_BAYTRAIL) += pinctrl-baytrail.o
|
|
obj-$(CONFIG_PINCTRL_IMX) += pinctrl-imx.o
|
|
obj-$(CONFIG_PINCTRL_IMX35) += pinctrl-imx35.o
|
|
obj-$(CONFIG_PINCTRL_IMX51) += pinctrl-imx51.o
|
|
obj-$(CONFIG_PINCTRL_IMX53) += pinctrl-imx53.o
|
|
obj-$(CONFIG_PINCTRL_IMX6Q) += pinctrl-imx6q.o
|
|
obj-$(CONFIG_PINCTRL_IMX6Q) += pinctrl-imx6dl.o
|
|
obj-$(CONFIG_PINCTRL_IMX6SL) += pinctrl-imx6sl.o
|
|
obj-$(CONFIG_PINCTRL_FALCON) += pinctrl-falcon.o
|
|
obj-$(CONFIG_PINCTRL_MXS) += pinctrl-mxs.o
|
|
obj-$(CONFIG_PINCTRL_IMX23) += pinctrl-imx23.o
|
|
obj-$(CONFIG_PINCTRL_IMX28) += pinctrl-imx28.o
|
|
obj-$(CONFIG_PINCTRL_NOMADIK) += pinctrl-nomadik.o
|
|
obj-$(CONFIG_PINCTRL_STN8815) += pinctrl-nomadik-stn8815.o
|
|
obj-$(CONFIG_PINCTRL_DB8500) += pinctrl-nomadik-db8500.o
|
|
obj-$(CONFIG_PINCTRL_DB8540) += pinctrl-nomadik-db8540.o
|
|
obj-$(CONFIG_PINCTRL_PALMAS) += pinctrl-palmas.o
|
|
obj-$(CONFIG_PINCTRL_ROCKCHIP) += pinctrl-rockchip.o
|
|
obj-$(CONFIG_PINCTRL_SINGLE) += pinctrl-single.o
|
|
obj-$(CONFIG_PINCTRL_SIRF) += sirf/
|
|
obj-$(CONFIG_PINCTRL_SUNXI) += pinctrl-sunxi.o
|
|
obj-$(CONFIG_PINCTRL_TEGRA) += pinctrl-tegra.o
|
|
obj-$(CONFIG_PINCTRL_TEGRA20) += pinctrl-tegra20.o
|
|
obj-$(CONFIG_PINCTRL_TEGRA30) += pinctrl-tegra30.o
|
|
obj-$(CONFIG_PINCTRL_TEGRA114) += pinctrl-tegra114.o
|
|
obj-$(CONFIG_PINCTRL_TZ1090) += pinctrl-tz1090.o
|
|
obj-$(CONFIG_PINCTRL_TZ1090_PDC) += pinctrl-tz1090-pdc.o
|
|
obj-$(CONFIG_PINCTRL_U300) += pinctrl-u300.o
|
|
obj-$(CONFIG_PINCTRL_COH901) += pinctrl-coh901.o
|
|
obj-$(CONFIG_PINCTRL_SAMSUNG) += pinctrl-samsung.o
|
|
obj-$(CONFIG_PINCTRL_EXYNOS) += pinctrl-exynos.o
|
|
obj-$(CONFIG_PINCTRL_EXYNOS5440) += pinctrl-exynos5440.o
|
|
obj-$(CONFIG_PINCTRL_S3C24XX) += pinctrl-s3c24xx.o
|
|
obj-$(CONFIG_PINCTRL_S3C64XX) += pinctrl-s3c64xx.o
|
|
obj-$(CONFIG_PINCTRL_XWAY) += pinctrl-xway.o
|
|
obj-$(CONFIG_PINCTRL_LANTIQ) += pinctrl-lantiq.o
|
|
obj-$(CONFIG_PINCTRL_ST) += pinctrl-st.o
|
|
obj-$(CONFIG_PINCTRL_VF610) += pinctrl-vf610.o
|
|
|
|
obj-$(CONFIG_PLAT_ORION) += mvebu/
|
|
obj-$(CONFIG_ARCH_SHMOBILE) += sh-pfc/
|
|
obj-$(CONFIG_SUPERH) += sh-pfc/
|
|
obj-$(CONFIG_PLAT_SPEAR) += spear/
|
|
obj-$(CONFIG_ARCH_VT8500) += vt8500/
|