• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /asuswrt-rt-n18u-9.0.0.4.380.2695/release/src-rt-6.x.4708/linux/linux-2.6.36/drivers/usb/storage/

Lines Matching refs:us

123 #define MEDIA_PORT(us) us->srb->device->lun
124 #define MEDIA_INFO(us) ((struct alauda_info *)us->extra)->port[MEDIA_PORT(us)]
130 static int init_alauda(struct us_data *us);
316 static int alauda_get_media_status(struct us_data *us, unsigned char *data)
321 if (MEDIA_PORT(us) == ALAUDA_PORT_XD)
326 rc = usb_stor_ctrl_transfer(us, us->recv_ctrl_pipe,
339 static int alauda_ack_media(struct us_data *us)
343 if (MEDIA_PORT(us) == ALAUDA_PORT_XD)
348 return usb_stor_ctrl_transfer(us, us->send_ctrl_pipe,
356 static int alauda_get_media_signature(struct us_data *us, unsigned char *data)
360 if (MEDIA_PORT(us) == ALAUDA_PORT_XD)
365 return usb_stor_ctrl_transfer(us, us->recv_ctrl_pipe,
372 static int alauda_reset_media(struct us_data *us)
374 unsigned char *command = us->iobuf;
379 command[8] = MEDIA_PORT(us);
381 return usb_stor_bulk_transfer_buf(us, us->send_bulk_pipe,
388 static int alauda_init_media(struct us_data *us)
390 unsigned char *data = us->iobuf;
398 if (alauda_get_media_status(us, data) != USB_STOR_XFER_GOOD)
407 if (alauda_ack_media(us) != USB_STOR_XFER_GOOD)
412 if (alauda_get_media_status(us, data) != USB_STOR_XFER_GOOD)
420 if (alauda_get_media_signature(us, data) != USB_STOR_XFER_GOOD)
434 MEDIA_INFO(us).capacity = 1 << media_info->chipshift;
436 MEDIA_INFO(us).capacity >> 20);
438 MEDIA_INFO(us).pageshift = media_info->pageshift;
439 MEDIA_INFO(us).blockshift = media_info->blockshift;
440 MEDIA_INFO(us).zoneshift = media_info->zoneshift;
442 MEDIA_INFO(us).pagesize = 1 << media_info->pageshift;
443 MEDIA_INFO(us).blocksize = 1 << media_info->blockshift;
444 MEDIA_INFO(us).zonesize = 1 << media_info->zoneshift;
446 MEDIA_INFO(us).uzonesize = ((1 << media_info->zoneshift) / 128) * 125;
447 MEDIA_INFO(us).blockmask = MEDIA_INFO(us).blocksize - 1;
449 num_zones = MEDIA_INFO(us).capacity >> (MEDIA_INFO(us).zoneshift
450 + MEDIA_INFO(us).blockshift + MEDIA_INFO(us).pageshift);
451 MEDIA_INFO(us).pba_to_lba = kcalloc(num_zones, sizeof(u16*), GFP_NOIO);
452 MEDIA_INFO(us).lba_to_pba = kcalloc(num_zones, sizeof(u16*), GFP_NOIO);
454 if (alauda_reset_media(us) != USB_STOR_XFER_GOOD)
464 static int alauda_check_media(struct us_data *us)
466 struct alauda_info *info = (struct alauda_info *) us->extra;
470 rc = alauda_get_media_status(us, status);
476 alauda_free_maps(&MEDIA_INFO(us));
486 alauda_free_maps(&MEDIA_INFO(us));
487 alauda_init_media(us);
502 static int alauda_check_status2(struct us_data *us)
507 0, 0, 0, 0, 3, 0, MEDIA_PORT(us)
511 rc = usb_stor_bulk_transfer_buf(us, us->send_bulk_pipe,
516 rc = usb_stor_bulk_transfer_buf(us, us->recv_bulk_pipe,
532 static int alauda_get_redu_data(struct us_data *us, u16 pba, unsigned char *data)
537 PBA_HI(pba), PBA_ZONE(pba), 0, PBA_LO(pba), 0, 0, MEDIA_PORT(us)
540 rc = usb_stor_bulk_transfer_buf(us, us->send_bulk_pipe,
545 return usb_stor_bulk_transfer_buf(us, us->recv_bulk_pipe,
570 static int alauda_read_map(struct us_data *us, unsigned int zone)
572 unsigned char *data = us->iobuf;
575 unsigned int zonesize = MEDIA_INFO(us).zonesize;
576 unsigned int uzonesize = MEDIA_INFO(us).uzonesize;
596 result = alauda_get_redu_data(us, blocknum, data);
679 MEDIA_INFO(us).lba_to_pba[zone] = lba_to_pba;
680 MEDIA_INFO(us).pba_to_lba[zone] = pba_to_lba;
695 static void alauda_ensure_map_for_zone(struct us_data *us, unsigned int zone)
697 if (MEDIA_INFO(us).lba_to_pba[zone] == NULL
698 || MEDIA_INFO(us).pba_to_lba[zone] == NULL)
699 alauda_read_map(us, zone);
705 static int alauda_erase_block(struct us_data *us, u16 pba)
710 PBA_ZONE(pba), 0, PBA_LO(pba), 0x02, 0, MEDIA_PORT(us)
716 rc = usb_stor_bulk_transfer_buf(us, us->send_bulk_pipe,
721 rc = usb_stor_bulk_transfer_buf(us, us->recv_bulk_pipe,
735 static int alauda_read_block_raw(struct us_data *us, u16 pba,
741 PBA_ZONE(pba), 0, PBA_LO(pba) + page, pages, 0, MEDIA_PORT(us)
747 rc = usb_stor_bulk_transfer_buf(us, us->send_bulk_pipe,
752 return usb_stor_bulk_transfer_buf(us, us->recv_bulk_pipe,
753 data, (MEDIA_INFO(us).pagesize + 64) * pages, NULL);
762 static int alauda_read_block(struct us_data *us, u16 pba,
766 unsigned int pagesize = MEDIA_INFO(us).pagesize;
768 rc = alauda_read_block_raw(us, pba, page, pages, data);
787 static int alauda_write_block(struct us_data *us, u16 pba, unsigned char *data)
790 struct alauda_info *info = (struct alauda_info *) us->extra;
793 PBA_ZONE(pba), 0, PBA_LO(pba), 32, 0, MEDIA_PORT(us)
798 rc = usb_stor_bulk_transfer_buf(us, us->send_bulk_pipe,
803 rc = usb_stor_bulk_transfer_buf(us, info->wr_ep, data,
804 (MEDIA_INFO(us).pagesize + 64) * MEDIA_INFO(us).blocksize,
809 return alauda_check_status2(us);
815 static int alauda_write_lba(struct us_data *us, u16 lba,
823 unsigned int uzonesize = MEDIA_INFO(us).uzonesize;
824 unsigned int zonesize = MEDIA_INFO(us).zonesize;
825 unsigned int pagesize = MEDIA_INFO(us).pagesize;
826 unsigned int blocksize = MEDIA_INFO(us).blocksize;
831 alauda_ensure_map_for_zone(us, zone);
833 pba = MEDIA_INFO(us).lba_to_pba[zone][lba_offset];
842 new_pba = alauda_find_unused_pba(&MEDIA_INFO(us), zone);
851 result = alauda_read_block_raw(us, pba, 0,
896 result = alauda_write_block(us, new_pba, blockbuffer);
901 MEDIA_INFO(us).pba_to_lba[zone][new_pba_offset] = lba;
902 MEDIA_INFO(us).lba_to_pba[zone][lba_offset] = new_pba;
908 result = alauda_erase_block(us, pba);
911 MEDIA_INFO(us).pba_to_lba[zone][pba_offset] = UNDEF;
920 static int alauda_read_data(struct us_data *us, unsigned long address,
926 unsigned int blockshift = MEDIA_INFO(us).blockshift;
927 unsigned int pageshift = MEDIA_INFO(us).pageshift;
928 unsigned int blocksize = MEDIA_INFO(us).blocksize;
929 unsigned int pagesize = MEDIA_INFO(us).pagesize;
930 unsigned int uzonesize = MEDIA_INFO(us).uzonesize;
951 page = (address & MEDIA_INFO(us).blockmask);
952 max_lba = MEDIA_INFO(us).capacity >> (blockshift + pageshift);
963 alauda_ensure_map_for_zone(us, zone);
978 pba = MEDIA_INFO(us).lba_to_pba[zone][lba_offset];
995 result = alauda_read_block(us, pba, page, pages, buffer);
1001 usb_stor_access_xfer_buf(buffer, len, us->srb,
1016 static int alauda_write_data(struct us_data *us, unsigned long address,
1021 unsigned int blockshift = MEDIA_INFO(us).blockshift;
1022 unsigned int pageshift = MEDIA_INFO(us).pageshift;
1023 unsigned int blocksize = MEDIA_INFO(us).blocksize;
1024 unsigned int pagesize = MEDIA_INFO(us).pagesize;
1055 page = (address & MEDIA_INFO(us).blockmask);
1056 max_lba = MEDIA_INFO(us).capacity >> (pageshift + blockshift);
1076 usb_stor_access_xfer_buf(buffer, len, us->srb,
1079 result = alauda_write_lba(us, lba, page, pages, buffer,
1118 static int init_alauda(struct us_data *us)
1121 struct usb_host_interface *altsetting = us->pusb_intf->cur_altsetting;
1124 us->extra = kzalloc(sizeof(struct alauda_info), GFP_NOIO);
1125 if (!us->extra) {
1130 info = (struct alauda_info *) us->extra;
1131 us->extra_destructor = alauda_info_destructor;
1133 info->wr_ep = usb_sndbulkpipe(us->pusb_dev,
1140 static int alauda_transport(struct scsi_cmnd *srb, struct us_data *us)
1143 struct alauda_info *info = (struct alauda_info *) us->extra;
1144 unsigned char *ptr = us->iobuf;
1153 fill_inquiry_response(us, ptr, 36);
1159 return alauda_check_media(us);
1166 rc = alauda_check_media(us);
1170 num_zones = MEDIA_INFO(us).capacity >> (MEDIA_INFO(us).zoneshift
1171 + MEDIA_INFO(us).blockshift + MEDIA_INFO(us).pageshift);
1173 capacity = num_zones * MEDIA_INFO(us).uzonesize
1174 * MEDIA_INFO(us).blocksize;
1187 rc = alauda_check_media(us);
1199 return alauda_read_data(us, page, pages);
1205 rc = alauda_check_media(us);
1217 return alauda_write_data(us, page, pages);
1251 struct us_data *us;
1254 result = usb_stor_probe1(&us, intf, id,
1259 us->transport_name = "Alauda Control/Bulk";
1260 us->transport = alauda_transport;
1261 us->transport_reset = usb_stor_Bulk_reset;
1262 us->max_lun = 1;
1264 result = usb_stor_probe2(us);