• Home
  • Raw
  • Download

Lines Matching refs:msb

188 	struct mspro_block_data *msb = disk->private_data;  in mspro_block_bd_open()  local
193 if (msb && msb->card) { in mspro_block_bd_open()
194 msb->usage_count++; in mspro_block_bd_open()
195 if ((mode & FMODE_WRITE) && msb->read_only) in mspro_block_bd_open()
209 struct mspro_block_data *msb = disk->private_data; in mspro_block_disk_release() local
214 if (msb) { in mspro_block_disk_release()
215 if (msb->usage_count) in mspro_block_disk_release()
216 msb->usage_count--; in mspro_block_disk_release()
218 if (!msb->usage_count) { in mspro_block_disk_release()
219 kfree(msb); in mspro_block_disk_release()
237 struct mspro_block_data *msb = bdev->bd_disk->private_data; in mspro_block_bd_getgeo() local
239 geo->heads = msb->heads; in mspro_block_bd_getgeo()
240 geo->sectors = msb->sectors_per_track; in mspro_block_bd_getgeo()
241 geo->cylinders = msb->cylinders; in mspro_block_bd_getgeo()
528 struct mspro_block_data *msb = memstick_get_drvdata(card); in h_mspro_block_req_init() local
531 card->next_request = msb->mrq_handler; in h_mspro_block_req_init()
550 struct mspro_block_data *msb = memstick_get_drvdata(card); in h_mspro_block_get_ro() local
555 msb->read_only = 1; in h_mspro_block_get_ro()
557 msb->read_only = 0; in h_mspro_block_get_ro()
581 struct mspro_block_data *msb = memstick_get_drvdata(card); in h_mspro_block_transfer_data() local
591 memstick_init_req(*mrq, MS_TPC_SET_CMD, &msb->transfer_cmd, 1); in h_mspro_block_transfer_data()
597 if (msb->caps & MEMSTICK_CAP_AUTO_GET_INT) in h_mspro_block_transfer_data()
610 if (msb->current_page in h_mspro_block_transfer_data()
611 == (msb->req_sg[msb->current_seg].length in h_mspro_block_transfer_data()
612 / msb->page_size)) { in h_mspro_block_transfer_data()
613 msb->current_page = 0; in h_mspro_block_transfer_data()
614 msb->current_seg++; in h_mspro_block_transfer_data()
616 if (msb->current_seg == msb->seg_count) { in h_mspro_block_transfer_data()
635 t_offset = msb->req_sg[msb->current_seg].offset; in h_mspro_block_transfer_data()
636 t_offset += msb->current_page * msb->page_size; in h_mspro_block_transfer_data()
639 nth_page(sg_page(&(msb->req_sg[msb->current_seg])), in h_mspro_block_transfer_data()
641 msb->page_size, offset_in_page(t_offset)); in h_mspro_block_transfer_data()
643 memstick_init_req_sg(*mrq, msb->data_dir == READ in h_mspro_block_transfer_data()
651 msb->current_page++; in h_mspro_block_transfer_data()
652 if (msb->caps & MEMSTICK_CAP_AUTO_GET_INT) { in h_mspro_block_transfer_data()
677 struct mspro_block_data *msb = memstick_get_drvdata(card); in h_mspro_block_setup_cmd() local
679 .system = msb->system, in h_mspro_block_setup_cmd()
680 .data_count = cpu_to_be16((uint16_t)(length / msb->page_size)), in h_mspro_block_setup_cmd()
686 do_div(offset, msb->page_size); in h_mspro_block_setup_cmd()
690 msb->mrq_handler = h_mspro_block_transfer_data; in h_mspro_block_setup_cmd()
699 struct mspro_block_data *msb = memstick_get_drvdata(card); in mspro_block_issue_req() local
705 msb->current_page = 0; in mspro_block_issue_req()
706 msb->current_seg = 0; in mspro_block_issue_req()
707 msb->seg_count = blk_rq_map_sg(msb->block_req->q, in mspro_block_issue_req()
708 msb->block_req, in mspro_block_issue_req()
709 msb->req_sg); in mspro_block_issue_req()
711 if (!msb->seg_count) { in mspro_block_issue_req()
712 chunk = __blk_end_request_cur(msb->block_req, -ENOMEM); in mspro_block_issue_req()
716 t_off = blk_rq_pos(msb->block_req); in mspro_block_issue_req()
718 count = blk_rq_bytes(msb->block_req); in mspro_block_issue_req()
720 msb->setup_transfer(card, t_off, count); in mspro_block_issue_req()
722 msb->data_dir = rq_data_dir(msb->block_req); in mspro_block_issue_req()
723 msb->transfer_cmd = msb->data_dir == READ in mspro_block_issue_req()
732 msb->block_req = blk_fetch_request(msb->queue); in mspro_block_issue_req()
733 if (!msb->block_req) { in mspro_block_issue_req()
745 struct mspro_block_data *msb = memstick_get_drvdata(card); in mspro_block_complete_req() local
750 spin_lock_irqsave(&msb->q_lock, flags); in mspro_block_complete_req()
751 dev_dbg(&card->dev, "complete %d, %d\n", msb->has_request ? 1 : 0, in mspro_block_complete_req()
754 if (msb->has_request) { in mspro_block_complete_req()
760 if (msb->data_dir == READ) { in mspro_block_complete_req()
761 for (cnt = 0; cnt < msb->current_seg; cnt++) { in mspro_block_complete_req()
762 t_len += msb->req_sg[cnt].length in mspro_block_complete_req()
763 / msb->page_size; in mspro_block_complete_req()
765 if (msb->current_page) in mspro_block_complete_req()
766 t_len += msb->current_page - 1; in mspro_block_complete_req()
768 t_len *= msb->page_size; in mspro_block_complete_req()
772 t_len = blk_rq_bytes(msb->block_req); in mspro_block_complete_req()
777 t_len = blk_rq_cur_bytes(msb->block_req); in mspro_block_complete_req()
779 chunk = __blk_end_request(msb->block_req, error, t_len); in mspro_block_complete_req()
786 msb->has_request = 0; in mspro_block_complete_req()
795 spin_unlock_irqrestore(&msb->q_lock, flags); in mspro_block_complete_req()
801 struct mspro_block_data *msb = memstick_get_drvdata(card); in mspro_block_stop() local
806 spin_lock_irqsave(&msb->q_lock, flags); in mspro_block_stop()
807 if (!msb->has_request) { in mspro_block_stop()
808 blk_stop_queue(msb->queue); in mspro_block_stop()
811 spin_unlock_irqrestore(&msb->q_lock, flags); in mspro_block_stop()
822 struct mspro_block_data *msb = memstick_get_drvdata(card); in mspro_block_start() local
825 spin_lock_irqsave(&msb->q_lock, flags); in mspro_block_start()
826 blk_start_queue(msb->queue); in mspro_block_start()
827 spin_unlock_irqrestore(&msb->q_lock, flags); in mspro_block_start()
846 struct mspro_block_data *msb = memstick_get_drvdata(card); in mspro_block_submit_req() local
849 if (msb->has_request) in mspro_block_submit_req()
852 if (msb->eject) { in mspro_block_submit_req()
859 msb->has_request = 1; in mspro_block_submit_req()
861 msb->has_request = 0; in mspro_block_submit_req()
868 struct mspro_block_data *msb = memstick_get_drvdata(card); in mspro_block_wait_for_ced() local
871 msb->mrq_handler = h_mspro_block_wait_for_ced; in mspro_block_wait_for_ced()
882 struct mspro_block_data *msb = memstick_get_drvdata(card); in mspro_block_set_interface() local
891 msb->mrq_handler = h_mspro_block_default; in mspro_block_set_interface()
902 struct mspro_block_data *msb = memstick_get_drvdata(card); in mspro_block_switch_interface() local
906 if (msb->caps & MEMSTICK_CAP_PAR4) in mspro_block_switch_interface()
918 msb->system = MEMSTICK_SYS_PAR4; in mspro_block_switch_interface()
923 if (msb->caps & MEMSTICK_CAP_PAR8) { in mspro_block_switch_interface()
927 msb->system = MEMSTICK_SYS_PAR8; in mspro_block_switch_interface()
940 msb->mrq_handler = h_mspro_block_default; in mspro_block_switch_interface()
950 msb->system = MEMSTICK_SYS_SERIAL; in mspro_block_switch_interface()
958 rc = mspro_block_set_interface(card, msb->system); in mspro_block_switch_interface()
966 if (msb->caps & MEMSTICK_CAP_PAR8) { in mspro_block_switch_interface()
967 msb->caps &= ~MEMSTICK_CAP_PAR8; in mspro_block_switch_interface()
981 struct mspro_block_data *msb = memstick_get_drvdata(card); in mspro_block_read_attributes() local
991 unsigned int addr, attr_offset = 0, attr_len = msb->page_size; in mspro_block_read_attributes()
993 attr = kmalloc(msb->page_size, GFP_KERNEL); in mspro_block_read_attributes()
997 sg_init_one(&msb->req_sg[0], attr, msb->page_size); in mspro_block_read_attributes()
998 msb->seg_count = 1; in mspro_block_read_attributes()
999 msb->current_seg = 0; in mspro_block_read_attributes()
1000 msb->current_page = 0; in mspro_block_read_attributes()
1001 msb->data_dir = READ; in mspro_block_read_attributes()
1002 msb->transfer_cmd = MSPRO_CMD_READ_ATRB; in mspro_block_read_attributes()
1004 msb->setup_transfer(card, attr_offset, attr_len); in mspro_block_read_attributes()
1027 msb->attr_group.attrs = kcalloc(attr_count + 1, in mspro_block_read_attributes()
1028 sizeof(*msb->attr_group.attrs), in mspro_block_read_attributes()
1030 if (!msb->attr_group.attrs) { in mspro_block_read_attributes()
1034 msb->attr_group.name = "media_attributes"; in mspro_block_read_attributes()
1050 msb->attr_group.attrs[cnt] = &s_attr->dev_attr.attr; in mspro_block_read_attributes()
1078 if (((addr / msb->page_size) == (attr_offset / msb->page_size)) in mspro_block_read_attributes()
1079 && (((addr + s_attr->size - 1) / msb->page_size) in mspro_block_read_attributes()
1080 == (attr_offset / msb->page_size))) { in mspro_block_read_attributes()
1081 memcpy(s_attr->data, buffer + addr % msb->page_size, in mspro_block_read_attributes()
1086 attr_offset = (addr / msb->page_size) * msb->page_size; in mspro_block_read_attributes()
1090 attr_len = (((addr + s_attr->size) / msb->page_size) in mspro_block_read_attributes()
1091 + 1 ) * msb->page_size - attr_offset; in mspro_block_read_attributes()
1099 sg_init_one(&msb->req_sg[0], buffer, attr_len); in mspro_block_read_attributes()
1100 msb->seg_count = 1; in mspro_block_read_attributes()
1101 msb->current_seg = 0; in mspro_block_read_attributes()
1102 msb->current_page = 0; in mspro_block_read_attributes()
1103 msb->data_dir = READ; in mspro_block_read_attributes()
1104 msb->transfer_cmd = MSPRO_CMD_READ_ATRB; in mspro_block_read_attributes()
1109 msb->setup_transfer(card, attr_offset, attr_len); in mspro_block_read_attributes()
1117 memcpy(s_attr->data, buffer + addr % msb->page_size, in mspro_block_read_attributes()
1131 struct mspro_block_data *msb = memstick_get_drvdata(card); in mspro_block_init_card() local
1135 msb->system = MEMSTICK_SYS_SERIAL; in mspro_block_init_card()
1136 msb->setup_transfer = h_mspro_block_setup_cmd; in mspro_block_init_card()
1146 msb->caps = host->caps; in mspro_block_init_card()
1158 if (msb->system != MEMSTICK_SYS_SERIAL) in mspro_block_init_card()
1159 msb->caps |= MEMSTICK_CAP_AUTO_GET_INT; in mspro_block_init_card()
1162 msb->mrq_handler = h_mspro_block_get_ro; in mspro_block_init_card()
1170 dev_dbg(&card->dev, "card r/w status %d\n", msb->read_only ? 0 : 1); in mspro_block_init_card()
1172 msb->page_size = 512; in mspro_block_init_card()
1184 struct mspro_block_data *msb = memstick_get_drvdata(card); in mspro_block_init_disk() local
1196 for (rc = 0; msb->attr_group.attrs[rc]; ++rc) { in mspro_block_init_disk()
1197 s_attr = mspro_from_sysfs_attr(msb->attr_group.attrs[rc]); in mspro_block_init_disk()
1208 msb->cylinders = be16_to_cpu(dev_info->cylinders); in mspro_block_init_disk()
1209 msb->heads = be16_to_cpu(dev_info->heads); in mspro_block_init_disk()
1210 msb->sectors_per_track = be16_to_cpu(dev_info->sectors_per_track); in mspro_block_init_disk()
1212 msb->page_size = be16_to_cpu(sys_info->unit_size); in mspro_block_init_disk()
1220 msb->disk = alloc_disk(1 << MSPRO_BLOCK_PART_SHIFT); in mspro_block_init_disk()
1221 if (!msb->disk) { in mspro_block_init_disk()
1226 msb->queue = blk_init_queue(mspro_block_submit_req, &msb->q_lock); in mspro_block_init_disk()
1227 if (!msb->queue) { in mspro_block_init_disk()
1232 msb->queue->queuedata = card; in mspro_block_init_disk()
1233 blk_queue_prep_rq(msb->queue, mspro_block_prepare_req); in mspro_block_init_disk()
1235 blk_queue_bounce_limit(msb->queue, limit); in mspro_block_init_disk()
1236 blk_queue_max_hw_sectors(msb->queue, MSPRO_BLOCK_MAX_PAGES); in mspro_block_init_disk()
1237 blk_queue_max_segments(msb->queue, MSPRO_BLOCK_MAX_SEGS); in mspro_block_init_disk()
1238 blk_queue_max_segment_size(msb->queue, in mspro_block_init_disk()
1239 MSPRO_BLOCK_MAX_PAGES * msb->page_size); in mspro_block_init_disk()
1241 msb->disk->major = major; in mspro_block_init_disk()
1242 msb->disk->first_minor = disk_id << MSPRO_BLOCK_PART_SHIFT; in mspro_block_init_disk()
1243 msb->disk->fops = &ms_block_bdops; in mspro_block_init_disk()
1244 msb->usage_count = 1; in mspro_block_init_disk()
1245 msb->disk->private_data = msb; in mspro_block_init_disk()
1246 msb->disk->queue = msb->queue; in mspro_block_init_disk()
1247 msb->disk->driverfs_dev = &card->dev; in mspro_block_init_disk()
1249 sprintf(msb->disk->disk_name, "mspblk%d", disk_id); in mspro_block_init_disk()
1251 blk_queue_logical_block_size(msb->queue, msb->page_size); in mspro_block_init_disk()
1255 capacity *= msb->page_size >> 9; in mspro_block_init_disk()
1256 set_capacity(msb->disk, capacity); in mspro_block_init_disk()
1259 add_disk(msb->disk); in mspro_block_init_disk()
1260 msb->active = 1; in mspro_block_init_disk()
1264 put_disk(msb->disk); in mspro_block_init_disk()
1272 static void mspro_block_data_clear(struct mspro_block_data *msb) in mspro_block_data_clear() argument
1277 if (msb->attr_group.attrs) { in mspro_block_data_clear()
1278 for (cnt = 0; msb->attr_group.attrs[cnt]; ++cnt) { in mspro_block_data_clear()
1279 s_attr = mspro_from_sysfs_attr(msb->attr_group in mspro_block_data_clear()
1284 kfree(msb->attr_group.attrs); in mspro_block_data_clear()
1287 msb->card = NULL; in mspro_block_data_clear()
1292 struct mspro_block_data *msb = memstick_get_drvdata(card); in mspro_block_check_card() local
1294 return (msb->active == 1); in mspro_block_check_card()
1299 struct mspro_block_data *msb; in mspro_block_probe() local
1302 msb = kzalloc(sizeof(struct mspro_block_data), GFP_KERNEL); in mspro_block_probe()
1303 if (!msb) in mspro_block_probe()
1305 memstick_set_drvdata(card, msb); in mspro_block_probe()
1306 msb->card = card; in mspro_block_probe()
1307 spin_lock_init(&msb->q_lock); in mspro_block_probe()
1314 rc = sysfs_create_group(&card->dev.kobj, &msb->attr_group); in mspro_block_probe()
1326 sysfs_remove_group(&card->dev.kobj, &msb->attr_group); in mspro_block_probe()
1329 mspro_block_data_clear(msb); in mspro_block_probe()
1330 kfree(msb); in mspro_block_probe()
1336 struct mspro_block_data *msb = memstick_get_drvdata(card); in mspro_block_remove() local
1339 spin_lock_irqsave(&msb->q_lock, flags); in mspro_block_remove()
1340 msb->eject = 1; in mspro_block_remove()
1341 blk_start_queue(msb->queue); in mspro_block_remove()
1342 spin_unlock_irqrestore(&msb->q_lock, flags); in mspro_block_remove()
1344 del_gendisk(msb->disk); in mspro_block_remove()
1347 blk_cleanup_queue(msb->queue); in mspro_block_remove()
1348 msb->queue = NULL; in mspro_block_remove()
1350 sysfs_remove_group(&card->dev.kobj, &msb->attr_group); in mspro_block_remove()
1353 mspro_block_data_clear(msb); in mspro_block_remove()
1356 mspro_block_disk_release(msb->disk); in mspro_block_remove()
1364 struct mspro_block_data *msb = memstick_get_drvdata(card); in mspro_block_suspend() local
1367 spin_lock_irqsave(&msb->q_lock, flags); in mspro_block_suspend()
1368 blk_stop_queue(msb->queue); in mspro_block_suspend()
1369 msb->active = 0; in mspro_block_suspend()
1370 spin_unlock_irqrestore(&msb->q_lock, flags); in mspro_block_suspend()
1377 struct mspro_block_data *msb = memstick_get_drvdata(card); in mspro_block_resume() local
1401 && msb->attr_group.attrs[cnt]; ++cnt) { in mspro_block_resume()
1403 r_attr = mspro_from_sysfs_attr(msb->attr_group.attrs[cnt]); in mspro_block_resume()
1410 msb->active = 1; in mspro_block_resume()
1416 memstick_set_drvdata(card, msb); in mspro_block_resume()
1424 spin_lock_irqsave(&msb->q_lock, flags); in mspro_block_resume()
1425 blk_start_queue(msb->queue); in mspro_block_resume()
1426 spin_unlock_irqrestore(&msb->q_lock, flags); in mspro_block_resume()