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

Commit a484ffe2 authored by Linux Build Service Account's avatar Linux Build Service Account Committed by Gerrit - the friendly Code Review server
Browse files

Merge "msm: emac: move gpios from driver to device"

parents e40e92ca d42010d7
Loading
Loading
Loading
Loading
+3 −9
Original line number Diff line number Diff line
@@ -35,6 +35,8 @@
#define EMAC_WOL_IRQ          4
#define EMAC_SGMII_PHY_IRQ    5
#define EMAC_NUM_IRQ          6
/* mdio/mdc gpios */
#define EMAC_GPIO_CNT         2

enum emac_clk_id {
	EMAC_CLK_AXI,
@@ -57,9 +59,6 @@ enum emac_clk_rate {
	EMC_CLK_RATE_125MHz	= MHz(125),
};

/* mdio/mdc gpios */
#define EMAC_NUM_GPIO         2

#define EMAC_LINK_SPEED_UNKNOWN         0x0
#define EMAC_LINK_SPEED_10_HALF         0x0001
#define EMAC_LINK_SPEED_10_FULL         0x0002
@@ -533,11 +532,6 @@ struct emac_irq_info {
	struct emac_adapter  *adpt;
};

struct emac_gpio_info {
	unsigned int gpio;
	char *name;
};

struct emac_clk {
	struct clk		*clk;
	bool			enabled;
@@ -669,7 +663,7 @@ struct emac_adapter {
	struct net_device *netdev;

	struct emac_irq_info  irq_info[EMAC_NUM_IRQ];
	struct emac_gpio_info gpio_info[EMAC_NUM_GPIO];
	unsigned int			gpio[EMAC_GPIO_CNT];
	struct emac_clk			clk[EMAC_CLK_CNT];

	/* dma parameters */
+14 −19
Original line number Diff line number Diff line
@@ -107,9 +107,8 @@ static struct emac_irq_info emac_irq[EMAC_NUM_IRQ] = {
	  EMAC_SGMII_PHY_INTERRUPT_MASK, SGMII_ISR_MASK, NULL, NULL },
};

static struct emac_gpio_info emac_gpio[EMAC_NUM_GPIO] = {
	{ 0, "qcom,emac-gpio-mdc" },
	{ 0, "qcom,emac-gpio-mdio" },
static const char * const emac_gpio_name[] = {
	"qcom,emac-gpio-mdc", "qcom,emac-gpio-mdio"
};

static const char * const emac_clk_name[] = {
@@ -1628,14 +1627,13 @@ int emac_up(struct emac_adapter *adpt)
	emac_hw_config_mac(hw);
	emac_config_rss(adpt);

	for (i = 0; (!adpt->no_mdio_gpio) && i < EMAC_NUM_GPIO; i++) {
		struct emac_gpio_info *gpio_info = &adpt->gpio_info[i];
		retval = gpio_request(gpio_info->gpio, gpio_info->name);
	for (i = 0; (!adpt->no_mdio_gpio) && i < EMAC_GPIO_CNT; i++) {
		retval = gpio_request(adpt->gpio[i], emac_gpio_name[i]);
		if (retval) {
			emac_err(adpt, "failed to request gpio %s: %d\n",
				 gpio_info->name, retval);
			emac_err(adpt, "error:%d on gpio_request(%d:%s)\n",
				 retval, adpt->gpio[i], emac_gpio_name[i]);
			while (--i >= 0)
				gpio_free(adpt->gpio_info[i].gpio);
				gpio_free(adpt->gpio[i]);
			goto err_request_gpio;
		}
	}
@@ -1677,8 +1675,8 @@ int emac_up(struct emac_adapter *adpt)
	return retval;

err_request_irq:
	for (i = 0; (!adpt->no_mdio_gpio) && i < EMAC_NUM_GPIO; i++)
		gpio_free(adpt->gpio_info[i].gpio);
	for (i = 0; (!adpt->no_mdio_gpio) && i < EMAC_GPIO_CNT; i++)
		gpio_free(adpt->gpio[i]);
err_request_gpio:
	return retval;
}
@@ -1703,8 +1701,8 @@ void emac_down(struct emac_adapter *adpt, u32 ctrl)
		if (adpt->irq_info[i].irq)
			free_irq(adpt->irq_info[i].irq, &adpt->irq_info[i]);

	for (i = 0; (!adpt->no_mdio_gpio) && i < EMAC_NUM_GPIO; i++)
		gpio_free(adpt->gpio_info[i].gpio);
	for (i = 0; (!adpt->no_mdio_gpio) && i < EMAC_GPIO_CNT; i++)
		gpio_free(adpt->gpio[i]);

	CLR_FLAG(adpt, ADPT_TASK_LSC_REQ);
	CLR_FLAG(adpt, ADPT_TASK_REINIT_REQ);
@@ -2552,7 +2550,6 @@ static int emac_get_resources(struct platform_device *pdev,
	struct resource *res;
	struct net_device *netdev = adpt->netdev;
	struct emac_irq_info *irq_info;
	struct emac_gpio_info *gpio_info;
	struct device_node *node = pdev->dev.of_node;
	char *res_name[NUM_EMAC_REG_BASES] = {"emac", "emac_csr", "emac_1588",
					      "emac_qserdes", "emac_sgmii_phy"};
@@ -2592,13 +2589,12 @@ static int emac_get_resources(struct platform_device *pdev,
		adpt->no_mdio_gpio = true;

	/* get gpios */
	for (i = 0; (!adpt->no_mdio_gpio) && i < EMAC_NUM_GPIO; i++) {
		gpio_info = &adpt->gpio_info[i];
		retval = of_get_named_gpio(node, gpio_info->name, 0);
	for (i = 0; (!adpt->no_mdio_gpio) && i < EMAC_GPIO_CNT; i++) {
		retval = of_get_named_gpio(node, emac_gpio_name[i], 0);
		if (retval < 0)
			return retval;

		gpio_info->gpio = retval;
		adpt->gpio[i] = retval;
	}

	/* get mac address */
@@ -2729,7 +2725,6 @@ static int emac_probe(struct platform_device *pdev)
	dma_set_seg_boundary(&pdev->dev, 0xffffffff);


	memcpy(adpt->gpio_info, emac_gpio, sizeof(adpt->gpio_info));
	memcpy(adpt->irq_info, emac_irq, sizeof(adpt->irq_info));
	for (i = 0; i < EMAC_NUM_CORE_IRQ; i++) {
		adpt->irq_info[i].adpt = adpt;