1/* 2 * Coldfire generic GPIO support 3 * 4 * (C) Copyright 2009, Steven King <sfking@fdwdc.com> 5 * 6 * This program is free software; you can redistribute it and/or modify 7 * it under the terms of the GNU General Public License as published by 8 * the Free Software Foundation; version 2 of the License. 9 * 10 * This program is distributed in the hope that it will be useful, 11 * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 * GNU General Public License for more details. 14*/ 15 16#include <linux/kernel.h> 17#include <linux/init.h> 18 19#include <asm/coldfire.h> 20#include <asm/mcfsim.h> 21#include <asm/mcfgpio.h> 22 23static struct mcf_gpio_chip mcf_gpio_chips[] = { 24 { 25 .gpio_chip = { 26 .label = "PP", 27 .request = mcf_gpio_request, 28 .free = mcf_gpio_free, 29 .direction_input = mcf_gpio_direction_input, 30 .direction_output = mcf_gpio_direction_output, 31 .get = mcf_gpio_get_value, 32 .set = mcf_gpio_set_value, 33 .ngpio = 16, 34 }, 35 .pddr = MCFSIM_PADDR, 36 .podr = MCFSIM_PADAT, 37 .ppdr = MCFSIM_PADAT, 38 }, 39}; 40 41static int __init mcf_gpio_init(void) 42{ 43 unsigned i = 0; 44 while (i < ARRAY_SIZE(mcf_gpio_chips)) 45 (void)gpiochip_add((struct gpio_chip *)&mcf_gpio_chips[i++]); 46 return 0; 47} 48 49core_initcall(mcf_gpio_init); 50