Browse Source

[PATCH] ppc32 CPM_UART: various fixes for pq2 uart users

This fixes various odd things that missed update together with cpm_uart
platform_device move. Unified resources names, restructurisation, etc.
Also, addressed issue with recent phys/virt translation rework. Being
cache-coherent, CPM2's do alloc_bootmem() for the console stuff, and it was
used to treat console buffer descriptor mapping 1:1 (as in CPM1 case),
which is definitely wrong.

Signed-off-by: Vitaly Bordug <vbordug@ru.mvista.com>
Signed-off-by: Paul Mackerras <paulus@samba.org>
Vitaly Bordug 19 years ago
parent
commit
8e30a9a299

+ 5 - 5
arch/ppc/platforms/mpc8272ads_setup.c

@@ -279,11 +279,11 @@ static int mpc8272ads_platform_notify(struct device *dev)
 	static const struct platform_notify_dev_map dev_map[] = {
 	static const struct platform_notify_dev_map dev_map[] = {
 		{
 		{
 			.bus_id = "fsl-cpm-fcc",
 			.bus_id = "fsl-cpm-fcc",
-			.rtn = mpc8272ads_fixup_enet_pdata
+			.rtn = mpc8272ads_fixup_enet_pdata,
 		},
 		},
 		{
 		{
 			.bus_id = "fsl-cpm-scc:uart",
 			.bus_id = "fsl-cpm-scc:uart",
-			.rtn = mpc
+			.rtn = mpc8272ads_fixup_uart_pdata,
 		},
 		},
 		{
 		{
 			.bus_id = NULL
 			.bus_id = NULL
@@ -335,15 +335,15 @@ struct platform_device* early_uart_get_pdev(int index)
 	struct platform_device* pdev = NULL;
 	struct platform_device* pdev = NULL;
 	if(index) { /*assume SCC4 here*/
 	if(index) { /*assume SCC4 here*/
 		pdev = &ppc_sys_platform_devices[MPC82xx_CPM_SCC4];
 		pdev = &ppc_sys_platform_devices[MPC82xx_CPM_SCC4];
-		pinfo = &mpc8272<F12>_uart_pdata[1];
+		pinfo = &mpc8272_uart_pdata[fsid_scc4_uart];
 	} else { /*over SCC1*/
 	} else { /*over SCC1*/
 		pdev = &ppc_sys_platform_devices[MPC82xx_CPM_SCC1];
 		pdev = &ppc_sys_platform_devices[MPC82xx_CPM_SCC1];
-		pinfo = &mpc8272_uart_pdata[0];
+		pinfo = &mpc8272_uart_pdata[fsid_scc1_uart];
 	}
 	}
 
 
 	pinfo->uart_clk = bd->bi_intfreq;
 	pinfo->uart_clk = bd->bi_intfreq;
 	pdev->dev.platform_data = pinfo;
 	pdev->dev.platform_data = pinfo;
-	ppc_sys_fixup_mem_resource(pdev, IMAP_ADDR);
+	ppc_sys_fixup_mem_resource(pdev, CPM_MAP_ADDR);
 	return NULL;
 	return NULL;
 }
 }
 
 

+ 8 - 8
arch/ppc/syslib/pq2_devices.c

@@ -121,13 +121,13 @@ struct platform_device ppc_sys_platform_devices[] = {
 		.num_resources	 = 3,
 		.num_resources	 = 3,
 		.resource = (struct resource[]) {
 		.resource = (struct resource[]) {
 			{
 			{
-				.name	= "scc_mem",
+				.name	= "regs",
 				.start	= 0x11A00,
 				.start	= 0x11A00,
 				.end	= 0x11A1F,
 				.end	= 0x11A1F,
 				.flags	= IORESOURCE_MEM,
 				.flags	= IORESOURCE_MEM,
 			},
 			},
 			{
 			{
-				.name	= "scc_pram",
+				.name	= "pram",
 				.start	= 0x8000,
 				.start	= 0x8000,
 				.end	= 0x80ff,
 				.end	= 0x80ff,
 				.flags	= IORESOURCE_MEM,
 				.flags	= IORESOURCE_MEM,
@@ -145,13 +145,13 @@ struct platform_device ppc_sys_platform_devices[] = {
 		.num_resources	 = 3,
 		.num_resources	 = 3,
 		.resource = (struct resource[]) {
 		.resource = (struct resource[]) {
 			{
 			{
-				.name	= "scc_mem",
+				.name	= "regs",
 				.start	= 0x11A20,
 				.start	= 0x11A20,
 				.end	= 0x11A3F,
 				.end	= 0x11A3F,
 				.flags	= IORESOURCE_MEM,
 				.flags	= IORESOURCE_MEM,
 			},
 			},
 			{
 			{
-				.name	= "scc_pram",
+				.name	= "pram",
 				.start	= 0x8100,
 				.start	= 0x8100,
 				.end	= 0x81ff,
 				.end	= 0x81ff,
 				.flags	= IORESOURCE_MEM,
 				.flags	= IORESOURCE_MEM,
@@ -169,13 +169,13 @@ struct platform_device ppc_sys_platform_devices[] = {
 		.num_resources	 = 3,
 		.num_resources	 = 3,
 		.resource = (struct resource[]) {
 		.resource = (struct resource[]) {
 			{
 			{
-				.name 	= "scc_mem",
+				.name 	= "regs",
 				.start	= 0x11A40,
 				.start	= 0x11A40,
 				.end	= 0x11A5F,
 				.end	= 0x11A5F,
 				.flags	= IORESOURCE_MEM,
 				.flags	= IORESOURCE_MEM,
 			},
 			},
 			{
 			{
-				.name	= "scc_pram",
+				.name	= "pram",
 				.start	= 0x8200,
 				.start	= 0x8200,
 				.end	= 0x82ff,
 				.end	= 0x82ff,
 				.flags	= IORESOURCE_MEM,
 				.flags	= IORESOURCE_MEM,
@@ -193,13 +193,13 @@ struct platform_device ppc_sys_platform_devices[] = {
 		.num_resources	 = 3,
 		.num_resources	 = 3,
 		.resource = (struct resource[]) {
 		.resource = (struct resource[]) {
 			{
 			{
-				.name	= "scc_mem",
+				.name	= "regs",
 				.start	= 0x11A60,
 				.start	= 0x11A60,
 				.end	= 0x11A7F,
 				.end	= 0x11A7F,
 				.flags	= IORESOURCE_MEM,
 				.flags	= IORESOURCE_MEM,
 			},
 			},
 			{
 			{
-				.name	= "scc_pram",
+				.name	= "pram",
 				.start	= 0x8300,
 				.start	= 0x8300,
 				.end	= 0x83ff,
 				.end	= 0x83ff,
 				.flags	= IORESOURCE_MEM,
 				.flags	= IORESOURCE_MEM,

+ 4 - 4
arch/ppc/syslib/pq2_sys.c

@@ -139,13 +139,13 @@ struct ppc_sys_spec ppc_sys_specs[] = {
 		.ppc_sys_name	= "8272",
 		.ppc_sys_name	= "8272",
 		.mask		= 0x0000ff00,
 		.mask		= 0x0000ff00,
 		.value		= 0x00000c00,
 		.value		= 0x00000c00,
-		.num_devices	= 11,
+		.num_devices	= 12,
 		.device_list = (enum ppc_sys_devices[])
 		.device_list = (enum ppc_sys_devices[])
 		{
 		{
 			MPC82xx_CPM_FCC1, MPC82xx_CPM_FCC2, MPC82xx_CPM_SCC1,
 			MPC82xx_CPM_FCC1, MPC82xx_CPM_FCC2, MPC82xx_CPM_SCC1,
-			MPC82xx_CPM_SCC2, MPC82xx_CPM_SCC3, MPC82xx_CPM_SMC1,
-			MPC82xx_CPM_SMC2, MPC82xx_CPM_SPI, MPC82xx_CPM_I2C,
-			MPC82xx_CPM_USB, MPC82xx_SEC1,
+			MPC82xx_CPM_SCC2, MPC82xx_CPM_SCC3, MPC82xx_CPM_SCC4,
+			MPC82xx_CPM_SMC1, MPC82xx_CPM_SMC2, MPC82xx_CPM_SPI,
+			MPC82xx_CPM_I2C, MPC82xx_CPM_USB, MPC82xx_SEC1,
 		},
 		},
 	},
 	},
 	/* below is a list of the 8280 family of processors */
 	/* below is a list of the 8280 family of processors */

+ 5 - 3
drivers/serial/cpm_uart/cpm_uart_core.c

@@ -1164,14 +1164,16 @@ static int __init cpm_uart_console_setup(struct console *co, char *options)
 	struct fs_uart_platform_info *pdata;
 	struct fs_uart_platform_info *pdata;
 	struct platform_device* pdev = early_uart_get_pdev(co->index);
 	struct platform_device* pdev = early_uart_get_pdev(co->index);
 
 
-	port =
-	    (struct uart_port *)&cpm_uart_ports[cpm_uart_port_map[co->index]];
-	pinfo = (struct uart_cpm_port *)port;
 	if (!pdev) {
 	if (!pdev) {
 		pr_info("cpm_uart: console: compat mode\n");
 		pr_info("cpm_uart: console: compat mode\n");
 		/* compatibility - will be cleaned up */
 		/* compatibility - will be cleaned up */
 		cpm_uart_init_portdesc();
 		cpm_uart_init_portdesc();
+	}
 
 
+	port =
+	    (struct uart_port *)&cpm_uart_ports[cpm_uart_port_map[co->index]];
+	pinfo = (struct uart_cpm_port *)port;
+	if (!pdev) {
 		if (pinfo->set_lineif)
 		if (pinfo->set_lineif)
 			pinfo->set_lineif(pinfo);
 			pinfo->set_lineif(pinfo);
 	} else {
 	} else {

+ 1 - 1
drivers/serial/cpm_uart/cpm_uart_cpm2.c

@@ -213,7 +213,7 @@ int cpm_uart_allocbuf(struct uart_cpm_port *pinfo, unsigned int is_con)
 	    L1_CACHE_ALIGN(pinfo->tx_nrfifos * pinfo->tx_fifosize);
 	    L1_CACHE_ALIGN(pinfo->tx_nrfifos * pinfo->tx_fifosize);
 	if (is_con) {
 	if (is_con) {
 		mem_addr = alloc_bootmem(memsz);
 		mem_addr = alloc_bootmem(memsz);
-		dma_addr = mem_addr;
+		dma_addr = virt_to_bus(mem_addr);
 	}
 	}
 	else
 	else
 		mem_addr = dma_alloc_coherent(NULL, memsz, &dma_addr,
 		mem_addr = dma_alloc_coherent(NULL, memsz, &dma_addr,