aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSudip Mukherjee <sudipm.mukherjee@gmail.com>2015-09-22 09:24:33 -0400
committerFelipe Balbi <balbi@ti.com>2015-10-01 13:40:21 -0400
commitc9760ad817091b19fcbb86c8cb5e1ab9e90d913b (patch)
tree0971bcd5186547ebadead0d4520716feac353d99
parent79a5b4aa3511f82e1398223062cd62051044288d (diff)
usb: gadget: amd5536udc: remove forward declaration of udc_create_dma_chain
Rearrange udc_create_dma_chain to remove the forward declaration. While rearranging fixed the relevant checkpatch warnings. Signed-off-by: Sudip Mukherjee <sudip@vectorindia.org> Signed-off-by: Felipe Balbi <balbi@ti.com>
-rw-r--r--drivers/usb/gadget/udc/amd5536udc.c238
1 files changed, 117 insertions, 121 deletions
diff --git a/drivers/usb/gadget/udc/amd5536udc.c b/drivers/usb/gadget/udc/amd5536udc.c
index f218520356ff..2602173d68d4 100644
--- a/drivers/usb/gadget/udc/amd5536udc.c
+++ b/drivers/usb/gadget/udc/amd5536udc.c
@@ -71,8 +71,6 @@ static void udc_soft_reset(struct udc *dev);
71static struct udc_request *udc_alloc_bna_dummy(struct udc_ep *ep); 71static struct udc_request *udc_alloc_bna_dummy(struct udc_ep *ep);
72static void udc_free_request(struct usb_ep *usbep, struct usb_request *usbreq); 72static void udc_free_request(struct usb_ep *usbep, struct usb_request *usbreq);
73static int udc_free_dma_chain(struct udc *dev, struct udc_request *req); 73static int udc_free_dma_chain(struct udc *dev, struct udc_request *req);
74static int udc_create_dma_chain(struct udc_ep *ep, struct udc_request *req,
75 unsigned long buf_len, gfp_t gfp_flags);
76static int udc_pci_probe(struct pci_dev *pdev, const struct pci_device_id *id); 74static int udc_pci_probe(struct pci_dev *pdev, const struct pci_device_id *id);
77static void udc_pci_remove(struct pci_dev *pdev); 75static void udc_pci_remove(struct pci_dev *pdev);
78 76
@@ -787,6 +785,123 @@ udc_rxfifo_read(struct udc_ep *ep, struct udc_request *req)
787 return finished; 785 return finished;
788} 786}
789 787
788/* Creates or re-inits a DMA chain */
789static int udc_create_dma_chain(
790 struct udc_ep *ep,
791 struct udc_request *req,
792 unsigned long buf_len, gfp_t gfp_flags
793)
794{
795 unsigned long bytes = req->req.length;
796 unsigned int i;
797 dma_addr_t dma_addr;
798 struct udc_data_dma *td = NULL;
799 struct udc_data_dma *last = NULL;
800 unsigned long txbytes;
801 unsigned create_new_chain = 0;
802 unsigned len;
803
804 VDBG(ep->dev, "udc_create_dma_chain: bytes=%ld buf_len=%ld\n",
805 bytes, buf_len);
806 dma_addr = DMA_DONT_USE;
807
808 /* unset L bit in first desc for OUT */
809 if (!ep->in)
810 req->td_data->status &= AMD_CLEAR_BIT(UDC_DMA_IN_STS_L);
811
812 /* alloc only new desc's if not already available */
813 len = req->req.length / ep->ep.maxpacket;
814 if (req->req.length % ep->ep.maxpacket)
815 len++;
816
817 if (len > req->chain_len) {
818 /* shorter chain already allocated before */
819 if (req->chain_len > 1)
820 udc_free_dma_chain(ep->dev, req);
821 req->chain_len = len;
822 create_new_chain = 1;
823 }
824
825 td = req->td_data;
826 /* gen. required number of descriptors and buffers */
827 for (i = buf_len; i < bytes; i += buf_len) {
828 /* create or determine next desc. */
829 if (create_new_chain) {
830 td = pci_pool_alloc(ep->dev->data_requests,
831 gfp_flags, &dma_addr);
832 if (!td)
833 return -ENOMEM;
834
835 td->status = 0;
836 } else if (i == buf_len) {
837 /* first td */
838 td = (struct udc_data_dma *)phys_to_virt(
839 req->td_data->next);
840 td->status = 0;
841 } else {
842 td = (struct udc_data_dma *)phys_to_virt(last->next);
843 td->status = 0;
844 }
845
846 if (td)
847 td->bufptr = req->req.dma + i; /* assign buffer */
848 else
849 break;
850
851 /* short packet ? */
852 if ((bytes - i) >= buf_len) {
853 txbytes = buf_len;
854 } else {
855 /* short packet */
856 txbytes = bytes - i;
857 }
858
859 /* link td and assign tx bytes */
860 if (i == buf_len) {
861 if (create_new_chain)
862 req->td_data->next = dma_addr;
863 /*
864 * else
865 * req->td_data->next = virt_to_phys(td);
866 */
867 /* write tx bytes */
868 if (ep->in) {
869 /* first desc */
870 req->td_data->status =
871 AMD_ADDBITS(req->td_data->status,
872 ep->ep.maxpacket,
873 UDC_DMA_IN_STS_TXBYTES);
874 /* second desc */
875 td->status = AMD_ADDBITS(td->status,
876 txbytes,
877 UDC_DMA_IN_STS_TXBYTES);
878 }
879 } else {
880 if (create_new_chain)
881 last->next = dma_addr;
882 /*
883 * else
884 * last->next = virt_to_phys(td);
885 */
886 if (ep->in) {
887 /* write tx bytes */
888 td->status = AMD_ADDBITS(td->status,
889 txbytes,
890 UDC_DMA_IN_STS_TXBYTES);
891 }
892 }
893 last = td;
894 }
895 /* set last bit */
896 if (td) {
897 td->status |= AMD_BIT(UDC_DMA_IN_STS_L);
898 /* last desc. points to itself */
899 req->td_data_last = td;
900 }
901
902 return 0;
903}
904
790/* create/re-init a DMA descriptor or a DMA descriptor chain */ 905/* create/re-init a DMA descriptor or a DMA descriptor chain */
791static int prep_dma(struct udc_ep *ep, struct udc_request *req, gfp_t gfp) 906static int prep_dma(struct udc_ep *ep, struct udc_request *req, gfp_t gfp)
792{ 907{
@@ -973,125 +1088,6 @@ static u32 udc_get_ppbdu_rxbytes(struct udc_request *req)
973 1088
974} 1089}
975 1090
976/* Creates or re-inits a DMA chain */
977static int udc_create_dma_chain(
978 struct udc_ep *ep,
979 struct udc_request *req,
980 unsigned long buf_len, gfp_t gfp_flags
981)
982{
983 unsigned long bytes = req->req.length;
984 unsigned int i;
985 dma_addr_t dma_addr;
986 struct udc_data_dma *td = NULL;
987 struct udc_data_dma *last = NULL;
988 unsigned long txbytes;
989 unsigned create_new_chain = 0;
990 unsigned len;
991
992 VDBG(ep->dev, "udc_create_dma_chain: bytes=%ld buf_len=%ld\n",
993 bytes, buf_len);
994 dma_addr = DMA_DONT_USE;
995
996 /* unset L bit in first desc for OUT */
997 if (!ep->in)
998 req->td_data->status &= AMD_CLEAR_BIT(UDC_DMA_IN_STS_L);
999
1000 /* alloc only new desc's if not already available */
1001 len = req->req.length / ep->ep.maxpacket;
1002 if (req->req.length % ep->ep.maxpacket)
1003 len++;
1004
1005 if (len > req->chain_len) {
1006 /* shorter chain already allocated before */
1007 if (req->chain_len > 1)
1008 udc_free_dma_chain(ep->dev, req);
1009 req->chain_len = len;
1010 create_new_chain = 1;
1011 }
1012
1013 td = req->td_data;
1014 /* gen. required number of descriptors and buffers */
1015 for (i = buf_len; i < bytes; i += buf_len) {
1016 /* create or determine next desc. */
1017 if (create_new_chain) {
1018
1019 td = pci_pool_alloc(ep->dev->data_requests,
1020 gfp_flags, &dma_addr);
1021 if (!td)
1022 return -ENOMEM;
1023
1024 td->status = 0;
1025 } else if (i == buf_len) {
1026 /* first td */
1027 td = (struct udc_data_dma *) phys_to_virt(
1028 req->td_data->next);
1029 td->status = 0;
1030 } else {
1031 td = (struct udc_data_dma *) phys_to_virt(last->next);
1032 td->status = 0;
1033 }
1034
1035
1036 if (td)
1037 td->bufptr = req->req.dma + i; /* assign buffer */
1038 else
1039 break;
1040
1041 /* short packet ? */
1042 if ((bytes - i) >= buf_len) {
1043 txbytes = buf_len;
1044 } else {
1045 /* short packet */
1046 txbytes = bytes - i;
1047 }
1048
1049 /* link td and assign tx bytes */
1050 if (i == buf_len) {
1051 if (create_new_chain)
1052 req->td_data->next = dma_addr;
1053 /*
1054 else
1055 req->td_data->next = virt_to_phys(td);
1056 */
1057 /* write tx bytes */
1058 if (ep->in) {
1059 /* first desc */
1060 req->td_data->status =
1061 AMD_ADDBITS(req->td_data->status,
1062 ep->ep.maxpacket,
1063 UDC_DMA_IN_STS_TXBYTES);
1064 /* second desc */
1065 td->status = AMD_ADDBITS(td->status,
1066 txbytes,
1067 UDC_DMA_IN_STS_TXBYTES);
1068 }
1069 } else {
1070 if (create_new_chain)
1071 last->next = dma_addr;
1072 /*
1073 else
1074 last->next = virt_to_phys(td);
1075 */
1076 if (ep->in) {
1077 /* write tx bytes */
1078 td->status = AMD_ADDBITS(td->status,
1079 txbytes,
1080 UDC_DMA_IN_STS_TXBYTES);
1081 }
1082 }
1083 last = td;
1084 }
1085 /* set last bit */
1086 if (td) {
1087 td->status |= AMD_BIT(UDC_DMA_IN_STS_L);
1088 /* last desc. points to itself */
1089 req->td_data_last = td;
1090 }
1091
1092 return 0;
1093}
1094
1095/* Enabling RX DMA */ 1091/* Enabling RX DMA */
1096static void udc_set_rde(struct udc *dev) 1092static void udc_set_rde(struct udc *dev)
1097{ 1093{