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

Commit 8e30a9a2 authored by Vitaly Bordug's avatar Vitaly Bordug Committed by Paul Mackerras
Browse files

[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: default avatarVitaly Bordug <vbordug@ru.mvista.com>
Signed-off-by: default avatarPaul Mackerras <paulus@samba.org>
parent 6d923f98
Loading
Loading
Loading
Loading
+5 −5
Original line number Diff line number Diff line
@@ -279,11 +279,11 @@ static int mpc8272ads_platform_notify(struct device *dev)
	static const struct platform_notify_dev_map dev_map[] = {
		{
			.bus_id = "fsl-cpm-fcc",
			.rtn = mpc8272ads_fixup_enet_pdata
			.rtn = mpc8272ads_fixup_enet_pdata,
		},
		{
			.bus_id = "fsl-cpm-scc:uart",
			.rtn = mpc
			.rtn = mpc8272ads_fixup_uart_pdata,
		},
		{
			.bus_id = NULL
@@ -335,15 +335,15 @@ struct platform_device* early_uart_get_pdev(int index)
	struct platform_device* pdev = NULL;
	if(index) { /*assume SCC4 here*/
		pdev = &ppc_sys_platform_devices[MPC82xx_CPM_SCC4];
		pinfo = &mpc8272<F12>_uart_pdata[1];
		pinfo = &mpc8272_uart_pdata[fsid_scc4_uart];
	} else { /*over 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;
	pdev->dev.platform_data = pinfo;
	ppc_sys_fixup_mem_resource(pdev, IMAP_ADDR);
	ppc_sys_fixup_mem_resource(pdev, CPM_MAP_ADDR);
	return NULL;
}

+8 −8
Original line number Diff line number Diff line
@@ -121,13 +121,13 @@ struct platform_device ppc_sys_platform_devices[] = {
		.num_resources	 = 3,
		.resource = (struct resource[]) {
			{
				.name	= "scc_mem",
				.name	= "regs",
				.start	= 0x11A00,
				.end	= 0x11A1F,
				.flags	= IORESOURCE_MEM,
			},
			{
				.name	= "scc_pram",
				.name	= "pram",
				.start	= 0x8000,
				.end	= 0x80ff,
				.flags	= IORESOURCE_MEM,
@@ -145,13 +145,13 @@ struct platform_device ppc_sys_platform_devices[] = {
		.num_resources	 = 3,
		.resource = (struct resource[]) {
			{
				.name	= "scc_mem",
				.name	= "regs",
				.start	= 0x11A20,
				.end	= 0x11A3F,
				.flags	= IORESOURCE_MEM,
			},
			{
				.name	= "scc_pram",
				.name	= "pram",
				.start	= 0x8100,
				.end	= 0x81ff,
				.flags	= IORESOURCE_MEM,
@@ -169,13 +169,13 @@ struct platform_device ppc_sys_platform_devices[] = {
		.num_resources	 = 3,
		.resource = (struct resource[]) {
			{
				.name 	= "scc_mem",
				.name 	= "regs",
				.start	= 0x11A40,
				.end	= 0x11A5F,
				.flags	= IORESOURCE_MEM,
			},
			{
				.name	= "scc_pram",
				.name	= "pram",
				.start	= 0x8200,
				.end	= 0x82ff,
				.flags	= IORESOURCE_MEM,
@@ -193,13 +193,13 @@ struct platform_device ppc_sys_platform_devices[] = {
		.num_resources	 = 3,
		.resource = (struct resource[]) {
			{
				.name	= "scc_mem",
				.name	= "regs",
				.start	= 0x11A60,
				.end	= 0x11A7F,
				.flags	= IORESOURCE_MEM,
			},
			{
				.name	= "scc_pram",
				.name	= "pram",
				.start	= 0x8300,
				.end	= 0x83ff,
				.flags	= IORESOURCE_MEM,
+4 −4
Original line number Diff line number Diff line
@@ -139,13 +139,13 @@ struct ppc_sys_spec ppc_sys_specs[] = {
		.ppc_sys_name	= "8272",
		.mask		= 0x0000ff00,
		.value		= 0x00000c00,
		.num_devices	= 11,
		.num_devices	= 12,
		.device_list = (enum ppc_sys_devices[])
		{
			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 */
+5 −3
Original line number Diff line number Diff line
@@ -1164,14 +1164,16 @@ static int __init cpm_uart_console_setup(struct console *co, char *options)
	struct fs_uart_platform_info *pdata;
	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) {
		pr_info("cpm_uart: console: compat mode\n");
		/* compatibility - will be cleaned up */
		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)
			pinfo->set_lineif(pinfo);
	} else {
+1 −1
Original line number Diff line number Diff line
@@ -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);
	if (is_con) {
		mem_addr = alloc_bootmem(memsz);
		dma_addr = mem_addr;
		dma_addr = virt_to_bus(mem_addr);
	}
	else
		mem_addr = dma_alloc_coherent(NULL, memsz, &dma_addr,