Commit 196249be authored by Arnd Bergmann's avatar Arnd Bergmann
Browse files

Merge tag 'davinci-for-v4.10/soc-3' of...

Merge tag 'davinci-for-v4.10/soc-3' of git://git.kernel.org/pub/scm/linux/kernel/git/nsekhar/linux-davinci into next/soc

Pull "DaVinci SoC updates for v4.10 (part 3)" from Sekhar Nori:

mach-davinci SoC support updates to adjust
USB ohci device name to that used by drivers
and update of various board files to use gpio
descriptor API used by MMC subsystem for card
detect and write-protect detection.

* tag 'davinci-for-v4.10/soc-3' of git://git.kernel.org/pub/scm/linux/kernel/git/nsekhar/linux-davinci:
  ARM: davinci: da830-evm: use gpio descriptor for mmc pins
  ARM: davinci: da850-evm: use gpio descriptor for mmc pins
  ARM: davinci: hawk: use gpio descriptor for mmc pins
  ARM: davinci: da8xx: Fix ohci device name
parents c0db16b8 b5e1438c
Loading
Loading
Loading
Loading
+11 −30
Original line number Original line Diff line number Diff line
@@ -14,6 +14,7 @@
#include <linux/console.h>
#include <linux/console.h>
#include <linux/interrupt.h>
#include <linux/interrupt.h>
#include <linux/gpio.h>
#include <linux/gpio.h>
#include <linux/gpio/machine.h>
#include <linux/platform_device.h>
#include <linux/platform_device.h>
#include <linux/i2c.h>
#include <linux/i2c.h>
#include <linux/i2c/pcf857x.h>
#include <linux/i2c/pcf857x.h>
@@ -204,22 +205,16 @@ static const short da830_evm_mmc_sd_pins[] = {
	-1
	-1
};
};


#define DA830_MMCSD_WP_PIN		GPIO_TO_PIN(2, 1)
static struct gpiod_lookup_table mmc_gpios_table = {
#define DA830_MMCSD_CD_PIN		GPIO_TO_PIN(2, 2)
	.dev_id = "da830-mmc.0",

	.table = {
static int da830_evm_mmc_get_ro(int index)
		/* gpio chip 1 contains gpio range 32-63 */
{
		GPIO_LOOKUP("davinci_gpio.1", 2, "cd", GPIO_ACTIVE_LOW),
	return gpio_get_value(DA830_MMCSD_WP_PIN);
		GPIO_LOOKUP("davinci_gpio.1", 1, "wp", GPIO_ACTIVE_LOW),
}
	},

};
static int da830_evm_mmc_get_cd(int index)
{
	return !gpio_get_value(DA830_MMCSD_CD_PIN);
}


static struct davinci_mmc_config da830_evm_mmc_config = {
static struct davinci_mmc_config da830_evm_mmc_config = {
	.get_ro			= da830_evm_mmc_get_ro,
	.get_cd			= da830_evm_mmc_get_cd,
	.wires			= 8,
	.wires			= 8,
	.max_freq		= 50000000,
	.max_freq		= 50000000,
	.caps			= MMC_CAP_MMC_HIGHSPEED | MMC_CAP_SD_HIGHSPEED,
	.caps			= MMC_CAP_MMC_HIGHSPEED | MMC_CAP_SD_HIGHSPEED,
@@ -235,26 +230,12 @@ static inline void da830_evm_init_mmc(void)
		return;
		return;
	}
	}


	ret = gpio_request(DA830_MMCSD_WP_PIN, "MMC WP");
	gpiod_add_lookup_table(&mmc_gpios_table);
	if (ret) {
		pr_warn("%s: can not open GPIO %d\n",
			__func__, DA830_MMCSD_WP_PIN);
		return;
	}
	gpio_direction_input(DA830_MMCSD_WP_PIN);

	ret = gpio_request(DA830_MMCSD_CD_PIN, "MMC CD\n");
	if (ret) {
		pr_warn("%s: can not open GPIO %d\n",
			__func__, DA830_MMCSD_CD_PIN);
		return;
	}
	gpio_direction_input(DA830_MMCSD_CD_PIN);


	ret = da8xx_register_mmcsd0(&da830_evm_mmc_config);
	ret = da8xx_register_mmcsd0(&da830_evm_mmc_config);
	if (ret) {
	if (ret) {
		pr_warn("%s: mmc/sd registration failed: %d\n", __func__, ret);
		pr_warn("%s: mmc/sd registration failed: %d\n", __func__, ret);
		gpio_free(DA830_MMCSD_WP_PIN);
		gpiod_remove_lookup_table(&mmc_gpios_table);
	}
	}
}
}


+10 −25
Original line number Original line Diff line number Diff line
@@ -15,6 +15,7 @@
#include <linux/delay.h>
#include <linux/delay.h>
#include <linux/gpio.h>
#include <linux/gpio.h>
#include <linux/gpio_keys.h>
#include <linux/gpio_keys.h>
#include <linux/gpio/machine.h>
#include <linux/init.h>
#include <linux/init.h>
#include <linux/kernel.h>
#include <linux/kernel.h>
#include <linux/i2c.h>
#include <linux/i2c.h>
@@ -56,9 +57,6 @@
#define DA850_LCD_PWR_PIN		GPIO_TO_PIN(2, 8)
#define DA850_LCD_PWR_PIN		GPIO_TO_PIN(2, 8)
#define DA850_LCD_BL_PIN		GPIO_TO_PIN(2, 15)
#define DA850_LCD_BL_PIN		GPIO_TO_PIN(2, 15)


