1*83d290c5STom Rini /* SPDX-License-Identifier: GPL-2.0+ */ 2225f5eecSMinkyu Kang /* 3225f5eecSMinkyu Kang * Copyright (C) 2012 Samsung Electronics 4225f5eecSMinkyu Kang * Abhilash Kesavan <a.kesavan@samsung.com> 5225f5eecSMinkyu Kang */ 6225f5eecSMinkyu Kang 7225f5eecSMinkyu Kang #ifndef __ASM_ARM_ARCH_PINMUX_H 8225f5eecSMinkyu Kang #define __ASM_ARM_ARCH_PINMUX_H 9225f5eecSMinkyu Kang 10225f5eecSMinkyu Kang #include "periph.h" 11225f5eecSMinkyu Kang 12225f5eecSMinkyu Kang /* 13225f5eecSMinkyu Kang * Flags for setting specific configarations of peripherals. 14225f5eecSMinkyu Kang * List will grow with support for more devices getting added. 15225f5eecSMinkyu Kang */ 16225f5eecSMinkyu Kang enum { 17225f5eecSMinkyu Kang PINMUX_FLAG_NONE = 0x00000000, 18225f5eecSMinkyu Kang 19225f5eecSMinkyu Kang /* Flags for eMMC */ 20225f5eecSMinkyu Kang PINMUX_FLAG_8BIT_MODE = 1 << 0, /* SDMMC 8-bit mode */ 21225f5eecSMinkyu Kang 22225f5eecSMinkyu Kang /* Flags for SROM controller */ 23225f5eecSMinkyu Kang PINMUX_FLAG_BANK = 3 << 0, /* bank number (0-3) */ 24225f5eecSMinkyu Kang PINMUX_FLAG_16BIT = 1 << 2, /* 16-bit width */ 25225f5eecSMinkyu Kang }; 26225f5eecSMinkyu Kang 27225f5eecSMinkyu Kang /** 28225f5eecSMinkyu Kang * Configures the pinmux for a particular peripheral. 29225f5eecSMinkyu Kang * 30225f5eecSMinkyu Kang * Each gpio can be configured in many different ways (4 bits on exynos) 31225f5eecSMinkyu Kang * such as "input", "output", "special function", "external interrupt" 32225f5eecSMinkyu Kang * etc. This function will configure the peripheral pinmux along with 33225f5eecSMinkyu Kang * pull-up/down and drive strength. 34225f5eecSMinkyu Kang * 35225f5eecSMinkyu Kang * @param peripheral peripheral to be configured 36225f5eecSMinkyu Kang * @param flags configure flags 37225f5eecSMinkyu Kang * @return 0 if ok, -1 on error (e.g. unsupported peripheral) 38225f5eecSMinkyu Kang */ 39225f5eecSMinkyu Kang int exynos_pinmux_config(int peripheral, int flags); 40225f5eecSMinkyu Kang 41225f5eecSMinkyu Kang /** 42225f5eecSMinkyu Kang * Decode the peripheral id using the interrpt numbers. 43225f5eecSMinkyu Kang * 44225f5eecSMinkyu Kang * @param blob Device tree blob 45225f5eecSMinkyu Kang * @param node FDT I2C node to find 46225f5eecSMinkyu Kang * @return peripheral id if ok, PERIPH_ID_NONE on error 47225f5eecSMinkyu Kang */ 48225f5eecSMinkyu Kang int pinmux_decode_periph_id(const void *blob, int node); 49225f5eecSMinkyu Kang #endif 50