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

Commit a9b14973 authored by Andy Fleming's avatar Andy Fleming Committed by Paul Mackerras
Browse files

[PATCH] Slight refactor of interrupt mapping for FSL parts



* Cleaned up interrupt mapping a little by adding a helper
  function which parses the irq out of the device-tree, and puts
  it into a resource.
* Changed the arch/ppc platform files to specify PHY_POLL, instead of -1
* Changed the fixed phy to use PHY_IGNORE_INTERRUPT
* Added ethtool.h and mii.h to phy.h includes

Signed-off-by: default avatarPaul Mackerras <paulus@samba.org>
parent c37858d3
Loading
Loading
Loading
Loading
+11 −17
Original line number Diff line number Diff line
@@ -22,6 +22,7 @@
#include <linux/module.h>
#include <linux/device.h>
#include <linux/platform_device.h>
#include <linux/phy.h>
#include <linux/fsl_devices.h>
#include <linux/fs_enet_pd.h>
#include <linux/fs_uart_pd.h>
@@ -146,7 +147,7 @@ static int __init gfar_mdio_of_init(void)
		}

		for (k = 0; k < 32; k++)
			mdio_data.irq[k] = -1;
			mdio_data.irq[k] = PHY_POLL;

		while ((child = of_get_next_child(np, child)) != NULL) {
			int irq = irq_of_parse_and_map(child, 0);
@@ -177,6 +178,7 @@ static const char *gfar_tx_intr = "tx";
static const char *gfar_rx_intr = "rx";
static const char *gfar_err_intr = "error";


static int __init gfar_of_init(void)
{
	struct device_node *np;
@@ -204,8 +206,7 @@ static int __init gfar_of_init(void)
		if (ret)
			goto err;

		r[1].start = r[1].end = irq_of_parse_and_map(np, 0);
		r[1].flags = IORESOURCE_IRQ;
		of_irq_to_resource(np, 0, &r[1]);

		model = get_property(np, "model", NULL);

@@ -214,12 +215,10 @@ static int __init gfar_of_init(void)
			r[1].name = gfar_tx_intr;

			r[2].name = gfar_rx_intr;
			r[2].start = r[2].end = irq_of_parse_and_map(np, 1);
			r[2].flags = IORESOURCE_IRQ;
			of_irq_to_resource(np, 1, &r[2]);

			r[3].name = gfar_err_intr;
			r[3].start = r[3].end = irq_of_parse_and_map(np, 2);
			r[3].flags = IORESOURCE_IRQ;
			of_irq_to_resource(np, 2, &r[3]);

			n_res += 2;
		}
@@ -323,8 +322,7 @@ static int __init fsl_i2c_of_init(void)
		if (ret)
			goto err;

		r[1].start = r[1].end = irq_of_parse_and_map(np, 0);
		r[1].flags = IORESOURCE_IRQ;
		of_irq_to_resource(np, 0, &r[1]);

		i2c_dev = platform_device_register_simple("fsl-i2c", i, r, 2);
		if (IS_ERR(i2c_dev)) {
@@ -459,8 +457,7 @@ static int __init fsl_usb_of_init(void)
		if (ret)
			goto err;

		r[1].start = r[1].end = irq_of_parse_and_map(np, 0);
		r[1].flags = IORESOURCE_IRQ;
		of_irq_to_resource(np, 0, &r[1]);

		usb_dev_mph =
		    platform_device_register_simple("fsl-ehci", i, r, 2);
@@ -507,8 +504,7 @@ static int __init fsl_usb_of_init(void)
		if (ret)
			goto unreg_mph;

		r[1].start = r[1].end = irq_of_parse_and_map(np, 0);
		r[1].flags = IORESOURCE_IRQ;
		of_irq_to_resource(np, 0, &r[1]);

		usb_dev_dr =
		    platform_device_register_simple("fsl-ehci", i, r, 2);
@@ -591,8 +587,7 @@ static int __init fs_enet_of_init(void)
		r[2].name = fcc_regs_c;
		fs_enet_data.fcc_regs_c = r[2].start;

		r[3].start = r[3].end = irq_of_parse_and_map(np, 0);
		r[3].flags = IORESOURCE_IRQ;
		of_irq_to_resource(np, 0, &r[3]);

		fs_enet_dev =
		    platform_device_register_simple("fsl-cpm-fcc", i, &r[0], 4);
@@ -754,8 +749,7 @@ static int __init cpm_uart_of_init(void)
			goto err;
		r[1].name = scc_pram;

		r[2].start = r[2].end = irq_of_parse_and_map(np, 0);
		r[2].flags = IORESOURCE_IRQ;
		of_irq_to_resource(np, 0, &r[2]);

		cpm_uart_dev =
		    platform_device_register_simple("fsl-cpm-scc:uart", i, &r[0], 3);
+2 −2
Original line number Diff line number Diff line
@@ -121,8 +121,8 @@ mpc834x_sys_setup_arch(void)

	mdata->irq[0] = MPC83xx_IRQ_EXT1;
	mdata->irq[1] = MPC83xx_IRQ_EXT2;
	mdata->irq[2] = -1;
	mdata->irq[31] = -1;
	mdata->irq[2] = PHY_POLL;
	mdata->irq[31] = PHY_POLL;

	/* setup the board related information for the enet controllers */
	pdata = (struct gianfar_platform_data *) ppc_sys_get_pdata(MPC83xx_TSEC1);
+2 −2
Original line number Diff line number Diff line
@@ -92,9 +92,9 @@ mpc8540ads_setup_arch(void)

	mdata->irq[0] = MPC85xx_IRQ_EXT5;
	mdata->irq[1] = MPC85xx_IRQ_EXT5;
	mdata->irq[2] = -1;
	mdata->irq[2] = PHY_POLL;
	mdata->irq[3] = MPC85xx_IRQ_EXT5;
	mdata->irq[31] = -1;
	mdata->irq[31] = PHY_POLL;

	/* setup the board related information for the enet controllers */
	pdata = (struct gianfar_platform_data *) ppc_sys_get_pdata(MPC85xx_TSEC1);
+2 −2
Original line number Diff line number Diff line
@@ -156,9 +156,9 @@ mpc8560ads_setup_arch(void)

	mdata->irq[0] = MPC85xx_IRQ_EXT5;
	mdata->irq[1] = MPC85xx_IRQ_EXT5;
	mdata->irq[2] = -1;
	mdata->irq[2] = PHY_POLL;
	mdata->irq[3] = MPC85xx_IRQ_EXT5;
	mdata->irq[31] = -1;
	mdata->irq[31] = PHY_POLL;

	/* setup the board related information for the enet controllers */
	pdata = (struct gianfar_platform_data *) ppc_sys_get_pdata(MPC85xx_TSEC1);
+3 −3
Original line number Diff line number Diff line
@@ -451,9 +451,9 @@ mpc85xx_cds_setup_arch(void)

	mdata->irq[0] = MPC85xx_IRQ_EXT5;
	mdata->irq[1] = MPC85xx_IRQ_EXT5;
	mdata->irq[2] = -1;
	mdata->irq[3] = -1;
	mdata->irq[31] = -1;
	mdata->irq[2] = PHY_POLL;
	mdata->irq[3] = PHY_POLL;
	mdata->irq[31] = PHY_POLL;

	/* setup the board related information for the enet controllers */
	pdata = (struct gianfar_platform_data *) ppc_sys_get_pdata(MPC85xx_TSEC1);
Loading