From 3d454446e2b83b4e1e2997b2c6e689c85ab61868 Mon Sep 17 00:00:00 2001 From: Sascha Hauer Date: Thu, 17 Apr 2008 08:47:32 +0100 Subject: [ARM] 4998/1: : do not use hardcoded io space size Do not use hardcoded io space size. Instead use the information provided by the resource. Signed-off-by: Sascha Hauer Signed-off-by: Russell King --- drivers/serial/imx.c | 25 +++++++++++++++---------- 1 file changed, 15 insertions(+), 10 deletions(-) (limited to 'drivers/serial/imx.c') diff --git a/drivers/serial/imx.c b/drivers/serial/imx.c index dd1e071834be..0ce2b4a45e6d 100644 --- a/drivers/serial/imx.c +++ b/drivers/serial/imx.c @@ -166,11 +166,6 @@ #define SERIAL_IMX_MAJOR 204 #define MINOR_START 41 -/* - * This is the size of our serial port register set. - */ -#define UART_PORT_SIZE 0x100 - /* * This determines how often we check the modem status signals * for any change. They generally aren't connected to an IRQ @@ -721,9 +716,11 @@ static const char *imx_type(struct uart_port *port) */ static void imx_release_port(struct uart_port *port) { - struct imx_port *sport = (struct imx_port *)port; + struct platform_device *pdev = to_platform_device(port->dev); + struct resource *mmres; - release_mem_region(sport->port.mapbase, UART_PORT_SIZE); + mmres = platform_get_resource(pdev, IORESOURCE_MEM, 0); + release_mem_region(mmres->start, mmres->end - mmres->start + 1); } /* @@ -731,10 +728,18 @@ static void imx_release_port(struct uart_port *port) */ static int imx_request_port(struct uart_port *port) { - struct imx_port *sport = (struct imx_port *)port; + struct platform_device *pdev = to_platform_device(port->dev); + struct resource *mmres; + void *ret; + + mmres = platform_get_resource(pdev, IORESOURCE_MEM, 0); + if (!mmres) + return -ENODEV; + + ret = request_mem_region(mmres->start, mmres->end - mmres->start + 1, + "imx-uart"); - return request_mem_region(sport->port.mapbase, UART_PORT_SIZE, - "imx-uart") != NULL ? 0 : -EBUSY; + return ret ? 0 : -EBUSY; } /* -- cgit v1.2.3