Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit b8961b1e authored by Arnd Bergmann's avatar Arnd Bergmann
Browse files

Merge tag 'davinci-for-v5.1/soc-part2' of...

Merge tag 'davinci-for-v5.1/soc-part2' of git://git.kernel.org/pub/scm/linux/kernel/git/nsekhar/linux-davinci into arm/fixes

DaVinci SoC updates for v5.1 (part 2)

This pull request contains changes needed to help get rid of
hard-coded GPIO base value passed from DaVinci platform data.

The OHCI related changes also help by moving over-current support
from board-files to OHCI driver making future DT-coversion easy.

The OHCI parts are acked by its maintainer.

* tag 'davinci-for-v5.1/soc-part2' of git://git.kernel.org/pub/scm/linux/kernel/git/nsekhar/linux-davinci

:
  usb: ohci-da8xx: remove unused callbacks from platform data
  ARM: davinci: da830-evm: remove legacy usb helpers
  ARM: davinci: omapl138-hawk: remove legacy usb helpers
  usb: ohci-da8xx: add vbus and overcurrent gpios
  ARM: davinci: da830-evm: use gpio lookup entries for usb gpios
  ARM: davinci: omapl138-hawk: use gpio lookup entries for usb gpios
  usb: ohci-da8xx: add a helper pointer to &pdev->dev
  usb: ohci-da8xx: add a new line after local variables
  ARM: davinci: da850-evm: use GPIO hogs instead of the legacy API
  ARM: davinci: mityomapl138: use device properties for at24 eeprom
  ARM: davinci: mityomapl138: use nvmem notifiers
  ARM: davinci: remove dead code related to MAC address reading
  ARM: davinci: sffsdr: use device properties for at24 eeprom
  ARM: davinci: sffsdr: fix the at24 eeprom device name
  ARM: davinci: dm646x-evm: use device properties for at24 eeprom
  ARM: davinci: dm644x-evm: use device properties for at24 eeprom
  ARM: davinci: da830-evm: use device properties for at24 eeprom
  ARM: davinci: dm365-evm: use device properties for at24 eeprom
  ARM: davinci: mityomapl138: don't read the MAC address from machine code
  ARM: davinci: da850-evm: remove dead MTD code

Signed-off-by: default avatarArnd Bergmann <arnd@arndb.de>
parents ad75174f 23fa70e4
Loading
Loading
Loading
Loading
+13 −73
Original line number Diff line number Diff line
@@ -18,7 +18,7 @@
#include <linux/platform_device.h>
#include <linux/i2c.h>
#include <linux/platform_data/pcf857x.h>
#include <linux/platform_data/at24.h>
#include <linux/property.h>
#include <linux/mtd/mtd.h>
#include <linux/mtd/partitions.h>
#include <linux/spi/spi.h>
@@ -52,62 +52,19 @@ static const short da830_evm_usb11_pins[] = {
	-1
};

static da8xx_ocic_handler_t da830_evm_usb_ocic_handler;

static int da830_evm_usb_set_power(unsigned port, int on)
{
	gpio_set_value(ON_BD_USB_DRV, on);
	return 0;
}

static int da830_evm_usb_get_power(unsigned port)
{
	return gpio_get_value(ON_BD_USB_DRV);
}

static int da830_evm_usb_get_oci(unsigned port)
{
	return !gpio_get_value(ON_BD_USB_OVC);
}

static irqreturn_t da830_evm_usb_ocic_irq(int, void *);

static int da830_evm_usb_ocic_notify(da8xx_ocic_handler_t handler)
{
	int irq 	= gpio_to_irq(ON_BD_USB_OVC);
	int error	= 0;

	if (handler != NULL) {
		da830_evm_usb_ocic_handler = handler;

		error = request_irq(irq, da830_evm_usb_ocic_irq,
				    IRQF_TRIGGER_RISING | IRQF_TRIGGER_FALLING,
				    "OHCI over-current indicator", NULL);
		if (error)
			pr_err("%s: could not request IRQ to watch over-current indicator changes\n",
			       __func__);
	} else
		free_irq(irq, NULL);

	return error;
}
static struct gpiod_lookup_table da830_evm_usb_gpio_lookup = {
	.dev_id		= "ohci-da8xx",
	.table = {
		GPIO_LOOKUP("davinci_gpio", ON_BD_USB_DRV, "vbus", 0),
		GPIO_LOOKUP("davinci_gpio", ON_BD_USB_OVC, "oc", 0),
	},
};

static struct da8xx_ohci_root_hub da830_evm_usb11_pdata = {
	.set_power	= da830_evm_usb_set_power,
	.get_power	= da830_evm_usb_get_power,
	.get_oci	= da830_evm_usb_get_oci,
	.ocic_notify	= da830_evm_usb_ocic_notify,

