Lines Matching refs:us

477 static int ene_sd_init(struct us_data *us);
478 static int ene_ms_init(struct us_data *us);
479 static int ene_load_bincode(struct us_data *us, unsigned char flag);
490 static int ene_send_scsi_cmd(struct us_data *us, u8 fDir, void *buf, int use_sg)
492 struct bulk_cb_wrap *bcb = (struct bulk_cb_wrap *) us->iobuf;
493 struct bulk_cs_wrap *bcs = (struct bulk_cs_wrap *) us->iobuf;
500 /* usb_stor_dbg(us, "transport --- ene_send_scsi_cmd\n"); */
502 result = usb_stor_bulk_transfer_buf(us, us->send_bulk_pipe,
505 usb_stor_dbg(us, "send cmd to out endpoint fail ---\n");
513 pipe = us->recv_bulk_pipe;
515 pipe = us->send_bulk_pipe;
519 result = usb_stor_bulk_srb(us, pipe, us->srb);
521 result = usb_stor_bulk_transfer_sg(us, pipe, buf,
525 usb_stor_dbg(us, "data transfer fail ---\n");
531 result = usb_stor_bulk_transfer_buf(us, us->recv_bulk_pipe, bcs,
535 usb_stor_dbg(us, "Received 0-length CSW; retrying...\n");
536 result = usb_stor_bulk_transfer_buf(us, us->recv_bulk_pipe,
542 usb_stor_dbg(us, "Attempting to get CSW (2nd try)...\n");
543 result = usb_stor_bulk_transfer_buf(us, us->recv_bulk_pipe,
555 * was really transferred and what the device tells us
557 if (residue && !(us->fflags & US_FL_IGNORE_RESIDUE)) {
559 if (us->srb != NULL)
560 scsi_set_resid(us->srb, max(scsi_get_resid(us->srb),
570 static int do_scsi_request_sense(struct us_data *us, struct scsi_cmnd *srb)
572 struct ene_ub6250_info *info = (struct ene_ub6250_info *) us->extra;
586 static int do_scsi_inquiry(struct us_data *us, struct scsi_cmnd *srb)
598 static int sd_scsi_test_unit_ready(struct us_data *us, struct scsi_cmnd *srb)
600 struct ene_ub6250_info *info = (struct ene_ub6250_info *) us->extra;
605 ene_sd_init(us);
612 static int sd_scsi_mode_sense(struct us_data *us, struct scsi_cmnd *srb)
614 struct ene_ub6250_info *info = (struct ene_ub6250_info *) us->extra;
631 static int sd_scsi_read_capacity(struct us_data *us, struct scsi_cmnd *srb)
638 struct ene_ub6250_info *info = (struct ene_ub6250_info *) us->extra;
640 usb_stor_dbg(us, "sd_scsi_read_capacity\n");
653 usb_stor_dbg(us, "bl_len = %x\n", bl_len);
654 usb_stor_dbg(us, "bl_num = %x\n", bl_num);
671 static int sd_scsi_read(struct us_data *us, struct scsi_cmnd *srb)
675 struct bulk_cb_wrap *bcb = (struct bulk_cb_wrap *) us->iobuf;
676 struct ene_ub6250_info *info = (struct ene_ub6250_info *) us->extra;
687 result = ene_load_bincode(us, SD_RW_PATTERN);
689 usb_stor_dbg(us, "Load SD RW pattern Fail !!\n");
707 result = ene_send_scsi_cmd(us, FDIR_READ, scsi_sglist(srb), 1);
711 static int sd_scsi_write(struct us_data *us, struct scsi_cmnd *srb)
715 struct bulk_cb_wrap *bcb = (struct bulk_cb_wrap *) us->iobuf;
716 struct ene_ub6250_info *info = (struct ene_ub6250_info *) us->extra;
727 result = ene_load_bincode(us, SD_RW_PATTERN);
729 usb_stor_dbg(us, "Load SD RW pattern Fail !!\n");
747 result = ene_send_scsi_cmd(us, FDIR_WRITE, scsi_sglist(srb), 1);
755 static int ms_lib_set_logicalpair(struct us_data *us, u16 logblk, u16 phyblk)
757 struct ene_ub6250_info *info = (struct ene_ub6250_info *) us->extra;
768 static int ms_lib_set_logicalblockmark(struct us_data *us, u16 phyblk, u16 mark)
770 struct ene_ub6250_info *info = (struct ene_ub6250_info *) us->extra;
780 static int ms_lib_set_initialerrorblock(struct us_data *us, u16 phyblk)
782 return ms_lib_set_logicalblockmark(us, phyblk, MS_LB_INITIAL_ERROR);
785 static int ms_lib_set_bootblockmark(struct us_data *us, u16 phyblk)
787 return ms_lib_set_logicalblockmark(us, phyblk, MS_LB_BOOT_BLOCK);
790 static int ms_lib_free_logicalmap(struct us_data *us)
792 struct ene_ub6250_info *info = (struct ene_ub6250_info *) us->extra;
803 static int ms_lib_alloc_logicalmap(struct us_data *us)
806 struct ene_ub6250_info *info = (struct ene_ub6250_info *) us->extra;
816 ms_lib_free_logicalmap(us);
829 static void ms_lib_clear_writebuf(struct us_data *us)
832 struct ene_ub6250_info *info = (struct ene_ub6250_info *) us->extra;
850 static int ms_count_freeblock(struct us_data *us, u16 PhyBlock)
853 struct ene_ub6250_info *info = (struct ene_ub6250_info *) us->extra;
869 static int ms_read_readpage(struct us_data *us, u32 PhyBlockAddr,
872 struct bulk_cb_wrap *bcb = (struct bulk_cb_wrap *) us->iobuf;
873 struct ene_ub6250_info *info = (struct ene_ub6250_info *) us->extra;
878 result = ene_load_bincode(us, MS_RW_PATTERN);
896 result = ene_send_scsi_cmd(us, FDIR_READ, PageBuf, 0);
915 result = ene_send_scsi_cmd(us, FDIR_READ, bbuf, 0);
931 static int ms_lib_process_bootblock(struct us_data *us, u16 PhyBlock, u8 *PageData)
939 struct ene_ub6250_info *info = (struct ene_ub6250_info *) us->extra;
978 if (ms_lib_alloc_logicalmap(us))
982 ms_lib_set_bootblockmark(us, PhyBlock);
1012 switch (ms_read_readpage(us, PhyBlock, PageNumber, (u32 *)PageBuffer, &ExtraData)) {
1027 ms_lib_set_initialerrorblock(us, phyblk);
1038 switch (ms_read_readpage(us, PhyBlock, (u8)(EntryOffset / MS_BYTES_PER_PAGE + 1), (u32 *)PageBuffer, &ExtraData)) {
1062 ms_lib_free_logicalmap(us);
1070 static void ms_lib_free_writebuf(struct us_data *us)
1072 struct ene_ub6250_info *info = (struct ene_ub6250_info *) us->extra;
1091 static void ms_lib_free_allocatedarea(struct us_data *us)
1093 struct ene_ub6250_info *info = (struct ene_ub6250_info *) us->extra;
1095 ms_lib_free_writebuf(us); /* Free MS_Lib.pagemap */
1096 ms_lib_free_logicalmap(us); /* kfree MS_Lib.Phy2LogMap and MS_Lib.Log2PhyMap */
1098 /* set struct us point flag to 0 */
1112 static int ms_lib_alloc_writebuf(struct us_data *us)
1114 struct ene_ub6250_info *info = (struct ene_ub6250_info *) us->extra;
1126 ms_lib_free_writebuf(us);
1130 ms_lib_clear_writebuf(us);
1135 static int ms_lib_force_setlogical_pair(struct us_data *us, u16 logblk, u16 phyblk)
1137 struct ene_ub6250_info *info = (struct ene_ub6250_info *) us->extra;
1152 static int ms_read_copyblock(struct us_data *us, u16 oldphy, u16 newphy,
1155 struct bulk_cb_wrap *bcb = (struct bulk_cb_wrap *) us->iobuf;
1158 result = ene_load_bincode(us, MS_RW_PATTERN);
1178 result = ene_send_scsi_cmd(us, FDIR_WRITE, buf, 0);
1185 static int ms_read_eraseblock(struct us_data *us, u32 PhyBlockAddr)
1187 struct bulk_cb_wrap *bcb = (struct bulk_cb_wrap *) us->iobuf;
1191 result = ene_load_bincode(us, MS_RW_PATTERN);
1205 result = ene_send_scsi_cmd(us, FDIR_READ, NULL, 0);
1212 static int ms_lib_check_disableblock(struct us_data *us, u16 PhyBlock)
1218 struct ene_ub6250_info *info = (struct ene_ub6250_info *) us->extra;
1226 ms_read_readpage(us, PhyBlock, 1, (u32 *)PageBuf, &extdat);
1243 static int ms_lib_setacquired_errorblock(struct us_data *us, u16 phyblk)
1246 struct ene_ub6250_info *info = (struct ene_ub6250_info *) us->extra;
1262 static int ms_lib_overwrite_extra(struct us_data *us, u32 PhyBlockAddr,
1265 struct bulk_cb_wrap *bcb = (struct bulk_cb_wrap *) us->iobuf;
1268 result = ene_load_bincode(us, MS_RW_PATTERN);
1287 result = ene_send_scsi_cmd(us, FDIR_READ, NULL, 0);
1294 static int ms_lib_error_phyblock(struct us_data *us, u16 phyblk)
1296 struct ene_ub6250_info *info = (struct ene_ub6250_info *) us->extra;
1301 ms_lib_setacquired_errorblock(us, phyblk);
1304 return ms_lib_overwrite_extra(us, phyblk, 0, (u8)(~MS_REG_OVR_BKST & BYTE_MASK));
1309 static int ms_lib_erase_phyblock(struct us_data *us, u16 phyblk)
1312 struct ene_ub6250_info *info = (struct ene_ub6250_info *) us->extra;
1325 switch (ms_read_eraseblock(us, phyblk)) {
1331 ms_lib_error_phyblock(us, phyblk);
1335 ms_lib_ctrl_set(info, MS_LIB_CTRL_RDONLY); /* MS_LibCtrlSet will used by ENE_MSInit ,need check, and why us to info*/
1336 ms_lib_setacquired_errorblock(us, phyblk);
1341 ms_lib_setacquired_errorblock(us, phyblk);
1346 static int ms_lib_read_extra(struct us_data *us, u32 PhyBlock,
1349 struct bulk_cb_wrap *bcb = (struct bulk_cb_wrap *) us->iobuf;
1350 struct ene_ub6250_info *info = (struct ene_ub6250_info *) us->extra;
1366 result = ene_send_scsi_cmd(us, FDIR_READ, bbuf, 0);
1381 static int ms_libsearch_block_from_physical(struct us_data *us, u16 phyblk)
1385 struct ene_ub6250_info *info = (struct ene_ub6250_info *) us->extra;
1398 switch (ms_lib_read_extra(us, blk, 0, &extdat)) {
1408 ms_lib_setacquired_errorblock(us, blk);
1413 ms_lib_setacquired_errorblock(us, blk);
1417 switch (ms_lib_erase_phyblock(us, blk)) {
1424 ms_lib_error_phyblock(us, blk);
1432 static int ms_libsearch_block_from_logical(struct us_data *us, u16 logblk)
1435 struct ene_ub6250_info *info = (struct ene_ub6250_info *) us->extra;
1447 return ms_libsearch_block_from_physical(us, phyblk);
1450 static int ms_scsi_test_unit_ready(struct us_data *us, struct scsi_cmnd *srb)
1452 struct ene_ub6250_info *info = (struct ene_ub6250_info *)(us->extra);
1458 ene_ms_init(us);
1465 static int ms_scsi_mode_sense(struct us_data *us, struct scsi_cmnd *srb)
1467 struct ene_ub6250_info *info = (struct ene_ub6250_info *) us->extra;
1483 static int ms_scsi_read_capacity(struct us_data *us, struct scsi_cmnd *srb)
1490 struct ene_ub6250_info *info = (struct ene_ub6250_info *) us->extra;
1492 usb_stor_dbg(us, "ms_scsi_read_capacity\n");
1500 usb_stor_dbg(us, "bl_len = %x\n", bl_len);
1501 usb_stor_dbg(us, "bl_num = %x\n", bl_num);
1531 static int ms_lib_read_extrablock(struct us_data *us, u32 PhyBlock,
1534 struct bulk_cb_wrap *bcb = (struct bulk_cb_wrap *) us->iobuf;
1550 result = ene_send_scsi_cmd(us, FDIR_READ, buf, 0);
1557 static int ms_lib_scan_logicalblocknumber(struct us_data *us, u16 btBlk1st)
1563 struct ene_ub6250_info *info = (struct ene_ub6250_info *) us->extra;
1578 ms_lib_read_extrablock(us, PhyBlock, 0, 0x80,
1590 ms_lib_setacquired_errorblock(us, PhyBlock);
1595 ms_lib_erase_phyblock(us, PhyBlock);
1601 ms_lib_erase_phyblock(us, PhyBlock);
1609 ms_lib_set_logicalpair(us, extdat.logadr, PhyBlock);
1610 if (ms_lib_check_disableblock(us, btBlk1st)) {
1611 ms_lib_set_logicalpair(us, extdat.logadr, newblk);
1616 ms_lib_read_extra(us, newblk, 0, &extdat);
1618 ms_lib_erase_phyblock(us, PhyBlock);
1621 ms_lib_erase_phyblock(us, newblk);
1625 ms_lib_set_logicalpair(us, extdat.logadr, PhyBlock);
1634 static int ms_scsi_read(struct us_data *us, struct scsi_cmnd *srb)
1638 struct bulk_cb_wrap *bcb = (struct bulk_cb_wrap *) us->iobuf;
1639 struct ene_ub6250_info *info = (struct ene_ub6250_info *) us->extra;
1650 result = ene_load_bincode(us, MSP_RW_PATTERN);
1652 usb_stor_dbg(us, "Load MPS RW pattern Fail !!\n");
1668 result = ene_send_scsi_cmd(us, FDIR_READ, scsi_sglist(srb), 1);
1681 result = ene_load_bincode(us, MS_RW_PATTERN);
1712 result = ene_send_scsi_cmd(us, FDIR_READ, buf+offset, 0);
1733 static int ms_scsi_write(struct us_data *us, struct scsi_cmnd *srb)
1736 struct bulk_cb_wrap *bcb = (struct bulk_cb_wrap *) us->iobuf;
1738 struct ene_ub6250_info *info = (struct ene_ub6250_info *) us->extra;
1751 result = ene_load_bincode(us, MSP_RW_PATTERN);
1769 result = ene_send_scsi_cmd(us, FDIR_WRITE, scsi_sglist(srb), 1);
1782 result = ene_load_bincode(us, MS_RW_PATTERN);
1798 oldphy = ms_libconv_to_physical(info, PhyBlockAddr); /* need check us <-> info */
1799 newphy = ms_libsearch_block_from_logical(us, PhyBlockAddr);
1801 result = ms_read_copyblock(us, oldphy, newphy, PhyBlockAddr, PageNum, buf+offset, len);
1810 ms_lib_force_setlogical_pair(us, PhyBlockAddr, newphy);
1829 static int ene_get_card_type(struct us_data *us, u16 index, void *buf)
1831 struct bulk_cb_wrap *bcb = (struct bulk_cb_wrap *) us->iobuf;
1842 result = ene_send_scsi_cmd(us, FDIR_READ, buf, 0);
1846 static int ene_get_card_status(struct us_data *us, u8 *buf)
1850 struct ene_ub6250_info *info = (struct ene_ub6250_info *) us->extra;
1852 /*usb_stor_dbg(us, "transport --- ENE_ReadSDReg\n");*/
1876 static int ene_load_bincode(struct us_data *us, unsigned char flag)
1883 struct bulk_cb_wrap *bcb = (struct bulk_cb_wrap *) us->iobuf;
1884 struct ene_ub6250_info *info = (struct ene_ub6250_info *) us->extra;
1892 usb_stor_dbg(us, "SD_INIT1_PATTERN\n");
1896 usb_stor_dbg(us, "SD_INIT2_PATTERN\n");
1900 usb_stor_dbg(us, "SD_RW_PATTERN\n");
1905 usb_stor_dbg(us, "MS_INIT_PATTERN\n");
1909 usb_stor_dbg(us, "MSP_RW_PATTERN\n");
1913 usb_stor_dbg(us, "MS_RW_PATTERN\n");
1917 usb_stor_dbg(us, "----------- Unknown PATTERN ----------\n");
1921 err = request_firmware(&sd_fw, fw_name, &us->pusb_dev->dev);
1923 usb_stor_dbg(us, "load firmware %s failed\n", fw_name);
1936 result = ene_send_scsi_cmd(us, FDIR_WRITE, buf, 0);
1937 if (us->srb != NULL)
1938 scsi_set_resid(us->srb, 0);
1947 static int ms_card_init(struct us_data *us)
1955 struct ene_ub6250_info *info = (struct ene_ub6250_info *) us->extra;
1959 ms_lib_free_allocatedarea(us); /* Clean buffer and set struct us_data flag to 0 */
1974 switch (ms_read_readpage(us, TmpBlock, 0, (u32 *)PageBuffer0, &extdat)) {
2016 result = ms_lib_process_bootblock(us, btBlk1st, PageBuffer1);
2020 result = ms_lib_process_bootblock(us, btBlk2nd, PageBuffer0);
2039 result = ms_lib_scan_logicalblocknumber(us, btBlk1st);
2046 if (ms_count_freeblock(us, TmpBlock) == 0) {
2053 if (ms_lib_alloc_writebuf(us)) {
2068 static int ene_ms_init(struct us_data *us)
2070 struct bulk_cb_wrap *bcb = (struct bulk_cb_wrap *) us->iobuf;
2073 struct ene_ub6250_info *info = (struct ene_ub6250_info *) us->extra;
2081 result = ene_load_bincode(us, MS_INIT_PATTERN);
2094 result = ene_send_scsi_cmd(us, FDIR_READ, bbuf, 0);
2114 ms_card_init(us); /* Card is MS (to ms.c)*/
2116 usb_stor_dbg(us, "MS Init Code OK !!\n");
2118 usb_stor_dbg(us, "MS Card Not Ready --- %x\n", bbuf[0]);
2125 static int ene_sd_init(struct us_data *us)
2128 struct bulk_cb_wrap *bcb = (struct bulk_cb_wrap *) us->iobuf;
2129 struct ene_ub6250_info *info = (struct ene_ub6250_info *) us->extra;
2132 usb_stor_dbg(us, "transport --- ENE_SDInit\n");
2134 result = ene_load_bincode(us, SD_INIT1_PATTERN);
2136 usb_stor_dbg(us, "Load SD Init Code Part-1 Fail !!\n");
2145 result = ene_send_scsi_cmd(us, FDIR_READ, NULL, 0);
2147 usb_stor_dbg(us, "Execution SD Init Code Fail !!\n");
2152 result = ene_load_bincode(us, SD_INIT2_PATTERN);
2154 usb_stor_dbg(us, "Load SD Init Code Part-2 Fail !!\n");
2164 result = ene_send_scsi_cmd(us, FDIR_READ, bbuf, 0);
2166 usb_stor_dbg(us, "Execution SD Init Code Fail !!\n");
2174 ene_get_card_status(us, bbuf);
2175 usb_stor_dbg(us, "Insert = %x\n", !!(s & SD_Insert));
2176 usb_stor_dbg(us, "Ready = %x\n", !!(s & SD_Ready));
2177 usb_stor_dbg(us, "IsMMC = %x\n", !!(s & SD_IsMMC));
2178 usb_stor_dbg(us, "HiCapacity = %x\n", !!(s & SD_HiCapacity));
2179 usb_stor_dbg(us, "HiSpeed = %x\n", !!(s & SD_HiSpeed));
2180 usb_stor_dbg(us, "WtP = %x\n", !!(s & SD_WtP));
2182 usb_stor_dbg(us, "SD Card Not Ready --- %x\n", bbuf[0]);
2189 static int ene_init(struct us_data *us)
2193 struct ene_ub6250_info *info = (struct ene_ub6250_info *)(us->extra);
2196 result = ene_get_card_type(us, REG_CARD_STATUS, bbuf);
2203 result = ene_sd_init(us);
2210 result = ene_ms_init(us);
2219 static int sd_scsi_irp(struct us_data *us, struct scsi_cmnd *srb)
2222 struct ene_ub6250_info *info = (struct ene_ub6250_info *)us->extra;
2226 result = sd_scsi_test_unit_ready(us, srb);
2229 result = do_scsi_request_sense(us, srb);
2232 result = do_scsi_inquiry(us, srb);
2235 result = sd_scsi_mode_sense(us, srb);
2239 result = SD_SCSI_Start_Stop(us, srb);
2243 result = sd_scsi_read_capacity(us, srb);
2246 result = sd_scsi_read(us, srb);
2249 result = sd_scsi_write(us, srb);
2264 static int ms_scsi_irp(struct us_data *us, struct scsi_cmnd *srb)
2267 struct ene_ub6250_info *info = (struct ene_ub6250_info *)us->extra;
2271 result = ms_scsi_test_unit_ready(us, srb);
2274 result = do_scsi_request_sense(us, srb);
2277 result = do_scsi_inquiry(us, srb);
2280 result = ms_scsi_mode_sense(us, srb);
2283 result = ms_scsi_read_capacity(us, srb);
2286 result = ms_scsi_read(us, srb);
2289 result = ms_scsi_write(us, srb);
2301 static int ene_transport(struct scsi_cmnd *srb, struct us_data *us)
2304 struct ene_ub6250_info *info = (struct ene_ub6250_info *)(us->extra);
2306 /*US_DEBUG(usb_stor_show_command(us, srb)); */
2309 result = ene_init(us);
2313 result = sd_scsi_irp(us, srb);
2316 result = ms_scsi_irp(us, srb);
2328 struct us_data *us;
2331 result = usb_stor_probe1(&us, intf, id,
2338 us->extra = kzalloc(sizeof(struct ene_ub6250_info), GFP_KERNEL);
2339 if (!us->extra)
2341 us->extra_destructor = ene_ub6250_info_destructor;
2343 info = (struct ene_ub6250_info *)(us->extra);
2346 kfree(us->extra);
2350 us->transport_name = "ene_ub6250";
2351 us->transport = ene_transport;
2352 us->max_lun = 0;
2354 result = usb_stor_probe2(us);
2359 result = ene_get_card_type(us, REG_CARD_STATUS, info->bbuf);
2379 struct us_data *us = usb_get_intfdata(iface);
2380 struct ene_ub6250_info *info = (struct ene_ub6250_info *)(us->extra);
2382 mutex_lock(&us->dev_mutex);
2384 if (us->suspend_resume_hook)
2385 (us->suspend_resume_hook)(us, US_RESUME);
2387 mutex_unlock(&us->dev_mutex);
2400 struct us_data *us = usb_get_intfdata(iface);
2401 struct ene_ub6250_info *info = (struct ene_ub6250_info *)(us->extra);