Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

gpio: samsung: Remove OF support for s3c24xx

There is no users of this code and there is already a pinctrl
driver written for s3c24xx which is going to be used on any
s3c24xx DT platforms. Hence this has been effectively a dead
code in mainline.

This reverts commit 172c6a13653ac8cd6a231293b87c93821e90c1d6
gpio: samsung: add devicetree init for s3c24xx arches

Signed-off-by: Sylwester Nawrocki <s.nawrocki@samsung.com>
Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
Acked-by: Heiko Stuebner <heiko@sntech.de>
Acked-by: Linus Walleij <linus.walleij@linaro.org>
Signed-off-by: Kukjin Kim <kgene.kim@samsung.com>

authored by

Sylwester Nawrocki and committed by
Kukjin Kim
9fdb27d4 f722406f

-106
-43
Documentation/devicetree/bindings/gpio/gpio-samsung.txt
··· 39 39 #gpio-cells = <4>; 40 40 gpio-controller; 41 41 }; 42 - 43 - 44 - Samsung S3C24XX GPIO Controller 45 - 46 - Required properties: 47 - - compatible: Compatible property value should be "samsung,s3c24xx-gpio". 48 - 49 - - reg: Physical base address of the controller and length of memory mapped 50 - region. 51 - 52 - - #gpio-cells: Should be 3. The syntax of the gpio specifier used by client nodes 53 - should be the following with values derived from the SoC user manual. 54 - <[phandle of the gpio controller node] 55 - [pin number within the gpio controller] 56 - [mux function] 57 - [flags and pull up/down] 58 - 59 - Values for gpio specifier: 60 - - Pin number: depending on the controller a number from 0 up to 15. 61 - - Mux function: Depending on the SoC and the gpio bank the gpio can be set 62 - as input, output or a special function 63 - - Flags and Pull Up/Down: the values to use differ for the individual SoCs 64 - example S3C2416/S3C2450: 65 - 0 - Pull Up/Down Disabled. 66 - 1 - Pull Down Enabled. 67 - 2 - Pull Up Enabled. 68 - Bit 16 (0x00010000) - Input is active low. 69 - Consult the user manual for the correct values of Mux and Pull Up/Down. 70 - 71 - - gpio-controller: Specifies that the node is a gpio controller. 72 - - #address-cells: should be 1. 73 - - #size-cells: should be 1. 74 - 75 - Example: 76 - 77 - gpa: gpio-controller@56000000 { 78 - #address-cells = <1>; 79 - #size-cells = <1>; 80 - compatible = "samsung,s3c24xx-gpio"; 81 - reg = <0x56000000 0x10>; 82 - #gpio-cells = <3>; 83 - gpio-controller; 84 - };
-63
drivers/gpio/gpio-samsung.c
··· 933 933 s3c_gpiolib_track(chip); 934 934 } 935 935 936 - #if defined(CONFIG_PLAT_S3C24XX) && defined(CONFIG_OF) 937 - static int s3c24xx_gpio_xlate(struct gpio_chip *gc, 938 - const struct of_phandle_args *gpiospec, u32 *flags) 939 - { 940 - unsigned int pin; 941 - 942 - if (WARN_ON(gc->of_gpio_n_cells < 3)) 943 - return -EINVAL; 944 - 945 - if (WARN_ON(gpiospec->args_count < gc->of_gpio_n_cells)) 946 - return -EINVAL; 947 - 948 - if (gpiospec->args[0] > gc->ngpio) 949 - return -EINVAL; 950 - 951 - pin = gc->base + gpiospec->args[0]; 952 - 953 - if (s3c_gpio_cfgpin(pin, S3C_GPIO_SFN(gpiospec->args[1]))) 954 - pr_warn("gpio_xlate: failed to set pin function\n"); 955 - if (s3c_gpio_setpull(pin, gpiospec->args[2] & 0xffff)) 956 - pr_warn("gpio_xlate: failed to set pin pull up/down\n"); 957 - 958 - if (flags) 959 - *flags = gpiospec->args[2] >> 16; 960 - 961 - return gpiospec->args[0]; 962 - } 963 - 964 - static const struct of_device_id s3c24xx_gpio_dt_match[] __initdata = { 965 - { .compatible = "samsung,s3c24xx-gpio", }, 966 - {} 967 - }; 968 - 969 - static __init void s3c24xx_gpiolib_attach_ofnode(struct samsung_gpio_chip *chip, 970 - u64 base, u64 offset) 971 - { 972 - struct gpio_chip *gc = &chip->chip; 973 - u64 address; 974 - 975 - if (!of_have_populated_dt()) 976 - return; 977 - 978 - address = chip->base ? base + ((u32)chip->base & 0xfff) : base + offset; 979 - gc->of_node = of_find_matching_node_by_address(NULL, 980 - s3c24xx_gpio_dt_match, address); 981 - if (!gc->of_node) { 982 - pr_info("gpio: device tree node not found for gpio controller" 983 - " with base address %08llx\n", address); 984 - return; 985 - } 986 - gc->of_gpio_n_cells = 3; 987 - gc->of_xlate = s3c24xx_gpio_xlate; 988 - } 989 - #else 990 - static __init void s3c24xx_gpiolib_attach_ofnode(struct samsung_gpio_chip *chip, 991 - u64 base, u64 offset) 992 - { 993 - return; 994 - } 995 - #endif /* defined(CONFIG_PLAT_S3C24XX) && defined(CONFIG_OF) */ 996 - 997 936 static void __init s3c24xx_gpiolib_add_chips(struct samsung_gpio_chip *chip, 998 937 int nr_chips, void __iomem *base) 999 938 { ··· 957 1018 gc->direction_output = samsung_gpiolib_2bit_output; 958 1019 959 1020 samsung_gpiolib_add(chip); 960 - 961 - s3c24xx_gpiolib_attach_ofnode(chip, S3C24XX_PA_GPIO, i * 0x10); 962 1021 } 963 1022 } 964 1023