[GIT PULL] pin control changes for the v5.10 kernel series

From: Linus Walleij
Date: Wed Oct 14 2020 - 08:58:35 EST


Hi Linus,

here is the bulk of pin control changes for the v5.10 kernel
cycle.

There is nothing special to say about it at all. It should even
just merge fine, only driver changes, some new, some
incremental development.

Please pull it in!

Yours,
Linus Walleij

The following changes since commit 9123e3a74ec7b934a4a099e98af6a61c2f80bbf5:

Linux 5.9-rc1 (2020-08-16 13:04:57 -0700)

are available in the Git repository at:

git://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-pinctrl.git
tags/pinctrl-v5.10-1

for you to fetch changes up to 55596c5445566cf43b83238198fd038d21172d99:

pinctrl: amd: Add missing pins to the pin group list (2020-10-07
15:37:17 +0200)

----------------------------------------------------------------
Pin control bulk changes for the v5.10 kernel cycle

Core changes:

- NONE whatsoever, we don't even touch the core files this
time around.

New drivers:

- New driver for the Toshiba Visconti SoC.

- New subdriver for the Qualcomm MSM8226 SoC.

- New subdriver for the Actions Semiconductor S500 SoC.

- New subdriver for the Mediatek MT8192 SoC.

- New subdriver for the Microchip SAMA7G5 SoC.

Driver enhancements:

- Intel Cherryview and Baytrail cleanups and refactorings.

- Enhanced support for the Renesas R8A7790, more pins and
groups.

- Some optimizations for the MCP23S08 MCP23x17 variant.

- Some cleanups around the Actions Semiconductor subdrivers.

- A bunch of cleanups around the SH-PFC and Emma Mobile
drivers.

- The "SH-PFC" (literally SuperH pin function controller, I
think) subdirectory is now renamed to the more neutral
"renesas", as these are not very much centered around
SuperH anymore.

- Non-critical fixes for the Aspeed driver.

- Non-critical fixes for the Ingenic (MIPS!) driver.

- Fix a bunch of missing pins on the AMD pinctrl driver.

----------------------------------------------------------------
Andrew Halaney (1):
pinctrl: nomadik: Fix pull direction debug info

Andrew Jeffery (3):
pinctrl: aspeed: Format pinconf debug consistent with pinmux
pinctrl: aspeed: Use the right pinconf mask
pinctrl: aspeed-g6: Add bias controls for 1.8V GPIO banks

Andy Shevchenko (12):
pinctrl: cherryview: Drop stale comment
pinctrl: cherryview: Move custom community members to separate data struct
pinctrl: cherryview: Switch to use struct intel_pinctrl
pinctrl: cherryview: Utilize temporary variable to hold device pointer
pinctrl: intel: Extract intel_pinctrl_get_soc_data() helper for wider use
pinctrl: baytrail: Switch to use intel_pinctrl_get_soc_data()
pinctrl: cherryview: Switch to use intel_pinctrl_get_soc_data()
pinctrl: intel: Update header block to reflect direct dependencies
pinctrl: mcp23s08: Improve error messaging in ->probe()
pinctrl: tigerlake: Fix register offsets for TGL-H variant
pinctrl: cannonlake: Modify COMMUNITY macros to be consistent
pinctrl: sunrisepoint: Modify COMMUNITY macros to be consistent

Anson Huang (3):
pinctrl: imx: Use function callbacks for SCU related functions
pinctrl: imx: Support building SCU pinctrl core driver as module
pinctrl: imx: Support building i.MX pinctrl core driver as module

Bartosz Dudziak (2):
dt-bindings: pinctrl: qcom: Add msm8226 pinctrl bindings
pinctrl: qcom: Add msm8226 pinctrl driver.

Chuanhong Guo (1):
pinctrl: mediatek: mt7622: add antsel pins/groups

Clément Péron (1):
dt-bindings: pinctrl: sunxi: Allow pinctrl with more interrupt banks

Cristian Ciocaltea (3):
dt-bindings: pinctrl: Add bindings for Actions S500 SoC
pinctrl: actions: Add Actions S500 pinctrl driver
MAINTAINERS: Set pinctrl binding entry for all Actions Semi Owl SoCs