#define DA850_MMCSD_CD_PIN		GPIO_TO_PIN(4, 0)
#define DA850_MMCSD_WP_PIN		GPIO_TO_PIN(4, 1)

#define DA850_MII_MDIO_CLKEN_PIN	GPIO_TO_PIN(2, 6)
#define DA850_MII_MDIO_CLKEN_PIN	GPIO_TO_PIN(2, 6)


static struct mtd_partition da850evm_spiflash_part[] = {
static struct mtd_partition da850evm_spiflash_part[] = {
@@ -764,19 +762,16 @@ static const short da850_evm_mcasp_pins[] __initconst = {
	-1
	-1
};
};


static int da850_evm_mmc_get_ro(int index)
static struct gpiod_lookup_table mmc_gpios_table = {
{
	.dev_id = "da830-mmc.0",
	return gpio_get_value(DA850_MMCSD_WP_PIN);
	.table = {
}
		/* gpio chip 2 contains gpio range 64-95 */

		GPIO_LOOKUP("davinci_gpio.2", 0, "cd", GPIO_ACTIVE_LOW),
static int da850_evm_mmc_get_cd(int index)
		GPIO_LOOKUP("davinci_gpio.2", 1, "wp", GPIO_ACTIVE_LOW),
{
	},
	return !gpio_get_value(DA850_MMCSD_CD_PIN);
};
}


static struct davinci_mmc_config da850_mmc_config = {
static struct davinci_mmc_config da850_mmc_config = {
	.get_ro		= da850_evm_mmc_get_ro,
	.get_cd		= da850_evm_mmc_get_cd,
	.wires		= 4,
	.wires		= 4,
	.max_freq	= 50000000,
	.max_freq	= 50000000,
	.caps		= MMC_CAP_MMC_HIGHSPEED | MMC_CAP_SD_HIGHSPEED,
	.caps		= MMC_CAP_MMC_HIGHSPEED | MMC_CAP_SD_HIGHSPEED,
@@ -1371,17 +1366,7 @@ static __init void da850_evm_init(void)
			pr_warn("%s: MMCSD0 mux setup failed: %d\n",
			pr_warn("%s: MMCSD0 mux setup failed: %d\n",
				__func__, ret);
				__func__, ret);


		ret = gpio_request(DA850_MMCSD_CD_PIN, "MMC CD\n");
		gpiod_add_lookup_table(&mmc_gpios_table);
		if (ret)
			pr_warn("%s: can not open GPIO %d\n",
				__func__, DA850_MMCSD_CD_PIN);
		gpio_direction_input(DA850_MMCSD_CD_PIN);

		ret = gpio_request(DA850_MMCSD_WP_PIN, "MMC WP\n");
		if (ret)
			pr_warn("%s: can not open GPIO %d\n",
				__func__, DA850_MMCSD_WP_PIN);
		gpio_direction_input(DA850_MMCSD_WP_PIN);


		ret = da8xx_register_mmcsd0(&da850_mmc_config);
		ret = da8xx_register_mmcsd0(&da850_mmc_config);
		if (ret)
		if (ret)
+11 −31
Original line number Original line Diff line number Diff line
@@ -13,6 +13,7 @@
#include <linux/init.h>
#include <linux/init.h>
#include <linux/console.h>
#include <linux/console.h>
#include <linux/gpio.h>
#include <linux/gpio.h>
#include <linux/gpio/machine.h>
#include <linux/platform_data/gpio-davinci.h>
#include <linux/platform_data/gpio-davinci.h>
#include <linux/regulator/machine.h>
#include <linux/regulator/machine.h>


@@ -25,8 +26,6 @@
#include <mach/mux.h>
#include <mach/mux.h>


#define HAWKBOARD_PHY_ID		"davinci_mdio-0:07"
#define HAWKBOARD_PHY_ID		"davinci_mdio-0:07"
#define DA850_HAWK_MMCSD_CD_PIN		GPIO_TO_PIN(3, 12)
#define DA850_HAWK_MMCSD_WP_PIN		GPIO_TO_PIN(3, 13)


#define DA850_USB1_VBUS_PIN		GPIO_TO_PIN(2, 4)
#define DA850_USB1_VBUS_PIN		GPIO_TO_PIN(2, 4)
#define DA850_USB1_OC_PIN		GPIO_TO_PIN(6, 13)
#define DA850_USB1_OC_PIN		GPIO_TO_PIN(6, 13)
@@ -123,19 +122,16 @@ static const short hawk_mmcsd0_pins[] = {
	-1
	-1
};
};


static int da850_hawk_mmc_get_ro(int index)
static struct gpiod_lookup_table mmc_gpios_table = {
{
	.dev_id = "da830-mmc.0",
	return gpio_get_value(DA850_HAWK_MMCSD_WP_PIN);
	.table = {
}
		/* CD: gpio3_12: gpio60: chip 1 contains gpio range 32-63*/

