diff options
Diffstat (limited to 'arch/powerpc/sysdev/qe_lib/ucc_fast.c')
| -rw-r--r-- | arch/powerpc/sysdev/qe_lib/ucc_fast.c | 125 | 
1 files changed, 60 insertions, 65 deletions
diff --git a/arch/powerpc/sysdev/qe_lib/ucc_fast.c b/arch/powerpc/sysdev/qe_lib/ucc_fast.c index 3df202e8d33..3223acbc39e 100644 --- a/arch/powerpc/sysdev/qe_lib/ucc_fast.c +++ b/arch/powerpc/sysdev/qe_lib/ucc_fast.c @@ -30,46 +30,45 @@  void ucc_fast_dump_regs(struct ucc_fast_private * uccf)  { -	printk(KERN_INFO "UCC%d Fast registers:", uccf->uf_info->ucc_num); -	printk(KERN_INFO "Base address: 0x%08x", (u32) uccf->uf_regs); +	printk(KERN_INFO "UCC%u Fast registers:\n", uccf->uf_info->ucc_num); +	printk(KERN_INFO "Base address: 0x%p\n", uccf->uf_regs); -	printk(KERN_INFO "gumr  : addr - 0x%08x, val - 0x%08x", -		  (u32) & uccf->uf_regs->gumr, in_be32(&uccf->uf_regs->gumr)); -	printk(KERN_INFO "upsmr : addr - 0x%08x, val - 0x%08x", -		  (u32) & uccf->uf_regs->upsmr, in_be32(&uccf->uf_regs->upsmr)); -	printk(KERN_INFO "utodr : addr - 0x%08x, val - 0x%04x", -		  (u32) & uccf->uf_regs->utodr, in_be16(&uccf->uf_regs->utodr)); -	printk(KERN_INFO "udsr  : addr - 0x%08x, val - 0x%04x", -		  (u32) & uccf->uf_regs->udsr, in_be16(&uccf->uf_regs->udsr)); -	printk(KERN_INFO "ucce  : addr - 0x%08x, val - 0x%08x", -		  (u32) & uccf->uf_regs->ucce, in_be32(&uccf->uf_regs->ucce)); -	printk(KERN_INFO "uccm  : addr - 0x%08x, val - 0x%08x", -		  (u32) & uccf->uf_regs->uccm, in_be32(&uccf->uf_regs->uccm)); -	printk(KERN_INFO "uccs  : addr - 0x%08x, val - 0x%02x", -		  (u32) & uccf->uf_regs->uccs, uccf->uf_regs->uccs); -	printk(KERN_INFO "urfb  : addr - 0x%08x, val - 0x%08x", -		  (u32) & uccf->uf_regs->urfb, in_be32(&uccf->uf_regs->urfb)); -	printk(KERN_INFO "urfs  : addr - 0x%08x, val - 0x%04x", -		  (u32) & uccf->uf_regs->urfs, in_be16(&uccf->uf_regs->urfs)); -	printk(KERN_INFO "urfet : addr - 0x%08x, val - 0x%04x", -		  (u32) & uccf->uf_regs->urfet, in_be16(&uccf->uf_regs->urfet)); -	printk(KERN_INFO "urfset: addr - 0x%08x, val - 0x%04x", -		  (u32) & uccf->uf_regs->urfset, -		  in_be16(&uccf->uf_regs->urfset)); -	printk(KERN_INFO "utfb  : addr - 0x%08x, val - 0x%08x", -		  (u32) & uccf->uf_regs->utfb, in_be32(&uccf->uf_regs->utfb)); -	printk(KERN_INFO "utfs  : addr - 0x%08x, val - 0x%04x", -		  (u32) & uccf->uf_regs->utfs, in_be16(&uccf->uf_regs->utfs)); -	printk(KERN_INFO "utfet : addr - 0x%08x, val - 0x%04x", -		  (u32) & uccf->uf_regs->utfet, in_be16(&uccf->uf_regs->utfet)); -	printk(KERN_INFO "utftt : addr - 0x%08x, val - 0x%04x", -		  (u32) & uccf->uf_regs->utftt, in_be16(&uccf->uf_regs->utftt)); -	printk(KERN_INFO "utpt  : addr - 0x%08x, val - 0x%04x", -		  (u32) & uccf->uf_regs->utpt, in_be16(&uccf->uf_regs->utpt)); -	printk(KERN_INFO "urtry : addr - 0x%08x, val - 0x%08x", -		  (u32) & uccf->uf_regs->urtry, in_be32(&uccf->uf_regs->urtry)); -	printk(KERN_INFO "guemr : addr - 0x%08x, val - 0x%02x", -		  (u32) & uccf->uf_regs->guemr, uccf->uf_regs->guemr); +	printk(KERN_INFO "gumr  : addr=0x%p, val=0x%08x\n", +		  &uccf->uf_regs->gumr, in_be32(&uccf->uf_regs->gumr)); +	printk(KERN_INFO "upsmr : addr=0x%p, val=0x%08x\n", +		  &uccf->uf_regs->upsmr, in_be32(&uccf->uf_regs->upsmr)); +	printk(KERN_INFO "utodr : addr=0x%p, val=0x%04x\n", +		  &uccf->uf_regs->utodr, in_be16(&uccf->uf_regs->utodr)); +	printk(KERN_INFO "udsr  : addr=0x%p, val=0x%04x\n", +		  &uccf->uf_regs->udsr, in_be16(&uccf->uf_regs->udsr)); +	printk(KERN_INFO "ucce  : addr=0x%p, val=0x%08x\n", +		  &uccf->uf_regs->ucce, in_be32(&uccf->uf_regs->ucce)); +	printk(KERN_INFO "uccm  : addr=0x%p, val=0x%08x\n", +		  &uccf->uf_regs->uccm, in_be32(&uccf->uf_regs->uccm)); +	printk(KERN_INFO "uccs  : addr=0x%p, val=0x%02x\n", +		  &uccf->uf_regs->uccs, uccf->uf_regs->uccs); +	printk(KERN_INFO "urfb  : addr=0x%p, val=0x%08x\n", +		  &uccf->uf_regs->urfb, in_be32(&uccf->uf_regs->urfb)); +	printk(KERN_INFO "urfs  : addr=0x%p, val=0x%04x\n", +		  &uccf->uf_regs->urfs, in_be16(&uccf->uf_regs->urfs)); +	printk(KERN_INFO "urfet : addr=0x%p, val=0x%04x\n", +		  &uccf->uf_regs->urfet, in_be16(&uccf->uf_regs->urfet)); +	printk(KERN_INFO "urfset: addr=0x%p, val=0x%04x\n", +		  &uccf->uf_regs->urfset, in_be16(&uccf->uf_regs->urfset)); +	printk(KERN_INFO "utfb  : addr=0x%p, val=0x%08x\n", +		  &uccf->uf_regs->utfb, in_be32(&uccf->uf_regs->utfb)); +	printk(KERN_INFO "utfs  : addr=0x%p, val=0x%04x\n", +		  &uccf->uf_regs->utfs, in_be16(&uccf->uf_regs->utfs)); +	printk(KERN_INFO "utfet : addr=0x%p, val=0x%04x\n", +		  &uccf->uf_regs->utfet, in_be16(&uccf->uf_regs->utfet)); +	printk(KERN_INFO "utftt : addr=0x%p, val=0x%04x\n", +		  &uccf->uf_regs->utftt, in_be16(&uccf->uf_regs->utftt)); +	printk(KERN_INFO "utpt  : addr=0x%p, val=0x%04x\n", +		  &uccf->uf_regs->utpt, in_be16(&uccf->uf_regs->utpt)); +	printk(KERN_INFO "urtry : addr=0x%p, val=0x%08x\n", +		  &uccf->uf_regs->urtry, in_be32(&uccf->uf_regs->urtry)); +	printk(KERN_INFO "guemr : addr=0x%p, val=0x%02x\n", +		  &uccf->uf_regs->guemr, uccf->uf_regs->guemr);  }  EXPORT_SYMBOL(ucc_fast_dump_regs); @@ -149,55 +148,57 @@ int ucc_fast_init(struct ucc_fast_info * uf_info, struct ucc_fast_private ** ucc  	/* check if the UCC port number is in range. */  	if ((uf_info->ucc_num < 0) || (uf_info->ucc_num > UCC_MAX_NUM - 1)) { -		printk(KERN_ERR "%s: illegal UCC number", __FUNCTION__); +		printk(KERN_ERR "%s: illegal UCC number\n", __FUNCTION__);  		return -EINVAL;  	}  	/* Check that 'max_rx_buf_length' is properly aligned (4). */  	if (uf_info->max_rx_buf_length & (UCC_FAST_MRBLR_ALIGNMENT - 1)) { -		printk(KERN_ERR "%s: max_rx_buf_length not aligned", __FUNCTION__); +		printk(KERN_ERR "%s: max_rx_buf_length not aligned\n", +			__FUNCTION__);  		return -EINVAL;  	}  	/* Validate Virtual Fifo register values */  	if (uf_info->urfs < UCC_FAST_URFS_MIN_VAL) { -		printk(KERN_ERR "%s: urfs is too small", __FUNCTION__); +		printk(KERN_ERR "%s: urfs is too small\n", __FUNCTION__);  		return -EINVAL;  	}  	if (uf_info->urfs & (UCC_FAST_VIRT_FIFO_REGS_ALIGNMENT - 1)) { -		printk(KERN_ERR "%s: urfs is not aligned", __FUNCTION__); +		printk(KERN_ERR "%s: urfs is not aligned\n", __FUNCTION__);  		return -EINVAL;  	}  	if (uf_info->urfet & (UCC_FAST_VIRT_FIFO_REGS_ALIGNMENT - 1)) { -		printk(KERN_ERR "%s: urfet is not aligned.", __FUNCTION__); +		printk(KERN_ERR "%s: urfet is not aligned.\n", __FUNCTION__);  		return -EINVAL;  	}  	if (uf_info->urfset & (UCC_FAST_VIRT_FIFO_REGS_ALIGNMENT - 1)) { -		printk(KERN_ERR "%s: urfset is not aligned", __FUNCTION__); +		printk(KERN_ERR "%s: urfset is not aligned\n", __FUNCTION__);  		return -EINVAL;  	}  	if (uf_info->utfs & (UCC_FAST_VIRT_FIFO_REGS_ALIGNMENT - 1)) { -		printk(KERN_ERR "%s: utfs is not aligned", __FUNCTION__); +		printk(KERN_ERR "%s: utfs is not aligned\n", __FUNCTION__);  		return -EINVAL;  	}  	if (uf_info->utfet & (UCC_FAST_VIRT_FIFO_REGS_ALIGNMENT - 1)) { -		printk(KERN_ERR "%s: utfet is not aligned", __FUNCTION__); +		printk(KERN_ERR "%s: utfet is not aligned\n", __FUNCTION__);  		return -EINVAL;  	}  	if (uf_info->utftt & (UCC_FAST_VIRT_FIFO_REGS_ALIGNMENT - 1)) { -		printk(KERN_ERR "%s: utftt is not aligned", __FUNCTION__); +		printk(KERN_ERR "%s: utftt is not aligned\n", __FUNCTION__);  		return -EINVAL;  	}  	uccf = kzalloc(sizeof(struct ucc_fast_private), GFP_KERNEL);  	if (!uccf) { -		printk(KERN_ERR "%s: Cannot allocate private data", __FUNCTION__); +		printk(KERN_ERR "%s: Cannot allocate private data\n", +			__FUNCTION__);  		return -ENOMEM;  	} @@ -206,7 +207,7 @@ int ucc_fast_init(struct ucc_fast_info * uf_info, struct ucc_fast_private ** ucc  	/* Set the PHY base address */  	uccf->uf_regs = ioremap(uf_info->regs, sizeof(struct ucc_fast));  	if (uccf->uf_regs == NULL) { -		printk(KERN_ERR "%s: Cannot map UCC registers", __FUNCTION__); +		printk(KERN_ERR "%s: Cannot map UCC registers\n", __FUNCTION__);  		return -ENOMEM;  	} @@ -226,18 +227,10 @@ int ucc_fast_init(struct ucc_fast_info * uf_info, struct ucc_fast_private ** ucc  	uccf->rx_discarded = 0;  #endif				/* STATISTICS */ -	/* Init Guemr register */ -	if ((ret = ucc_init_guemr((struct ucc_common *) (uf_regs)))) { -		printk(KERN_ERR "%s: cannot init GUEMR", __FUNCTION__); -		ucc_fast_free(uccf); -		return ret; -	} -  	/* Set UCC to fast type */ -	if ((ret = ucc_set_type(uf_info->ucc_num, -				(struct ucc_common *) (uf_regs), -				UCC_SPEED_TYPE_FAST))) { -		printk(KERN_ERR "%s: cannot set UCC type", __FUNCTION__); +	ret = ucc_set_type(uf_info->ucc_num, UCC_SPEED_TYPE_FAST); +	if (ret) { +		printk(KERN_ERR "%s: cannot set UCC type\n", __FUNCTION__);  		ucc_fast_free(uccf);  		return ret;  	} @@ -276,7 +269,8 @@ int ucc_fast_init(struct ucc_fast_info * uf_info, struct ucc_fast_private ** ucc  	uccf->ucc_fast_tx_virtual_fifo_base_offset =  	    qe_muram_alloc(uf_info->utfs, UCC_FAST_VIRT_FIFO_REGS_ALIGNMENT);  	if (IS_ERR_VALUE(uccf->ucc_fast_tx_virtual_fifo_base_offset)) { -		printk(KERN_ERR "%s: cannot allocate MURAM for TX FIFO", __FUNCTION__); +		printk(KERN_ERR "%s: cannot allocate MURAM for TX FIFO\n", +			__FUNCTION__);  		uccf->ucc_fast_tx_virtual_fifo_base_offset = 0;  		ucc_fast_free(uccf);  		return -ENOMEM; @@ -288,7 +282,8 @@ int ucc_fast_init(struct ucc_fast_info * uf_info, struct ucc_fast_private ** ucc  			   UCC_FAST_RECEIVE_VIRTUAL_FIFO_SIZE_FUDGE_FACTOR,  			   UCC_FAST_VIRT_FIFO_REGS_ALIGNMENT);  	if (IS_ERR_VALUE(uccf->ucc_fast_rx_virtual_fifo_base_offset)) { -		printk(KERN_ERR "%s: cannot allocate MURAM for RX FIFO", __FUNCTION__); +		printk(KERN_ERR "%s: cannot allocate MURAM for RX FIFO\n", +			__FUNCTION__);  		uccf->ucc_fast_rx_virtual_fifo_base_offset = 0;  		ucc_fast_free(uccf);  		return -ENOMEM; @@ -318,7 +313,7 @@ int ucc_fast_init(struct ucc_fast_info * uf_info, struct ucc_fast_private ** ucc  		if ((uf_info->rx_clock != QE_CLK_NONE) &&  		    ucc_set_qe_mux_rxtx(uf_info->ucc_num, uf_info->rx_clock,  					COMM_DIR_RX)) { -			printk(KERN_ERR "%s: illegal value for RX clock", +			printk(KERN_ERR "%s: illegal value for RX clock\n",  			       __FUNCTION__);  			ucc_fast_free(uccf);  			return -EINVAL; @@ -327,7 +322,7 @@ int ucc_fast_init(struct ucc_fast_info * uf_info, struct ucc_fast_private ** ucc  		if ((uf_info->tx_clock != QE_CLK_NONE) &&  		    ucc_set_qe_mux_rxtx(uf_info->ucc_num, uf_info->tx_clock,  					COMM_DIR_TX)) { -			printk(KERN_ERR "%s: illegal value for TX clock", +			printk(KERN_ERR "%s: illegal value for TX clock\n",  			       __FUNCTION__);  			ucc_fast_free(uccf);  			return -EINVAL;  |