Drew Fustini (3):
pinctrl: Document pinctrl-single,pins when #pinctrl-cells = 2
pinctrl: single: fix pinctrl_spec.args_count bounds check
pinctrl: single: fix debug output when #pinctrl-cells = 2

Enric Balletbo i Serra (1):
pinctrl: mediatek: Free eint data on failure

Eugen Hristev (2):
dt-bindings: pinctrl: at91-pio4: add microchip,sama7g5
pinctrl: at91-pio4: add support for sama7g5 SoC

Fabien Parent (2):
pinctrl: mt65xx: add OF bindings for MT8167
pinctrl: mediatek: Add MT8167 Pinctrl driver

Geert Uytterhoeven (9):
dt-bindings: pinctrl: sh-pfc: Convert to json-schema
pinctrl: rza1: Switch to using "output-enable"
dt-bindings: pinctrl: renesas,rza2-pinctrl: Fix pin controller node name
dt-bindings: pinctrl: rza1: Convert to json-schema
dt-bindings: pinctrl: rzn1: Convert to json-schema
pinctrl: rzn1: Do not select GENERIC_PIN{CTRL_GROUPS,MUX_FUNCTIONS}
pinctrl: Rename sh-pfc to renesas
pinctrl: renesas: Reintroduce SH_PFC for common sh-pfc code
pinctrl: visconti: PINCTRL_TMPV7700 should depend on ARCH_VISCONTI

Hans de Goede (1):
pinctrl: cherryview: Preserve CHV_PADCTRL1_INVRXTX_TXDATA flag on GPIOs

Heiko Stuebner (1):
pinctrl: rockchip: depend on OF

Krzysztof Kozlowski (1):
dt-bindings: pinctrl: renesas,pfc: align example GPIO hog name
with dtschema

Kuninori Morimoto (4):
pinctrl: sh-pfc: Tidy up Emma Mobile EV2
pinctrl: sh-pfc: Collect Renesas related CONFIGs in one place
pinctrl: sh-pfc: Align driver description title
pinctrl: sh-pfc: Tidy up driver description title

Lad Prabhakar (2):
pinctrl: sh-pfc: r8a7790: Add USB1 PWEN pin and group
pinctrl: sh-pfc: r8a7790: Add CAN pins, groups and functions

Linus Walleij (2):
Merge tag 'renesas-pinctrl-for-v5.10-tag1' of
git://git.kernel.org/.../geert/renesas-drivers into devel
Merge tag 'intel-pinctrl-v5.10-1' of
git://git.kernel.org/.../pinctrl/intel into devel

Liu Shixin (2):
pinctrl: sprd: use module_platform_driver to simplify the code
pinctrl: spear: simplify the return expression of spear310_pinctrl_probe

Martin DEVERA (1):
pinctrl: sx150x: Fix pinctrl enablement order bug

Nobuhiro Iwamatsu (2):
pinctrl: Add DT bindings for Toshiba Visconti TMPV7700 SoC
pinctrl: visconti: Add Toshiba Visconti SoCs pinctrl support

Pali Rohár (1):
pinctrl: armada-37xx: Add comment for pcie1_reset pin group

Qinglang Miao (2):
pinctrl: spear: simplify the return expression of tvc_connect()
pinctrl: ocelot: simplify the return expression of
ocelot_gpiochip_register()

Rikard Falkeborn (4):
pinctrl: actions: pinctrl-owl: Constify owl_pinctrl_ops and owl_pinmux_ops
pinctrl: actions: pinctrl-s700: Constify s700_padinfo[]
pinctrl: actions: pinctrl-s900: Constify s900_padinfo[]
pinctrl: nuvoton: npcm7xx: Constify static ops structs

Shyam Sundar S K (1):
pinctrl: amd: Add missing pins to the pin group list

Thierry Reding (1):
pinctrl: devicetree: Keep deferring even on timeout

Thomas Preston (2):
pinctrl: mcp23s08: Fix mcp23x17_regmap initialiser
pinctrl: mcp23s08: Fix mcp23x17 precious range

Wang Xiaojun (1):
pinctrl: mediatek: use devm_platform_ioremap_resource_byname()

Yangtao Li (3):
dt-bindings: pinctrl: sunxi: Get rid of continual nesting
dt-bindings: pinctrl: sunxi: Add A100 pinctrl bindings
pinctrl: sunxi: add support for the Allwinner A100 pin controller