		GPIO_LOOKUP("davinci_gpio.1", 28, "cd", GPIO_ACTIVE_LOW),
static int da850_hawk_mmc_get_cd(int index)
		GPIO_LOOKUP("davinci_gpio.1", 29, "wp", GPIO_ACTIVE_LOW),
{
	},
	return !gpio_get_value(DA850_HAWK_MMCSD_CD_PIN);
};
}


static struct davinci_mmc_config da850_mmc_config = {
static struct davinci_mmc_config da850_mmc_config = {
	.get_ro		= da850_hawk_mmc_get_ro,
	.get_cd		= da850_hawk_mmc_get_cd,
	.wires		= 4,
	.wires		= 4,
	.max_freq	= 50000000,
	.max_freq	= 50000000,
	.caps		= MMC_CAP_MMC_HIGHSPEED | MMC_CAP_SD_HIGHSPEED,
	.caps		= MMC_CAP_MMC_HIGHSPEED | MMC_CAP_SD_HIGHSPEED,
@@ -151,21 +147,7 @@ static __init void omapl138_hawk_mmc_init(void)
		return;
		return;
	}
	}


	ret = gpio_request_one(DA850_HAWK_MMCSD_CD_PIN,
	gpiod_add_lookup_table(&mmc_gpios_table);
			GPIOF_DIR_IN, "MMC CD");
	if (ret < 0) {
		pr_warn("%s: can not open GPIO %d\n",
			__func__, DA850_HAWK_MMCSD_CD_PIN);
		return;
	}

	ret = gpio_request_one(DA850_HAWK_MMCSD_WP_PIN,
			GPIOF_DIR_IN, "MMC WP");
	if (ret < 0) {
		pr_warn("%s: can not open GPIO %d\n",
			__func__, DA850_HAWK_MMCSD_WP_PIN);
		goto mmc_setup_wp_fail;
	}


	ret = da8xx_register_mmcsd0(&da850_mmc_config);
	ret = da8xx_register_mmcsd0(&da850_mmc_config);
	if (ret) {
	if (ret) {
@@ -176,9 +158,7 @@ static __init void omapl138_hawk_mmc_init(void)
	return;
	return;


mmc_setup_mmcsd_fail:
mmc_setup_mmcsd_fail:
	gpio_free(DA850_HAWK_MMCSD_WP_PIN);
	gpiod_remove_lookup_table(&mmc_gpios_table);
mmc_setup_wp_fail:
	gpio_free(DA850_HAWK_MMCSD_CD_PIN);
}
}


static irqreturn_t omapl138_hawk_usb_ocic_irq(int irq, void *dev_id);
static irqreturn_t omapl138_hawk_usb_ocic_irq(int irq, void *dev_id);
+1 −1
Original line number Original line Diff line number Diff line
@@ -420,7 +420,7 @@ static struct clk_lookup da830_clks[] = {
	CLK("davinci_mdio.0",   "fck",          &emac_clk),
	CLK("davinci_mdio.0",   "fck",          &emac_clk),
	CLK(NULL,		"gpio",		&gpio_clk),
	CLK(NULL,		"gpio",		&gpio_clk),
	CLK("i2c_davinci.2",	NULL,		&i2c1_clk),
	CLK("i2c_davinci.2",	NULL,		&i2c1_clk),
	CLK("ohci",		"usb11",	&usb11_clk),
	CLK("ohci-da8xx",	"usb11",	&usb11_clk),
	CLK(NULL,		"emif3",	&emif3_clk),
	CLK(NULL,		"emif3",	&emif3_clk),
	CLK(NULL,		"arm",		&arm_clk),
	CLK(NULL,		"arm",		&arm_clk),
	CLK(NULL,		"rmii",		&rmii_clk),
	CLK(NULL,		"rmii",		&rmii_clk),
+1 −1
Original line number Original line Diff line number Diff line
@@ -503,7 +503,7 @@ static struct clk_lookup da850_clks[] = {
	CLK("da830-mmc.1",	NULL,		&mmcsd1_clk),
	CLK("da830-mmc.1",	NULL,		&mmcsd1_clk),
	CLK("ti-aemif",		NULL,		&aemif_clk),
	CLK("ti-aemif",		NULL,		&aemif_clk),
	CLK(NULL,		"aemif",	&aemif_clk),
	CLK(NULL,		"aemif",	&aemif_clk),
	CLK("ohci",		"usb11",	&usb11_clk),
	CLK("ohci-da8xx",	"usb11",	&usb11_clk),
	CLK("musb-da8xx",	"usb20",	&usb20_clk),
	CLK("musb-da8xx",	"usb20",	&usb20_clk),
	CLK("spi_davinci.0",	NULL,		&spi0_clk),
	CLK("spi_davinci.0",	NULL,		&spi0_clk),
	CLK("spi_davinci.1",	NULL,		&spi1_clk),
	CLK("spi_davinci.1",	NULL,		&spi1_clk),
Loading