|
35 | 35 | #define MEN_Z135_BAUD_REG 0x810
|
36 | 36 | #define MEN_Z135_TIMEOUT 0x814
|
37 | 37 |
|
38 |
| -#define MEN_Z135_MEM_SIZE 0x818 |
39 |
| - |
40 | 38 | #define IRQ_ID(x) ((x) & 0x1f)
|
41 | 39 |
|
42 | 40 | #define MEN_Z135_IER_RXCIEN BIT(0) /* RX Space IRQ */
|
@@ -124,6 +122,7 @@ MODULE_PARM_DESC(rx_timeout, "RX timeout. "
|
124 | 122 | struct men_z135_port {
|
125 | 123 | struct uart_port port;
|
126 | 124 | struct mcb_device *mdev;
|
| 125 | + struct resource *mem; |
127 | 126 | unsigned char *rxbuf;
|
128 | 127 | u32 stat_reg;
|
129 | 128 | spinlock_t lock;
|
@@ -734,22 +733,30 @@ static const char *men_z135_type(struct uart_port *port)
|
734 | 733 |
|
735 | 734 | static void men_z135_release_port(struct uart_port *port)
|
736 | 735 | {
|
| 736 | + struct men_z135_port *uart = to_men_z135(port); |
| 737 | + |
737 | 738 | iounmap(port->membase);
|
738 | 739 | port->membase = NULL;
|
739 | 740 |
|
740 |
| - release_mem_region(port->mapbase, MEN_Z135_MEM_SIZE); |
| 741 | + mcb_release_mem(uart->mem); |
741 | 742 | }
|
742 | 743 |
|
743 | 744 | static int men_z135_request_port(struct uart_port *port)
|
744 | 745 | {
|
745 |
| - int size = MEN_Z135_MEM_SIZE; |
| 746 | + struct men_z135_port *uart = to_men_z135(port); |
| 747 | + struct mcb_device *mdev = uart->mdev; |
| 748 | + struct resource *mem; |
| 749 | + |
| 750 | + mem = mcb_request_mem(uart->mdev, dev_name(&mdev->dev)); |
| 751 | + if (IS_ERR(mem)) |
| 752 | + return PTR_ERR(mem); |
746 | 753 |
|
747 |
| - if (!request_mem_region(port->mapbase, size, "men_z135_port")) |
748 |
| - return -EBUSY; |
| 754 | + port->mapbase = mem->start; |
| 755 | + uart->mem = mem; |
749 | 756 |
|
750 |
| - port->membase = ioremap(port->mapbase, MEN_Z135_MEM_SIZE); |
| 757 | + port->membase = ioremap(mem->start, resource_size(mem)); |
751 | 758 | if (port->membase == NULL) {
|
752 |
| - release_mem_region(port->mapbase, MEN_Z135_MEM_SIZE); |
| 759 | + mcb_release_mem(mem); |
753 | 760 | return -ENOMEM;
|
754 | 761 | }
|
755 | 762 |
|
|
0 commit comments