Lines Matching full:msb

182 	struct mspro_block_data *msb = disk->private_data;  in mspro_block_bd_free_disk()  local
189 kfree(msb); in mspro_block_bd_free_disk()
195 struct mspro_block_data *msb = bdev->bd_disk->private_data; in mspro_block_bd_getgeo() local
197 geo->heads = msb->heads; in mspro_block_bd_getgeo()
198 geo->sectors = msb->sectors_per_track; in mspro_block_bd_getgeo()
199 geo->cylinders = msb->cylinders; in mspro_block_bd_getgeo()
485 struct mspro_block_data *msb = memstick_get_drvdata(card); in h_mspro_block_req_init() local
488 card->next_request = msb->mrq_handler; in h_mspro_block_req_init()
507 struct mspro_block_data *msb = memstick_get_drvdata(card); in h_mspro_block_get_ro() local
512 msb->read_only = 1; in h_mspro_block_get_ro()
514 msb->read_only = 0; in h_mspro_block_get_ro()
538 struct mspro_block_data *msb = memstick_get_drvdata(card); in h_mspro_block_transfer_data() local
548 memstick_init_req(*mrq, MS_TPC_SET_CMD, &msb->transfer_cmd, 1); in h_mspro_block_transfer_data()
554 if (msb->caps & MEMSTICK_CAP_AUTO_GET_INT) in h_mspro_block_transfer_data()
567 if (msb->current_page in h_mspro_block_transfer_data()
568 == (msb->req_sg[msb->current_seg].length in h_mspro_block_transfer_data()
569 / msb->page_size)) { in h_mspro_block_transfer_data()
570 msb->current_page = 0; in h_mspro_block_transfer_data()
571 msb->current_seg++; in h_mspro_block_transfer_data()
573 if (msb->current_seg == msb->seg_count) { in h_mspro_block_transfer_data()
592 t_offset = msb->req_sg[msb->current_seg].offset; in h_mspro_block_transfer_data()
593 t_offset += msb->current_page * msb->page_size; in h_mspro_block_transfer_data()
596 nth_page(sg_page(&(msb->req_sg[msb->current_seg])), in h_mspro_block_transfer_data()
598 msb->page_size, offset_in_page(t_offset)); in h_mspro_block_transfer_data()
600 memstick_init_req_sg(*mrq, msb->data_dir == READ in h_mspro_block_transfer_data()
608 msb->current_page++; in h_mspro_block_transfer_data()
609 if (msb->caps & MEMSTICK_CAP_AUTO_GET_INT) { in h_mspro_block_transfer_data()
634 struct mspro_block_data *msb = memstick_get_drvdata(card); in h_mspro_block_setup_cmd() local
636 .system = msb->system, in h_mspro_block_setup_cmd()
637 .data_count = cpu_to_be16((uint16_t)(length / msb->page_size)), in h_mspro_block_setup_cmd()
643 do_div(offset, msb->page_size); in h_mspro_block_setup_cmd()
647 msb->mrq_handler = h_mspro_block_transfer_data; in h_mspro_block_setup_cmd()
656 struct mspro_block_data *msb = memstick_get_drvdata(card); in mspro_block_issue_req() local
661 msb->current_page = 0; in mspro_block_issue_req()
662 msb->current_seg = 0; in mspro_block_issue_req()
663 msb->seg_count = blk_rq_map_sg(msb->block_req->q, in mspro_block_issue_req()
664 msb->block_req, in mspro_block_issue_req()
665 msb->req_sg); in mspro_block_issue_req()
667 if (!msb->seg_count) { in mspro_block_issue_req()
668 unsigned int bytes = blk_rq_cur_bytes(msb->block_req); in mspro_block_issue_req()
671 chunk = blk_update_request(msb->block_req, in mspro_block_issue_req()
676 __blk_mq_end_request(msb->block_req, in mspro_block_issue_req()
678 msb->block_req = NULL; in mspro_block_issue_req()
682 t_off = blk_rq_pos(msb->block_req); in mspro_block_issue_req()
684 count = blk_rq_bytes(msb->block_req); in mspro_block_issue_req()
686 msb->setup_transfer(card, t_off, count); in mspro_block_issue_req()
688 msb->data_dir = rq_data_dir(msb->block_req); in mspro_block_issue_req()
689 msb->transfer_cmd = msb->data_dir == READ in mspro_block_issue_req()
700 struct mspro_block_data *msb = memstick_get_drvdata(card); in mspro_block_complete_req() local
706 spin_lock_irqsave(&msb->q_lock, flags); in mspro_block_complete_req()
707 dev_dbg(&card->dev, "complete %d, %d\n", msb->block_req ? 1 : 0, in mspro_block_complete_req()
710 if (msb->block_req) { in mspro_block_complete_req()
716 if (msb->data_dir == READ) { in mspro_block_complete_req()
717 for (cnt = 0; cnt < msb->current_seg; cnt++) { in mspro_block_complete_req()
718 t_len += msb->req_sg[cnt].length in mspro_block_complete_req()
719 / msb->page_size; in mspro_block_complete_req()
721 if (msb->current_page) in mspro_block_complete_req()
722 t_len += msb->current_page - 1; in mspro_block_complete_req()
724 t_len *= msb->page_size; in mspro_block_complete_req()
728 t_len = blk_rq_bytes(msb->block_req); in mspro_block_complete_req()
733 t_len = blk_rq_cur_bytes(msb->block_req); in mspro_block_complete_req()
735 chunk = blk_update_request(msb->block_req, in mspro_block_complete_req()
742 __blk_mq_end_request(msb->block_req, in mspro_block_complete_req()
744 msb->block_req = NULL; in mspro_block_complete_req()
754 spin_unlock_irqrestore(&msb->q_lock, flags); in mspro_block_complete_req()
760 struct mspro_block_data *msb = memstick_get_drvdata(card); in mspro_block_stop() local
765 spin_lock_irqsave(&msb->q_lock, flags); in mspro_block_stop()
766 if (!msb->block_req) { in mspro_block_stop()
767 blk_mq_stop_hw_queues(msb->queue); in mspro_block_stop()
770 spin_unlock_irqrestore(&msb->q_lock, flags); in mspro_block_stop()
781 struct mspro_block_data *msb = memstick_get_drvdata(card); in mspro_block_start() local
783 blk_mq_start_hw_queues(msb->queue); in mspro_block_start()
790 struct mspro_block_data *msb = memstick_get_drvdata(card); in mspro_queue_rq() local
792 spin_lock_irq(&msb->q_lock); in mspro_queue_rq()
794 if (msb->block_req) { in mspro_queue_rq()
795 spin_unlock_irq(&msb->q_lock); in mspro_queue_rq()
799 if (msb->eject) { in mspro_queue_rq()
800 spin_unlock_irq(&msb->q_lock); in mspro_queue_rq()
805 msb->block_req = bd->rq; in mspro_queue_rq()
809 msb->block_req = NULL; in mspro_queue_rq()
811 spin_unlock_irq(&msb->q_lock); in mspro_queue_rq()
819 struct mspro_block_data *msb = memstick_get_drvdata(card); in mspro_block_wait_for_ced() local
822 msb->mrq_handler = h_mspro_block_wait_for_ced; in mspro_block_wait_for_ced()
833 struct mspro_block_data *msb = memstick_get_drvdata(card); in mspro_block_set_interface() local
842 msb->mrq_handler = h_mspro_block_default; in mspro_block_set_interface()
853 struct mspro_block_data *msb = memstick_get_drvdata(card); in mspro_block_switch_interface() local
857 if (msb->caps & MEMSTICK_CAP_PAR4) in mspro_block_switch_interface()
869 msb->system = MEMSTICK_SYS_PAR4; in mspro_block_switch_interface()
874 if (msb->caps & MEMSTICK_CAP_PAR8) { in mspro_block_switch_interface()
878 msb->system = MEMSTICK_SYS_PAR8; in mspro_block_switch_interface()
891 msb->mrq_handler = h_mspro_block_default; in mspro_block_switch_interface()
901 msb->system = MEMSTICK_SYS_SERIAL; in mspro_block_switch_interface()
909 rc = mspro_block_set_interface(card, msb->system); in mspro_block_switch_interface()
917 if (msb->caps & MEMSTICK_CAP_PAR8) { in mspro_block_switch_interface()
918 msb->caps &= ~MEMSTICK_CAP_PAR8; in mspro_block_switch_interface()
932 struct mspro_block_data *msb = memstick_get_drvdata(card); in mspro_block_read_attributes() local
942 unsigned int addr, attr_offset = 0, attr_len = msb->page_size; in mspro_block_read_attributes()
944 attr = kmalloc(msb->page_size, GFP_KERNEL); in mspro_block_read_attributes()
948 sg_init_one(&msb->req_sg[0], attr, msb->page_size); in mspro_block_read_attributes()
949 msb->seg_count = 1; in mspro_block_read_attributes()
950 msb->current_seg = 0; in mspro_block_read_attributes()
951 msb->current_page = 0; in mspro_block_read_attributes()
952 msb->data_dir = READ; in mspro_block_read_attributes()
953 msb->transfer_cmd = MSPRO_CMD_READ_ATRB; in mspro_block_read_attributes()
955 msb->setup_transfer(card, attr_offset, attr_len); in mspro_block_read_attributes()
978 msb->attr_group.attrs = kcalloc(attr_count + 1, in mspro_block_read_attributes()
979 sizeof(*msb->attr_group.attrs), in mspro_block_read_attributes()
981 if (!msb->attr_group.attrs) { in mspro_block_read_attributes()
985 msb->attr_group.name = "media_attributes"; in mspro_block_read_attributes()
1000 msb->attr_group.attrs[cnt] = &s_attr->dev_attr.attr; in mspro_block_read_attributes()
1028 if (((addr / msb->page_size) == (attr_offset / msb->page_size)) in mspro_block_read_attributes()
1029 && (((addr + s_attr->size - 1) / msb->page_size) in mspro_block_read_attributes()
1030 == (attr_offset / msb->page_size))) { in mspro_block_read_attributes()
1031 memcpy(s_attr->data, buffer + addr % msb->page_size, in mspro_block_read_attributes()
1036 attr_offset = (addr / msb->page_size) * msb->page_size; in mspro_block_read_attributes()
1040 attr_len = (((addr + s_attr->size) / msb->page_size) in mspro_block_read_attributes()
1041 + 1 ) * msb->page_size - attr_offset; in mspro_block_read_attributes()
1049 sg_init_one(&msb->req_sg[0], buffer, attr_len); in mspro_block_read_attributes()
1050 msb->seg_count = 1; in mspro_block_read_attributes()
1051 msb->current_seg = 0; in mspro_block_read_attributes()
1052 msb->current_page = 0; in mspro_block_read_attributes()
1053 msb->data_dir = READ; in mspro_block_read_attributes()
1054 msb->transfer_cmd = MSPRO_CMD_READ_ATRB; in mspro_block_read_attributes()
1059 msb->setup_transfer(card, attr_offset, attr_len); in mspro_block_read_attributes()
1067 memcpy(s_attr->data, buffer + addr % msb->page_size, in mspro_block_read_attributes()
1081 struct mspro_block_data *msb = memstick_get_drvdata(card); in mspro_block_init_card() local
1085 msb->system = MEMSTICK_SYS_SERIAL; in mspro_block_init_card()
1086 msb->setup_transfer = h_mspro_block_setup_cmd; in mspro_block_init_card()
1096 msb->caps = host->caps; in mspro_block_init_card()
1108 if (msb->system != MEMSTICK_SYS_SERIAL) in mspro_block_init_card()
1109 msb->caps |= MEMSTICK_CAP_AUTO_GET_INT; in mspro_block_init_card()
1112 msb->mrq_handler = h_mspro_block_get_ro; in mspro_block_init_card()
1120 dev_dbg(&card->dev, "card r/w status %d\n", msb->read_only ? 0 : 1); in mspro_block_init_card()
1122 msb->page_size = 512; in mspro_block_init_card()
1138 struct mspro_block_data *msb = memstick_get_drvdata(card); in mspro_block_init_disk() local
1145 for (rc = 0; msb->attr_group.attrs[rc]; ++rc) { in mspro_block_init_disk()
1146 s_attr = mspro_from_sysfs_attr(msb->attr_group.attrs[rc]); in mspro_block_init_disk()
1157 msb->cylinders = be16_to_cpu(dev_info->cylinders); in mspro_block_init_disk()
1158 msb->heads = be16_to_cpu(dev_info->heads); in mspro_block_init_disk()
1159 msb->sectors_per_track = be16_to_cpu(dev_info->sectors_per_track); in mspro_block_init_disk()
1161 msb->page_size = be16_to_cpu(sys_info->unit_size); in mspro_block_init_disk()
1169 rc = blk_mq_alloc_sq_tag_set(&msb->tag_set, &mspro_mq_ops, 2, in mspro_block_init_disk()
1174 msb->disk = blk_mq_alloc_disk(&msb->tag_set, card); in mspro_block_init_disk()
1175 if (IS_ERR(msb->disk)) { in mspro_block_init_disk()
1176 rc = PTR_ERR(msb->disk); in mspro_block_init_disk()
1179 msb->queue = msb->disk->queue; in mspro_block_init_disk()
1181 blk_queue_max_hw_sectors(msb->queue, MSPRO_BLOCK_MAX_PAGES); in mspro_block_init_disk()
1182 blk_queue_max_segments(msb->queue, MSPRO_BLOCK_MAX_SEGS); in mspro_block_init_disk()
1183 blk_queue_max_segment_size(msb->queue, in mspro_block_init_disk()
1184 MSPRO_BLOCK_MAX_PAGES * msb->page_size); in mspro_block_init_disk()
1186 msb->disk->major = major; in mspro_block_init_disk()
1187 msb->disk->first_minor = disk_id << MSPRO_BLOCK_PART_SHIFT; in mspro_block_init_disk()
1188 msb->disk->minors = 1 << MSPRO_BLOCK_PART_SHIFT; in mspro_block_init_disk()
1189 msb->disk->fops = &ms_block_bdops; in mspro_block_init_disk()
1190 msb->disk->private_data = msb; in mspro_block_init_disk()
1192 sprintf(msb->disk->disk_name, "mspblk%d", disk_id); in mspro_block_init_disk()
1194 blk_queue_logical_block_size(msb->queue, msb->page_size); in mspro_block_init_disk()
1198 capacity *= msb->page_size >> 9; in mspro_block_init_disk()
1199 set_capacity(msb->disk, capacity); in mspro_block_init_disk()
1202 if (msb->read_only) in mspro_block_init_disk()
1203 set_disk_ro(msb->disk, true); in mspro_block_init_disk()
1205 rc = device_add_disk(&card->dev, msb->disk, NULL); in mspro_block_init_disk()
1208 msb->active = 1; in mspro_block_init_disk()
1212 put_disk(msb->disk); in mspro_block_init_disk()
1214 blk_mq_free_tag_set(&msb->tag_set); in mspro_block_init_disk()
1222 static void mspro_block_data_clear(struct mspro_block_data *msb) in mspro_block_data_clear() argument
1227 if (msb->attr_group.attrs) { in mspro_block_data_clear()
1228 for (cnt = 0; msb->attr_group.attrs[cnt]; ++cnt) { in mspro_block_data_clear()
1229 s_attr = mspro_from_sysfs_attr(msb->attr_group in mspro_block_data_clear()
1234 kfree(msb->attr_group.attrs); in mspro_block_data_clear()
1237 msb->card = NULL; in mspro_block_data_clear()
1242 struct mspro_block_data *msb = memstick_get_drvdata(card); in mspro_block_check_card() local
1244 return (msb->active == 1); in mspro_block_check_card()
1249 struct mspro_block_data *msb; in mspro_block_probe() local
1252 msb = kzalloc(sizeof(struct mspro_block_data), GFP_KERNEL); in mspro_block_probe()
1253 if (!msb) in mspro_block_probe()
1255 memstick_set_drvdata(card, msb); in mspro_block_probe()
1256 msb->card = card; in mspro_block_probe()
1257 spin_lock_init(&msb->q_lock); in mspro_block_probe()
1264 rc = sysfs_create_group(&card->dev.kobj, &msb->attr_group); in mspro_block_probe()
1276 sysfs_remove_group(&card->dev.kobj, &msb->attr_group); in mspro_block_probe()
1279 mspro_block_data_clear(msb); in mspro_block_probe()
1280 kfree(msb); in mspro_block_probe()
1286 struct mspro_block_data *msb = memstick_get_drvdata(card); in mspro_block_remove() local
1289 spin_lock_irqsave(&msb->q_lock, flags); in mspro_block_remove()
1290 msb->eject = 1; in mspro_block_remove()
1291 spin_unlock_irqrestore(&msb->q_lock, flags); in mspro_block_remove()
1292 blk_mq_start_hw_queues(msb->queue); in mspro_block_remove()
1294 del_gendisk(msb->disk); in mspro_block_remove()
1297 blk_mq_free_tag_set(&msb->tag_set); in mspro_block_remove()
1298 msb->queue = NULL; in mspro_block_remove()
1300 sysfs_remove_group(&card->dev.kobj, &msb->attr_group); in mspro_block_remove()
1303 mspro_block_data_clear(msb); in mspro_block_remove()
1306 put_disk(msb->disk); in mspro_block_remove()
1314 struct mspro_block_data *msb = memstick_get_drvdata(card); in mspro_block_suspend() local
1317 blk_mq_stop_hw_queues(msb->queue); in mspro_block_suspend()
1319 spin_lock_irqsave(&msb->q_lock, flags); in mspro_block_suspend()
1320 msb->active = 0; in mspro_block_suspend()
1321 spin_unlock_irqrestore(&msb->q_lock, flags); in mspro_block_suspend()
1328 struct mspro_block_data *msb = memstick_get_drvdata(card); in mspro_block_resume() local
1352 && msb->attr_group.attrs[cnt]; ++cnt) { in mspro_block_resume()
1354 r_attr = mspro_from_sysfs_attr(msb->attr_group.attrs[cnt]); in mspro_block_resume()
1361 msb->active = 1; in mspro_block_resume()
1367 memstick_set_drvdata(card, msb); in mspro_block_resume()
1375 blk_mq_start_hw_queues(msb->queue); in mspro_block_resume()