Lines Matching defs:fotg210

19 #include "fotg210.h"
30 u32 value = ioread32(ep->fotg210->reg + FOTG210_DMISGR1);
36 iowrite32(value, ep->fotg210->reg + FOTG210_DMISGR1);
41 u32 value = ioread32(ep->fotg210->reg + FOTG210_DMISGR1);
47 iowrite32(value, ep->fotg210->reg + FOTG210_DMISGR1);
50 static void fotg210_set_cxdone(struct fotg210_udc *fotg210)
52 u32 value = ioread32(fotg210->reg + FOTG210_DCFESR);
55 iowrite32(value, fotg210->reg + FOTG210_DCFESR);
64 if (ep->fotg210->gadget.speed == USB_SPEED_UNKNOWN)
69 spin_unlock(&ep->fotg210->lock);
71 spin_lock(&ep->fotg210->lock);
77 fotg210_set_cxdone(ep->fotg210);
84 struct fotg210_udc *fotg210 = ep->fotg210;
92 val = ioread32(fotg210->reg + FOTG210_EPMAP);
95 iowrite32(val, fotg210->reg + FOTG210_EPMAP);
98 val = ioread32(fotg210->reg + FOTG210_FIFOMAP);
101 iowrite32(val, fotg210->reg + FOTG210_FIFOMAP);
104 val = ioread32(fotg210->reg + FOTG210_FIFOCF);
106 iowrite32(val, fotg210->reg + FOTG210_FIFOCF);
111 struct fotg210_udc *fotg210 = ep->fotg210;
114 val = ioread32(fotg210->reg + FOTG210_FIFOMAP);
116 iowrite32(val, fotg210->reg + FOTG210_FIFOMAP);
121 struct fotg210_udc *fotg210 = ep->fotg210;
124 val = ioread32(fotg210->reg + FOTG210_FIFOCF);
126 iowrite32(val, fotg210->reg + FOTG210_FIFOCF);
132 struct fotg210_udc *fotg210 = ep->fotg210;
137 val = ioread32(fotg210->reg + offset);
139 iowrite32(val, fotg210->reg + offset);
145 struct fotg210_udc *fotg210 = ep->fotg210;
152 fotg210->ep[ep->epnum] = ep;
173 static void fotg210_reset_tseq(struct fotg210_udc *fotg210, u8 epnum)
175 struct fotg210_ep *ep = fotg210->ep[epnum];
180 fotg210->reg + FOTG210_INEPMPSR(epnum) :
181 fotg210->reg + FOTG210_OUTEPMPSR(epnum);
204 fotg210_reset_tseq(ep->fotg210, ep->epnum);
222 spin_lock_irqsave(&ep->fotg210->lock, flags);
224 spin_unlock_irqrestore(&ep->fotg210->lock, flags);
257 struct fotg210_udc *fotg210 = ep->fotg210;
260 value = ioread32(fotg210->reg + FOTG210_DMACPSR1);
263 iowrite32(value, fotg210->reg + FOTG210_DMACPSR1);
266 value = ioread32(fotg210->reg + FOTG210_DMATFNR);
271 iowrite32(value, fotg210->reg + FOTG210_DMATFNR);
274 iowrite32(d, fotg210->reg + FOTG210_DMACPSR2);
277 value = ioread32(fotg210->reg + FOTG210_DMISGR2);
279 iowrite32(value, fotg210->reg + FOTG210_DMISGR2);
282 value = ioread32(fotg210->reg + FOTG210_DMACPSR1);
284 iowrite32(value, fotg210->reg + FOTG210_DMACPSR1);
289 iowrite32(DMATFNR_DISDMA, ep->fotg210->reg + FOTG210_DMATFNR);
297 value = ioread32(ep->fotg210->reg + FOTG210_DISGR2);
304 iowrite32(value, ep->fotg210->reg + FOTG210_DISGR2);
308 value = ioread32(ep->fotg210->reg + FOTG210_DMACPSR1);
310 iowrite32(value, ep->fotg210->reg + FOTG210_DMACPSR1);
314 value = ioread32(ep->fotg210->reg +
317 iowrite32(value, ep->fotg210->reg +
320 value = ioread32(ep->fotg210->reg + FOTG210_DCFESR);
322 iowrite32(value, ep->fotg210->reg + FOTG210_DCFESR);
329 struct device *dev = &ep->fotg210->gadget.dev;
340 length = ioread32(ep->fotg210->reg +
386 u32 value = ioread32(ep->fotg210->reg + FOTG210_DMISGR0);
389 iowrite32(value, ep->fotg210->reg + FOTG210_DMISGR0);
404 if (ep->fotg210->gadget.speed == USB_SPEED_UNKNOWN)
407 spin_lock_irqsave(&ep->fotg210->lock, flags);
422 spin_unlock_irqrestore(&ep->fotg210->lock, flags);
436 spin_lock_irqsave(&ep->fotg210->lock, flags);
439 spin_unlock_irqrestore(&ep->fotg210->lock, flags);
446 struct fotg210_udc *fotg210 = ep->fotg210;
453 value = ioread32(fotg210->reg + FOTG210_DCFESR);
458 fotg210->reg + FOTG210_INEPMPSR(ep->epnum) :
459 fotg210->reg + FOTG210_OUTEPMPSR(ep->epnum);
467 struct fotg210_udc *fotg210 = ep->fotg210;
472 fotg210->reg + FOTG210_INEPMPSR(ep->epnum) :
473 fotg210->reg + FOTG210_OUTEPMPSR(ep->epnum);
482 struct fotg210_udc *fotg210;
487 fotg210 = ep->fotg210;
489 spin_lock_irqsave(&ep->fotg210->lock, flags);
497 fotg210_reset_tseq(fotg210, ep->epnum);
505 spin_unlock_irqrestore(&ep->fotg210->lock, flags);
538 static void fotg210_clear_tx0byte(struct fotg210_udc *fotg210)
540 u32 value = ioread32(fotg210->reg + FOTG210_TX0BYTE);
544 iowrite32(value, fotg210->reg + FOTG210_TX0BYTE);
547 static void fotg210_clear_rx0byte(struct fotg210_udc *fotg210)
549 u32 value = ioread32(fotg210->reg + FOTG210_RX0BYTE);
553 iowrite32(value, fotg210->reg + FOTG210_RX0BYTE);
557 static void fotg210_rdsetupp(struct fotg210_udc *fotg210,
565 iowrite32(DMATFNR_ACC_CXF, fotg210->reg + FOTG210_DMATFNR);
568 data = ioread32(fotg210->reg + FOTG210_CXPORT);
578 data = ioread32(fotg210->reg + FOTG210_CXPORT);
582 data = ioread32(fotg210->reg + FOTG210_CXPORT);
587 data = ioread32(fotg210->reg + FOTG210_CXPORT);
596 iowrite32(DMATFNR_DISDMA, fotg210->reg + FOTG210_DMATFNR);
599 static void fotg210_set_configuration(struct fotg210_udc *fotg210)
601 u32 value = ioread32(fotg210->reg + FOTG210_DAR);
604 iowrite32(value, fotg210->reg + FOTG210_DAR);
607 static void fotg210_set_dev_addr(struct fotg210_udc *fotg210, u32 addr)
609 u32 value = ioread32(fotg210->reg + FOTG210_DAR);
612 iowrite32(value, fotg210->reg + FOTG210_DAR);
615 static void fotg210_set_cxstall(struct fotg210_udc *fotg210)
617 u32 value = ioread32(fotg210->reg + FOTG210_DCFESR);
620 iowrite32(value, fotg210->reg + FOTG210_DCFESR);
623 static void fotg210_request_error(struct fotg210_udc *fotg210)
625 fotg210_set_cxstall(fotg210);
629 static void fotg210_set_address(struct fotg210_udc *fotg210,
633 fotg210_request_error(fotg210);
635 fotg210_set_dev_addr(fotg210, le16_to_cpu(ctrl->wValue));
636 fotg210_set_cxdone(fotg210);
640 static void fotg210_set_feature(struct fotg210_udc *fotg210,
645 fotg210_set_cxdone(fotg210);
648 fotg210_set_cxdone(fotg210);
654 fotg210_set_epnstall(fotg210->ep[epnum]);
656 fotg210_set_cxstall(fotg210);
657 fotg210_set_cxdone(fotg210);
661 fotg210_request_error(fotg210);
666 static void fotg210_clear_feature(struct fotg210_udc *fotg210,
670 fotg210->ep[ctrl->wIndex & USB_ENDPOINT_NUMBER_MASK];
674 fotg210_set_cxdone(fotg210);
677 fotg210_set_cxdone(fotg210);
682 fotg210_set_cxdone(fotg210);
688 fotg210_set_cxdone(fotg210);
691 fotg210_request_error(fotg210);
698 struct fotg210_udc *fotg210 = ep->fotg210;
703 fotg210->reg + FOTG210_INEPMPSR(ep->epnum) :
704 fotg210->reg + FOTG210_OUTEPMPSR(ep->epnum);
709 static void fotg210_get_status(struct fotg210_udc *fotg210,
716 fotg210->ep0_data = cpu_to_le16(1 << USB_DEVICE_SELF_POWERED);
719 fotg210->ep0_data = cpu_to_le16(0);
724 fotg210->ep0_data =
725 cpu_to_le16(fotg210_is_epnstall(fotg210->ep[epnum])
728 fotg210_request_error(fotg210);
732 fotg210_request_error(fotg210);
736 fotg210->ep0_req->buf = &fotg210->ep0_data;
737 fotg210->ep0_req->length = 2;
739 spin_unlock(&fotg210->lock);
740 fotg210_ep_queue(fotg210->gadget.ep0, fotg210->ep0_req, GFP_ATOMIC);
741 spin_lock(&fotg210->lock);
744 static int fotg210_setup_packet(struct fotg210_udc *fotg210,
750 fotg210_rdsetupp(fotg210, p);
752 fotg210->ep[0]->dir_in = ctrl->bRequestType & USB_DIR_IN;
754 if (fotg210->gadget.speed == USB_SPEED_UNKNOWN) {
755 u32 value = ioread32(fotg210->reg + FOTG210_DMCR);
756 fotg210->gadget.speed = value & DMCR_HS_EN ?
764 fotg210_get_status(fotg210, ctrl);
767 fotg210_clear_feature(fotg210, ctrl);
770 fotg210_set_feature(fotg210, ctrl);
773 fotg210_set_address(fotg210, ctrl);
776 fotg210_set_configuration(fotg210);
790 static void fotg210_ep0out(struct fotg210_udc *fotg210)
792 struct fotg210_ep *ep = fotg210->ep[0];
810 static void fotg210_ep0in(struct fotg210_udc *fotg210)
812 struct fotg210_ep *ep = fotg210->ep[0];
826 fotg210_set_cxdone(fotg210);
830 static void fotg210_clear_comabt_int(struct fotg210_udc *fotg210)
832 u32 value = ioread32(fotg210->reg + FOTG210_DISGR0);
835 iowrite32(value, fotg210->reg + FOTG210_DISGR0);
852 int disgr1 = ioread32(ep->fotg210->reg + FOTG210_DISGR1);
867 struct fotg210_udc *fotg210 = _fotg210;
868 u32 int_grp = ioread32(fotg210->reg + FOTG210_DIGR);
869 u32 int_msk = ioread32(fotg210->reg + FOTG210_DMIGR);
873 spin_lock(&fotg210->lock);
876 void __iomem *reg = fotg210->reg + FOTG210_DISGR2;
878 u32 int_msk2 = ioread32(fotg210->reg + FOTG210_DMISGR2);
887 pr_info("fotg210 udc reset\n");
893 pr_info("fotg210 udc suspend\n");
899 pr_info("fotg210 udc resume\n");
905 pr_info("fotg210 iso sequence error\n");
911 pr_info("fotg210 iso sequence abort\n");
914 fotg210_clear_tx0byte(fotg210);
918 pr_info("fotg210 transferred 0 byte\n");
921 fotg210_clear_rx0byte(fotg210);
925 pr_info("fotg210 received 0 byte\n");
935 void __iomem *reg = fotg210->reg + FOTG210_DISGR0;
937 u32 int_msk0 = ioread32(fotg210->reg + FOTG210_DMISGR0);
944 fotg210_clear_comabt_int(fotg210);
945 pr_info("fotg210 CX command abort\n");
949 if (fotg210_setup_packet(fotg210, &ctrl)) {
950 spin_unlock(&fotg210->lock);
951 if (fotg210->driver->setup(&fotg210->gadget,
953 fotg210_set_cxstall(fotg210);
954 spin_lock(&fotg210->lock);
958 pr_info("fotg210 cmd end\n");
961 fotg210_ep0in(fotg210);
964 fotg210_ep0out(fotg210);
967 fotg210_set_cxstall(fotg210);
968 pr_info("fotg210 ep0 fail\n");
973 void __iomem *reg = fotg210->reg + FOTG210_DISGR1;
975 u32 int_msk1 = ioread32(fotg210->reg + FOTG210_DMISGR1);
982 fotg210_in_fifo_handler(fotg210->ep[fifo + 1]);
986 fotg210_out_fifo_handler(fotg210->ep[fifo + 1]);
990 spin_unlock(&fotg210->lock);
995 static void fotg210_disable_unplug(struct fotg210_udc *fotg210)
997 u32 reg = ioread32(fotg210->reg + FOTG210_PHYTMSR);
1000 iowrite32(reg, fotg210->reg + FOTG210_PHYTMSR);
1006 struct fotg210_udc *fotg210 = gadget_to_fotg210(g);
1011 fotg210->driver = driver;
1014 value = ioread32(fotg210->reg + FOTG210_DMCR);
1016 iowrite32(value, fotg210->reg + FOTG210_DMCR);
1021 static void fotg210_init(struct fotg210_udc *fotg210)
1027 fotg210->reg + FOTG210_GMIR);
1030 value = ioread32(fotg210->reg + FOTG210_DMCR);
1032 iowrite32(value, fotg210->reg + FOTG210_DMCR);
1038 fotg210->reg + FOTG210_DMISGR2);
1041 iowrite32(~(u32)0, fotg210->reg + FOTG210_DMISGR1);
1044 value = ioread32(fotg210->reg + FOTG210_DMISGR0);
1046 iowrite32(value, fotg210->reg + FOTG210_DMISGR0);
1051 struct fotg210_udc *fotg210 = gadget_to_fotg210(g);
1054 spin_lock_irqsave(&fotg210->lock, flags);
1056 fotg210_init(fotg210);
1057 fotg210->driver = NULL;
1059 spin_unlock_irqrestore(&fotg210->lock, flags);
1071 struct fotg210_udc *fotg210 = platform_get_drvdata(pdev);
1074 usb_del_gadget_udc(&fotg210->gadget);
1075 iounmap(fotg210->reg);
1076 free_irq(platform_get_irq(pdev, 0), fotg210);
1078 fotg210_ep_free_request(&fotg210->ep[0]->ep, fotg210->ep0_req);
1080 kfree(fotg210->ep[i]);
1081 kfree(fotg210);
1089 struct fotg210_udc *fotg210 = NULL;
1109 fotg210 = kzalloc(sizeof(struct fotg210_udc), GFP_KERNEL);
1110 if (fotg210 == NULL)
1117 fotg210->ep[i] = _ep[i];
1120 fotg210->reg = ioremap(res->start, resource_size(res));
1121 if (fotg210->reg == NULL) {
1126 spin_lock_init(&fotg210->lock);
1128 platform_set_drvdata(pdev, fotg210);
1130 fotg210->gadget.ops = &fotg210_gadget_ops;
1132 fotg210->gadget.max_speed = USB_SPEED_HIGH;
1133 fotg210->gadget.dev.parent = &pdev->dev;
1134 fotg210->gadget.dev.dma_mask = pdev->dev.dma_mask;
1135 fotg210->gadget.name = udc_name;
1137 INIT_LIST_HEAD(&fotg210->gadget.ep_list);
1140 struct fotg210_ep *ep = fotg210->ep[i];
1143 INIT_LIST_HEAD(&fotg210->ep[i]->ep.ep_list);
1144 list_add_tail(&fotg210->ep[i]->ep.ep_list,
1145 &fotg210->gadget.ep_list);
1147 ep->fotg210 = fotg210;
1164 usb_ep_set_maxpacket_limit(&fotg210->ep[0]->ep, 0x40);
1165 fotg210->gadget.ep0 = &fotg210->ep[0]->ep;
1166 INIT_LIST_HEAD(&fotg210->gadget.ep0->ep_list);
1168 fotg210->ep0_req = fotg210_ep_alloc_request(&fotg210->ep[0]->ep,
1170 if (fotg210->ep0_req == NULL)
1173 fotg210_init(fotg210);
1175 fotg210_disable_unplug(fotg210);
1178 udc_name, fotg210);
1184 ret = usb_add_gadget_udc(&pdev->dev, &fotg210->gadget);
1193 free_irq(ires->start, fotg210);
1196 fotg210_ep_free_request(&fotg210->ep[0]->ep, fotg210->ep0_req);
1199 iounmap(fotg210->reg);
1203 kfree(fotg210->ep[i]);
1204 kfree(fotg210);