Zhiyong Tao (3):
dt-bindings: pinctrl: mt8192: add pinctrl file
dt-bindings: pinctrl: mt8192: add binding document
pinctrl: mediatek: Add pinctrl driver for mt8192

周琰杰 (Zhou Yanjie) (3):
pinctrl: Ingenic: Add SSI pins support for JZ4770 and JZ4780.
pinctrl: Ingenic: Correct the pullup and pulldown parameters of JZ4780.
pinctrl: Ingenic: Add I2S pins support for Ingenic SoCs.

.../bindings/pinctrl/actions,s500-pinctrl.yaml | 240 +++
.../pinctrl/allwinner,sun4i-a10-pinctrl.yaml | 141 +-
.../bindings/pinctrl/atmel,at91-pio4-pinctrl.txt | 4 +-
.../devicetree/bindings/pinctrl/pinctrl-mt65xx.txt | 1 +
.../bindings/pinctrl/pinctrl-mt8192.yaml | 155 ++
.../devicetree/bindings/pinctrl/pinctrl-single.txt | 21 +-
.../bindings/pinctrl/qcom,msm8226-pinctrl.yaml | 132 ++
.../bindings/pinctrl/renesas,pfc-pinctrl.txt | 188 --
.../devicetree/bindings/pinctrl/renesas,pfc.yaml | 193 ++
.../bindings/pinctrl/renesas,rza1-pinctrl.txt | 223 --
.../bindings/pinctrl/renesas,rza1-ports.yaml | 190 ++
.../bindings/pinctrl/renesas,rza2-pinctrl.yaml | 2 +-
.../bindings/pinctrl/renesas,rzn1-pinctrl.txt | 153 --
.../bindings/pinctrl/renesas,rzn1-pinctrl.yaml | 129 ++
.../bindings/pinctrl/toshiba,visconti-pinctrl.yaml | 92 +
MAINTAINERS | 7 +-
arch/arm64/boot/dts/marvell/armada-37xx.dtsi | 2 +-
drivers/pinctrl/Kconfig | 37 +-
drivers/pinctrl/Makefile | 6 +-
drivers/pinctrl/actions/Kconfig | 6 +
drivers/pinctrl/actions/Makefile | 1 +
drivers/pinctrl/actions/pinctrl-owl.c | 4 +-
drivers/pinctrl/actions/pinctrl-s500.c | 1727 +++++++++++++++
drivers/pinctrl/actions/pinctrl-s700.c | 2 +-
drivers/pinctrl/actions/pinctrl-s900.c | 2 +-
drivers/pinctrl/aspeed/pinctrl-aspeed-g6.c | 17 +
drivers/pinctrl/aspeed/pinctrl-aspeed.c | 8 +-
drivers/pinctrl/devicetree.c | 5 +-
drivers/pinctrl/freescale/Kconfig | 5 +-
drivers/pinctrl/freescale/pinctrl-imx.c | 13 +-
drivers/pinctrl/freescale/pinctrl-imx.h | 57 +-
drivers/pinctrl/freescale/pinctrl-imx8dxl.c | 3 +
drivers/pinctrl/freescale/pinctrl-imx8qm.c | 3 +
drivers/pinctrl/freescale/pinctrl-imx8qxp.c | 3 +
drivers/pinctrl/freescale/pinctrl-scu.c | 5 +
drivers/pinctrl/intel/Kconfig | 12 +-
drivers/pinctrl/intel/pinctrl-baytrail.c | 24 +-
drivers/pinctrl/intel/pinctrl-cannonlake.c | 22 +-
drivers/pinctrl/intel/pinctrl-cherryview.c | 184 +-
drivers/pinctrl/intel/pinctrl-intel.c | 24 +-
drivers/pinctrl/intel/pinctrl-intel.h | 7 +-
drivers/pinctrl/intel/pinctrl-sunrisepoint.c | 60 +-
drivers/pinctrl/intel/pinctrl-tigerlake.c | 42 +-
drivers/pinctrl/mediatek/Kconfig | 14 +
drivers/pinctrl/mediatek/Makefile | 2 +
drivers/pinctrl/mediatek/pinctrl-moore.c | 11 +-
drivers/pinctrl/mediatek/pinctrl-mt7622.c | 103 +
drivers/pinctrl/mediatek/pinctrl-mt8167.c | 362 ++++
drivers/pinctrl/mediatek/pinctrl-mt8192.c | 1409 ++++++++++++
drivers/pinctrl/mediatek/pinctrl-mtk-common-v2.c | 31 +-
drivers/pinctrl/mediatek/pinctrl-mtk-mt8167.h | 1248 +++++++++++
drivers/pinctrl/mediatek/pinctrl-mtk-mt8192.h | 2275 ++++++++++++++++++++
drivers/pinctrl/mediatek/pinctrl-paris.c | 11 +-
drivers/pinctrl/mvebu/pinctrl-armada-37xx.c | 2 +-
drivers/pinctrl/nomadik/pinctrl-nomadik.c | 16 +-
drivers/pinctrl/nuvoton/pinctrl-npcm7xx.c | 6 +-
drivers/pinctrl/pinctrl-amd.h | 69 +-
drivers/pinctrl/pinctrl-at91-pio4.c | 7 +
drivers/pinctrl/pinctrl-ingenic.c | 349 ++-
drivers/pinctrl/pinctrl-mcp23s08.c | 47 +-
drivers/pinctrl/pinctrl-ocelot.c | 8 +-
drivers/pinctrl/pinctrl-single.c | 4 +-
drivers/pinctrl/pinctrl-sx150x.c | 17 +-
drivers/pinctrl/qcom/Kconfig | 9 +
drivers/pinctrl/qcom/Makefile | 1 +
drivers/pinctrl/qcom/pinctrl-msm8226.c | 630 ++++++
drivers/pinctrl/{sh-pfc => renesas}/Kconfig | 238 +-
drivers/pinctrl/{sh-pfc => renesas}/Makefile | 8 +-
drivers/pinctrl/{sh-pfc => renesas}/core.c | 0
drivers/pinctrl/{sh-pfc => renesas}/core.h | 0
drivers/pinctrl/{sh-pfc => renesas}/gpio.c | 0
drivers/pinctrl/{sh-pfc => renesas}/pfc-emev2.c | 0
drivers/pinctrl/{sh-pfc => renesas}/pfc-r8a73a4.c | 0
drivers/pinctrl/{sh-pfc => renesas}/pfc-r8a7740.c | 0
drivers/pinctrl/{sh-pfc => renesas}/pfc-r8a77470.c | 0
drivers/pinctrl/{sh-pfc => renesas}/pfc-r8a7778.c | 0
drivers/pinctrl/{sh-pfc => renesas}/pfc-r8a7779.c | 0
drivers/pinctrl/{sh-pfc => renesas}/pfc-r8a7790.c | 121 +-
drivers/pinctrl/{sh-pfc => renesas}/pfc-r8a7791.c | 0
drivers/pinctrl/{sh-pfc => renesas}/pfc-r8a7792.c | 0
drivers/pinctrl/{sh-pfc => renesas}/pfc-r8a7794.c | 0
drivers/pinctrl/{sh-pfc => renesas}/pfc-r8a77950.c | 0
drivers/pinctrl/{sh-pfc => renesas}/pfc-r8a77951.c | 0
drivers/pinctrl/{sh-pfc => renesas}/pfc-r8a7796.c | 2 +-
drivers/pinctrl/{sh-pfc => renesas}/pfc-r8a77965.c | 2 +-
drivers/pinctrl/{sh-pfc => renesas}/pfc-r8a77970.c | 2 +-
drivers/pinctrl/{sh-pfc => renesas}/pfc-r8a77980.c | 2 +-
drivers/pinctrl/{sh-pfc => renesas}/pfc-r8a77990.c | 2 +-
drivers/pinctrl/{sh-pfc => renesas}/pfc-r8a77995.c | 2 +-
drivers/pinctrl/{sh-pfc => renesas}/pfc-sh7203.c | 0
drivers/pinctrl/{sh-pfc => renesas}/pfc-sh7264.c | 0
drivers/pinctrl/{sh-pfc => renesas}/pfc-sh7269.c | 0
drivers/pinctrl/{sh-pfc => renesas}/pfc-sh73a0.c | 0
drivers/pinctrl/{sh-pfc => renesas}/pfc-sh7720.c | 0
drivers/pinctrl/{sh-pfc => renesas}/pfc-sh7722.c | 0
drivers/pinctrl/{sh-pfc => renesas}/pfc-sh7723.c | 0
drivers/pinctrl/{sh-pfc => renesas}/pfc-sh7724.c | 0
drivers/pinctrl/{sh-pfc => renesas}/pfc-sh7734.c | 0
drivers/pinctrl/{sh-pfc => renesas}/pfc-sh7757.c | 0
drivers/pinctrl/{sh-pfc => renesas}/pfc-sh7785.c | 0
drivers/pinctrl/{sh-pfc => renesas}/pfc-sh7786.c | 0
drivers/pinctrl/{sh-pfc => renesas}/pfc-shx3.c | 0
drivers/pinctrl/{ => renesas}/pinctrl-rza1.c | 11 +-
drivers/pinctrl/{ => renesas}/pinctrl-rza2.c | 4 +-
drivers/pinctrl/{ => renesas}/pinctrl-rzn1.c | 6 +-
drivers/pinctrl/{sh-pfc => renesas}/pinctrl.c | 0
drivers/pinctrl/{sh-pfc => renesas}/sh_pfc.h | 0
drivers/pinctrl/spear/pinctrl-spear310.c | 8 +-
drivers/pinctrl/spear/pinctrl-spear320.c | 8 +-
drivers/pinctrl/sprd/pinctrl-sprd-sc9860.c | 13 +-
drivers/pinctrl/sunxi/Kconfig | 10 +
drivers/pinctrl/sunxi/Makefile | 2 +
drivers/pinctrl/sunxi/pinctrl-sun50i-a100-r.c | 105 +
drivers/pinctrl/sunxi/pinctrl-sun50i-a100.c | 708 ++++++
drivers/pinctrl/visconti/Kconfig | 14 +
drivers/pinctrl/visconti/Makefile | 3 +
drivers/pinctrl/visconti/pinctrl-common.c | 305 +++
drivers/pinctrl/visconti/pinctrl-common.h | 96 +
drivers/pinctrl/visconti/pinctrl-tmpv7700.c | 355 +++
include/dt-bindings/pinctrl/mt8192-pinfunc.h | 1344 ++++++++++++
120 files changed, 13017 insertions(+), 1137 deletions(-)
create mode 100644
Documentation/devicetree/bindings/pinctrl/actions,s500-pinctrl.yaml
create mode 100644
Documentation/devicetree/bindings/pinctrl/pinctrl-mt8192.yaml
create mode 100644
Documentation/devicetree/bindings/pinctrl/qcom,msm8226-pinctrl.yaml
delete mode 100644
Documentation/devicetree/bindings/pinctrl/renesas,pfc-pinctrl.txt
create mode 100644 Documentation/devicetree/bindings/pinctrl/renesas,pfc.yaml
delete mode 100644
Documentation/devicetree/bindings/pinctrl/renesas,rza1-pinctrl.txt
create mode 100644
Documentation/devicetree/bindings/pinctrl/renesas,rza1-ports.yaml
delete mode 100644
Documentation/devicetree/bindings/pinctrl/renesas,rzn1-pinctrl.txt
create mode 100644
Documentation/devicetree/bindings/pinctrl/renesas,rzn1-pinctrl.yaml
create mode 100644
Documentation/devicetree/bindings/pinctrl/toshiba,visconti-pinctrl.yaml
create mode 100644 drivers/pinctrl/actions/pinctrl-s500.c
create mode 100644 drivers/pinctrl/mediatek/pinctrl-mt8167.c
create mode 100644 drivers/pinctrl/mediatek/pinctrl-mt8192.c
create mode 100644 drivers/pinctrl/mediatek/pinctrl-mtk-mt8167.h
create mode 100644 drivers/pinctrl/mediatek/pinctrl-mtk-mt8192.h
create mode 100644 drivers/pinctrl/qcom/pinctrl-msm8226.c
rename drivers/pinctrl/{sh-pfc => renesas}/Kconfig (51%)
rename drivers/pinctrl/{sh-pfc => renesas}/Makefile (92%)
rename drivers/pinctrl/{sh-pfc => renesas}/core.c (100%)
rename drivers/pinctrl/{sh-pfc => renesas}/core.h (100%)
rename drivers/pinctrl/{sh-pfc => renesas}/gpio.c (100%)
rename drivers/pinctrl/{sh-pfc => renesas}/pfc-emev2.c (100%)
rename drivers/pinctrl/{sh-pfc => renesas}/pfc-r8a73a4.c (100%)
rename drivers/pinctrl/{sh-pfc => renesas}/pfc-r8a7740.c (100%)
rename drivers/pinctrl/{sh-pfc => renesas}/pfc-r8a77470.c (100%)
rename drivers/pinctrl/{sh-pfc => renesas}/pfc-r8a7778.c (100%)
rename drivers/pinctrl/{sh-pfc => renesas}/pfc-r8a7779.c (100%)
rename drivers/pinctrl/{sh-pfc => renesas}/pfc-r8a7790.c (98%)
rename drivers/pinctrl/{sh-pfc => renesas}/pfc-r8a7791.c (100%)
rename drivers/pinctrl/{sh-pfc => renesas}/pfc-r8a7792.c (100%)
rename drivers/pinctrl/{sh-pfc => renesas}/pfc-r8a7794.c (100%)
rename drivers/pinctrl/{sh-pfc => renesas}/pfc-r8a77950.c (100%)
rename drivers/pinctrl/{sh-pfc => renesas}/pfc-r8a77951.c (100%)
rename drivers/pinctrl/{sh-pfc => renesas}/pfc-r8a7796.c (99%)
rename drivers/pinctrl/{sh-pfc => renesas}/pfc-r8a77965.c (99%)
rename drivers/pinctrl/{sh-pfc => renesas}/pfc-r8a77970.c (99%)
rename drivers/pinctrl/{sh-pfc => renesas}/pfc-r8a77980.c (99%)
rename drivers/pinctrl/{sh-pfc => renesas}/pfc-r8a77990.c (99%)
rename drivers/pinctrl/{sh-pfc => renesas}/pfc-r8a77995.c (99%)
rename drivers/pinctrl/{sh-pfc => renesas}/pfc-sh7203.c (100%)
rename drivers/pinctrl/{sh-pfc => renesas}/pfc-sh7264.c (100%)
rename drivers/pinctrl/{sh-pfc => renesas}/pfc-sh7269.c (100%)
rename drivers/pinctrl/{sh-pfc => renesas}/pfc-sh73a0.c (100%)
rename drivers/pinctrl/{sh-pfc => renesas}/pfc-sh7720.c (100%)
rename drivers/pinctrl/{sh-pfc => renesas}/pfc-sh7722.c (100%)
rename drivers/pinctrl/{sh-pfc => renesas}/pfc-sh7723.c (100%)
rename drivers/pinctrl/{sh-pfc => renesas}/pfc-sh7724.c (100%)
rename drivers/pinctrl/{sh-pfc => renesas}/pfc-sh7734.c (100%)
rename drivers/pinctrl/{sh-pfc => renesas}/pfc-sh7757.c (100%)
rename drivers/pinctrl/{sh-pfc => renesas}/pfc-sh7785.c (100%)
rename drivers/pinctrl/{sh-pfc => renesas}/pfc-sh7786.c (100%)
rename drivers/pinctrl/{sh-pfc => renesas}/pfc-shx3.c (100%)
rename drivers/pinctrl/{ => renesas}/pinctrl-rza1.c (99%)
rename drivers/pinctrl/{ => renesas}/pinctrl-rza2.c (99%)
rename drivers/pinctrl/{ => renesas}/pinctrl-rzn1.c (99%)
rename drivers/pinctrl/{sh-pfc => renesas}/pinctrl.c (100%)
rename drivers/pinctrl/{sh-pfc => renesas}/sh_pfc.h (100%)
create mode 100644 drivers/pinctrl/sunxi/pinctrl-sun50i-a100-r.c
create mode 100644 drivers/pinctrl/sunxi/pinctrl-sun50i-a100.c
create mode 100644 drivers/pinctrl/visconti/Kconfig
create mode 100644 drivers/pinctrl/visconti/Makefile
create mode 100644 drivers/pinctrl/visconti/pinctrl-common.c
create mode 100644 drivers/pinctrl/visconti/pinctrl-common.h
create mode 100644 drivers/pinctrl/visconti/pinctrl-tmpv7700.c
create mode 100644 include/dt-bindings/pinctrl/mt8192-pinfunc.h