	/* TPS2065 switch @ 5V */
	.potpgt		= (3 + 1) / 2,	/* 3 ms max */
};

static irqreturn_t da830_evm_usb_ocic_irq(int irq, void *dev_id)
{
	da830_evm_usb_ocic_handler(&da830_evm_usb11_pdata, 1);
	return IRQ_HANDLED;
}

static __init void da830_evm_usb_init(void)
{
	int ret;
@@ -142,21 +99,7 @@ static __init void da830_evm_usb_init(void)
		return;
	}

	ret = gpio_request(ON_BD_USB_DRV, "ON_BD_USB_DRV");
	if (ret) {
		pr_err("%s: failed to request GPIO for USB 1.1 port power control: %d\n",
		       __func__, ret);
		return;
	}
	gpio_direction_output(ON_BD_USB_DRV, 0);

	ret = gpio_request(ON_BD_USB_OVC, "ON_BD_USB_OVC");
	if (ret) {
		pr_err("%s: failed to request GPIO for USB 1.1 port over-current indicator: %d\n",
		       __func__, ret);
		return;
	}
	gpio_direction_input(ON_BD_USB_OVC);
	gpiod_add_lookup_table(&da830_evm_usb_gpio_lookup);

	ret = da8xx_register_usb11(&da830_evm_usb11_pdata);
	if (ret)
@@ -457,12 +400,9 @@ static struct nvmem_cell_lookup da830_evm_nvmem_cell_lookup = {
	.con_id		= "mac-address",
};

