Lines Matching refs:p_dev
333 int snor_erase(struct SFNOR_DEV *p_dev, in snor_erase() argument
348 op.sfcmd.b.cmd = p_dev->blk_erase_cmd; in snor_erase()
350 op.sfcmd.b.cmd = p_dev->sec_erase_cmd; in snor_erase()
356 if (p_dev->addr_mode == ADDR_MODE_4BYTE && erase_type != ERASE_CHIP) in snor_erase()
372 int snor_prog_page(struct SFNOR_DEV *p_dev, in snor_prog_page() argument
383 op.sfcmd.b.cmd = p_dev->prog_cmd; in snor_prog_page()
388 op.sfctrl.b.datalines = p_dev->prog_lines; in snor_prog_page()
390 op.sfctrl.b.addrlines = p_dev->prog_addr_lines; in snor_prog_page()
392 if (p_dev->addr_mode == ADDR_MODE_4BYTE) in snor_prog_page()
406 static int snor_prog(struct SFNOR_DEV *p_dev, u32 addr, void *p_data, u32 size) in snor_prog() argument
415 ret = snor_prog_page(p_dev, addr, p_buf, len); in snor_prog()
427 static int snor_enable_QE(struct SFNOR_DEV *p_dev) in snor_enable_QE() argument
434 reg_index = p_dev->QE_bits >> 3; in snor_enable_QE()
435 bit_offset = p_dev->QE_bits & 0x7; in snor_enable_QE()
445 return p_dev->write_status(reg_index, status); in snor_enable_QE()
448 int snor_disable_QE(struct SFNOR_DEV *p_dev) in snor_disable_QE() argument
455 reg_index = p_dev->QE_bits >> 3; in snor_disable_QE()
456 bit_offset = p_dev->QE_bits & 0x7; in snor_disable_QE()
466 return p_dev->write_status(reg_index, status); in snor_disable_QE()
469 int snor_read_data(struct SFNOR_DEV *p_dev, in snor_read_data() argument
478 op.sfcmd.b.cmd = p_dev->read_cmd; in snor_read_data()
482 op.sfctrl.b.datalines = p_dev->read_lines; in snor_read_data()
486 if (p_dev->read_cmd == CMD_FAST_READ_X1 || in snor_read_data()
487 p_dev->read_cmd == CMD_PAGE_FASTREAD4B || in snor_read_data()
488 p_dev->read_cmd == CMD_FAST_READ_X4 || in snor_read_data()
489 p_dev->read_cmd == CMD_FAST_READ_X2 || in snor_read_data()
490 p_dev->read_cmd == CMD_FAST_4READ_X4) { in snor_read_data()
492 } else if (p_dev->read_cmd == CMD_FAST_READ_A4) { in snor_read_data()
499 if (p_dev->addr_mode == ADDR_MODE_4BYTE) in snor_read_data()
508 int snor_read(struct SFNOR_DEV *p_dev, u32 sec, u32 n_sec, void *p_data) in snor_read() argument
516 if ((sec + n_sec) > p_dev->capacity) in snor_read()
522 len = size < p_dev->max_iosize ? size : p_dev->max_iosize; in snor_read()
523 ret = snor_read_data(p_dev, addr, p_buf, len); in snor_read()
541 int snor_write(struct SFNOR_DEV *p_dev, u32 sec, u32 n_sec, void *p_data) in snor_write() argument
550 if ((sec + n_sec) > p_dev->capacity) in snor_write()
554 if (sec < 512 || sec >= p_dev->capacity - 512) in snor_write()
557 blk_size = p_dev->blk_size; in snor_write()
561 ret = snor_erase(p_dev, sec << 9, (blk_size == 8) ? in snor_write()
571 ret = snor_prog(p_dev, sec << 9, p_buf, len << 9); in snor_write()
619 u32 snor_get_capacity(struct SFNOR_DEV *p_dev) in snor_get_capacity() argument
621 return p_dev->capacity; in snor_get_capacity()
653 static int snor_parse_flash_table(struct SFNOR_DEV *p_dev, in snor_parse_flash_table() argument
660 p_dev->manufacturer = (g_spi_flash_info->id >> 16) & 0xFF; in snor_parse_flash_table()
661 p_dev->mem_type = (g_spi_flash_info->id >> 8) & 0xFF; in snor_parse_flash_table()
662 p_dev->capacity = 1 << g_spi_flash_info->density; in snor_parse_flash_table()
663 p_dev->blk_size = g_spi_flash_info->block_size; in snor_parse_flash_table()
664 p_dev->page_size = NOR_SECS_PAGE; in snor_parse_flash_table()
665 p_dev->read_cmd = g_spi_flash_info->read_cmd; in snor_parse_flash_table()
666 p_dev->prog_cmd = g_spi_flash_info->prog_cmd; in snor_parse_flash_table()
667 p_dev->sec_erase_cmd = g_spi_flash_info->sector_erase_cmd; in snor_parse_flash_table()
668 p_dev->blk_erase_cmd = g_spi_flash_info->block_erase_cmd; in snor_parse_flash_table()
669 p_dev->prog_lines = DATA_LINES_X1; in snor_parse_flash_table()
670 p_dev->read_lines = DATA_LINES_X1; in snor_parse_flash_table()
671 p_dev->QE_bits = g_spi_flash_info->QE_bits; in snor_parse_flash_table()
672 p_dev->addr_mode = ADDR_MODE_3BYTE; in snor_parse_flash_table()
676 p_dev->write_status = snor_write_status; in snor_parse_flash_table()
678 p_dev->write_status = snor_write_status1; in snor_parse_flash_table()
680 p_dev->write_status = snor_write_status2; in snor_parse_flash_table()
685 ret = snor_enable_QE(p_dev); in snor_parse_flash_table()
687 p_dev->read_lines = DATA_LINES_X4; in snor_parse_flash_table()
688 p_dev->read_cmd = g_spi_flash_info->read_cmd_4; in snor_parse_flash_table()
692 p_dev->read_lines == DATA_LINES_X4) { in snor_parse_flash_table()
693 p_dev->prog_lines = DATA_LINES_X4; in snor_parse_flash_table()
694 p_dev->prog_cmd = g_spi_flash_info->prog_cmd_4; in snor_parse_flash_table()
695 if ((p_dev->manufacturer == MID_MACRONIX) && in snor_parse_flash_table()
696 (p_dev->prog_cmd == CMD_PAGE_PROG_A4 || in snor_parse_flash_table()
697 p_dev->prog_cmd == CMD_PAGE_PROG_4PP)) in snor_parse_flash_table()
698 p_dev->prog_addr_lines = DATA_LINES_X4; in snor_parse_flash_table()
702 p_dev->addr_mode = ADDR_MODE_4BYTE; in snor_parse_flash_table()
711 int snor_init(struct SFNOR_DEV *p_dev) in snor_init() argument
716 if (!p_dev) in snor_init()
719 memset((void *)p_dev, 0, sizeof(struct SFNOR_DEV)); in snor_init()
720 p_dev->max_iosize = sfc_get_max_iosize(); in snor_init()
730 snor_parse_flash_table(p_dev, g_spi_flash_info); in snor_init()
734 p_dev->manufacturer = id_byte[0]; in snor_init()
735 p_dev->mem_type = id_byte[1]; in snor_init()
736 p_dev->capacity = 1 << (id_byte[2] - 9); in snor_init()
737 p_dev->QE_bits = 0; in snor_init()
738 p_dev->blk_size = NOR_SECS_BLK; in snor_init()
739 p_dev->page_size = NOR_SECS_PAGE; in snor_init()
740 p_dev->read_cmd = CMD_READ_DATA; in snor_init()
741 p_dev->prog_cmd = CMD_PAGE_PROG; in snor_init()
742 p_dev->sec_erase_cmd = CMD_SECTOR_ERASE; in snor_init()
743 p_dev->blk_erase_cmd = CMD_BLOCK_ERASE; in snor_init()
744 p_dev->prog_lines = DATA_LINES_X1; in snor_init()
745 p_dev->prog_addr_lines = DATA_LINES_X1; in snor_init()
746 p_dev->read_lines = DATA_LINES_X1; in snor_init()
747 p_dev->write_status = snor_write_status; in snor_init()
751 rkflash_print_info("addr_mode: %x\n", p_dev->addr_mode); in snor_init()
752 rkflash_print_info("read_lines: %x\n", p_dev->read_lines); in snor_init()
753 rkflash_print_info("prog_lines: %x\n", p_dev->prog_lines); in snor_init()
754 rkflash_print_info("read_cmd: %x\n", p_dev->read_cmd); in snor_init()
755 rkflash_print_info("prog_cmd: %x\n", p_dev->prog_cmd); in snor_init()
756 rkflash_print_info("blk_erase_cmd: %x\n", p_dev->blk_erase_cmd); in snor_init()
757 rkflash_print_info("sec_erase_cmd: %x\n", p_dev->sec_erase_cmd); in snor_init()
758 rkflash_print_info("capacity: %x\n", p_dev->capacity); in snor_init()
763 int snor_reinit_from_table_packet(struct SFNOR_DEV *p_dev, in snor_reinit_from_table_packet() argument
770 if (!p_dev || packet->id != SNOR_INFO_PACKET_ID) in snor_reinit_from_table_packet()
792 ret = snor_parse_flash_table(p_dev, &g_spi_flash_info); in snor_reinit_from_table_packet()