static struct at24_platform_data da830_evm_i2c_eeprom_info = {
	.byte_len	= SZ_256K / 8,
	.page_size	= 64,
	.flags		= AT24_FLAG_ADDR16,
	.setup		= davinci_get_mac_addr,
	.context	= (void *)0x7f00,
static const struct property_entry da830_evm_i2c_eeprom_properties[] = {
	PROPERTY_ENTRY_U32("pagesize", 64),
	{ }
};

static int __init da830_evm_ui_expander_setup(struct i2c_client *client,
@@ -496,7 +436,7 @@ static struct pcf857x_platform_data __initdata da830_evm_ui_expander_info = {
static struct i2c_board_info __initdata da830_evm_i2c_devices[] = {
	{
		I2C_BOARD_INFO("24c256", 0x50),
		.platform_data	= &da830_evm_i2c_eeprom_info,
		.properties = da830_evm_i2c_eeprom_properties,
	},
	{
		I2C_BOARD_INFO("tlv320aic3x", 0x18),
+14 −36
Original line number Diff line number Diff line
@@ -150,32 +150,6 @@ static struct spi_board_info da850evm_spi_info[] = {
	},
};

#ifdef CONFIG_MTD
static void da850_evm_m25p80_notify_add(struct mtd_info *mtd)
{
	char *mac_addr = davinci_soc_info.emac_pdata->mac_addr;
	size_t retlen;

	if (!strcmp(mtd->name, "MAC-Address")) {
		mtd_read(mtd, 0, ETH_ALEN, &retlen, mac_addr);
		if (retlen == ETH_ALEN)
			pr_info("Read MAC addr from SPI Flash: %pM\n",
				mac_addr);
	}
}

static struct mtd_notifier da850evm_spi_notifier = {
	.add	= da850_evm_m25p80_notify_add,
};

static void da850_evm_setup_mac_addr(void)
{
	register_mtd_user(&da850evm_spi_notifier);
}
#else
static void da850_evm_setup_mac_addr(void) { }
#endif

static struct mtd_partition da850_evm_norflash_partition[] = {
	{
		.name           = "bootloaders + env",
@@ -1064,6 +1038,17 @@ static const short da850_evm_rmii_pins[] = {
	-1
};

static struct gpiod_hog da850_evm_emac_gpio_hogs[] = {
	{
		.chip_label	= "davinci_gpio",
		.chip_hwnum	= DA850_MII_MDIO_CLKEN_PIN,
		.line_name	= "mdio_clk_en",
		.lflags		= 0,
		/* dflags set in da850_evm_config_emac() */
	},
	{ }
};

static int __init da850_evm_config_emac(void)
{
	void __iomem *cfg_chip3_base;
@@ -1102,14 +1087,9 @@ static int __init da850_evm_config_emac(void)
	if (ret)
		pr_warn("%s:GPIO(2,6) mux setup failed\n", __func__);

	ret = gpio_request(DA850_MII_MDIO_CLKEN_PIN, "mdio_clk_en");
	if (ret) {
		pr_warn("Cannot open GPIO %d\n", DA850_MII_MDIO_CLKEN_PIN);
		return ret;
	}

	/* Enable/Disable MII MDIO clock */
	gpio_direction_output(DA850_MII_MDIO_CLKEN_PIN, rmii_en);
	da850_evm_emac_gpio_hogs[0].dflags = rmii_en ? GPIOD_OUT_HIGH
						     : GPIOD_OUT_LOW;
	gpiod_add_hogs(da850_evm_emac_gpio_hogs);

	soc_info->emac_pdata->phy_id = DA850_EVM_PHY_ID;

@@ -1494,8 +1474,6 @@ static __init void da850_evm_init(void)
	if (ret)
		pr_warn("%s: SATA registration failed: %d\n", __func__, ret);

	da850_evm_setup_mac_addr();

	ret = da8xx_register_rproc();
	if (ret)
		pr_warn("%s: dsp/rproc registration failed: %d\n",
+5 −8
Original line number Diff line number Diff line
@@ -18,7 +18,7 @@
#include <linux/i2c.h>
#include <linux/io.h>
#include <linux/clk.h>
#include <linux/platform_data/at24.h>
#include <linux/property.h>
#include <linux/leds.h>
#include <linux/mtd/mtd.h>
#include <linux/mtd/partitions.h>
@@ -225,18 +225,15 @@ static struct nvmem_cell_lookup davinci_nvmem_cell_lookup = {
	.con_id		= "mac-address",
};

static struct at24_platform_data eeprom_info = {
	.byte_len       = (256*1024) / 8,
	.page_size      = 64,
	.flags          = AT24_FLAG_ADDR16,
	.setup          = davinci_get_mac_addr,
	.context	= (void *)0x7f00,
static const struct property_entry eeprom_properties[] = {
	PROPERTY_ENTRY_U32("pagesize", 64),
	{ }
};

static struct i2c_board_info i2c_info[] = {
	{
		I2C_BOARD_INFO("24c256", 0x50),
		.platform_data	= &eeprom_info,
		.properties = eeprom_properties,
	},
	{
		I2C_BOARD_INFO("tlv320aic3x", 0x18),
+5 −8
Original line number Diff line number Diff line
@@ -16,8 +16,8 @@
#include <linux/gpio/machine.h>
#include <linux/i2c.h>
#include <linux/platform_data/pcf857x.h>
#include <linux/platform_data/at24.h>
#include <linux/platform_data/gpio-davinci.h>
#include <linux/property.h>
#include <linux/mtd/mtd.h>
#include <linux/mtd/rawnand.h>
#include <linux/mtd/partitions.h>
@@ -532,12 +532,9 @@ static struct nvmem_cell_lookup dm644evm_nvmem_cell_lookup = {
	.con_id		= "mac-address",
};

static struct at24_platform_data eeprom_info = {
	.byte_len	= (256*1024) / 8,
	.page_size	= 64,
	.flags		= AT24_FLAG_ADDR16,
	.setup          = davinci_get_mac_addr,
	.context	= (void *)0x7f00,
static const struct property_entry eeprom_properties[] = {
	PROPERTY_ENTRY_U32("pagesize", 64),
	{ }
};

/*
@@ -647,7 +644,7 @@ static struct i2c_board_info __initdata i2c_info[] = {
	},
	{
		I2C_BOARD_INFO("24c256", 0x50),
		.platform_data	= &eeprom_info,
		.properties = eeprom_properties,
	},
	{
		I2C_BOARD_INFO("tlv320aic33", 0x1b),
+5 −8
Original line number Diff line number Diff line
@@ -22,7 +22,7 @@
#include <linux/gpio.h>
#include <linux/platform_device.h>
#include <linux/i2c.h>
#include <linux/platform_data/at24.h>
#include <linux/property.h>
#include <linux/platform_data/pcf857x.h>
#include <linux/platform_data/ti-aemif.h>

@@ -364,12 +364,9 @@ static struct nvmem_cell_lookup dm646x_evm_nvmem_cell_lookup = {
	.con_id		= "mac-address",
};

static struct at24_platform_data eeprom_info = {
	.byte_len       = (256*1024) / 8,
	.page_size      = 64,
	.flags          = AT24_FLAG_ADDR16,
	.setup          = davinci_get_mac_addr,
	.context	= (void *)0x7f00,
static const struct property_entry eeprom_properties[] = {
	PROPERTY_ENTRY_U32("pagesize", 64),
	{ }
};
#endif

@@ -440,7 +437,7 @@ static void evm_init_cpld(void)
static struct i2c_board_info __initdata i2c_info[] =  {
	{
		I2C_BOARD_INFO("24c256", 0x50),
		.platform_data  = &eeprom_info,
		.properties  = eeprom_properties,
	},
	{
		I2C_BOARD_INFO("pcf8574a", 0x38),
Loading