Lines Matching refs:p_dev

384 int snor_erase(struct SFNOR_DEV *p_dev,  in snor_erase()  argument
399 op.sfcmd.b.cmd = p_dev->blk_erase_cmd; in snor_erase()
401 op.sfcmd.b.cmd = p_dev->sec_erase_cmd; in snor_erase()
407 if (p_dev->addr_mode == ADDR_MODE_4BYTE && erase_type != ERASE_CHIP) in snor_erase()
423 int snor_prog_page(struct SFNOR_DEV *p_dev, in snor_prog_page() argument
434 op.sfcmd.b.cmd = p_dev->prog_cmd; in snor_prog_page()
439 op.sfctrl.b.datalines = p_dev->prog_lines; in snor_prog_page()
441 op.sfctrl.b.addrlines = p_dev->prog_addr_lines; in snor_prog_page()
443 if (p_dev->addr_mode == ADDR_MODE_4BYTE) in snor_prog_page()
457 static int snor_prog(struct SFNOR_DEV *p_dev, u32 addr, void *p_data, u32 size) in snor_prog() argument
466 ret = snor_prog_page(p_dev, addr, p_buf, len); in snor_prog()
478 static int snor_enable_QE(struct SFNOR_DEV *p_dev) in snor_enable_QE() argument
485 reg_index = p_dev->QE_bits >> 3; in snor_enable_QE()
486 bit_offset = p_dev->QE_bits & 0x7; in snor_enable_QE()
496 return p_dev->write_status(reg_index, status); in snor_enable_QE()
499 int snor_disable_QE(struct SFNOR_DEV *p_dev) in snor_disable_QE() argument
506 reg_index = p_dev->QE_bits >> 3; in snor_disable_QE()
507 bit_offset = p_dev->QE_bits & 0x7; in snor_disable_QE()
517 return p_dev->write_status(reg_index, status); in snor_disable_QE()
520 int snor_read_data(struct SFNOR_DEV *p_dev, in snor_read_data() argument
529 op.sfcmd.b.cmd = p_dev->read_cmd; in snor_read_data()
533 op.sfctrl.b.datalines = p_dev->read_lines; in snor_read_data()
537 if (p_dev->read_cmd == CMD_FAST_READ_X1 || in snor_read_data()
538 p_dev->read_cmd == CMD_PAGE_FASTREAD4B || in snor_read_data()
539 p_dev->read_cmd == CMD_FAST_READ_X4 || in snor_read_data()
540 p_dev->read_cmd == CMD_FAST_READ_X2 || in snor_read_data()
541 p_dev->read_cmd == CMD_FAST_4READ_X4) { in snor_read_data()
543 } else if (p_dev->read_cmd == CMD_FAST_READ_A4) { in snor_read_data()
550 if (p_dev->addr_mode == ADDR_MODE_4BYTE) in snor_read_data()
559 int snor_read(struct SFNOR_DEV *p_dev, u32 sec, u32 n_sec, void *p_data) in snor_read() argument
567 if ((sec + n_sec) > p_dev->capacity) in snor_read()
573 len = size < p_dev->max_iosize ? size : p_dev->max_iosize; in snor_read()
574 ret = snor_read_data(p_dev, addr, p_buf, len); in snor_read()
592 int snor_write(struct SFNOR_DEV *p_dev, u32 sec, u32 n_sec, void *p_data) in snor_write() argument
601 if ((sec + n_sec) > p_dev->capacity) in snor_write()
605 if (sec < 512 || sec >= p_dev->capacity - 512) in snor_write()
608 blk_size = p_dev->blk_size; in snor_write()
612 ret = snor_erase(p_dev, sec << 9, (blk_size == 8) ? in snor_write()
622 ret = snor_prog(p_dev, sec << 9, p_buf, len << 9); in snor_write()
670 u32 snor_get_capacity(struct SFNOR_DEV *p_dev) in snor_get_capacity() argument
672 return p_dev->capacity; in snor_get_capacity()
704 static int snor_parse_flash_table(struct SFNOR_DEV *p_dev, in snor_parse_flash_table() argument
711 p_dev->manufacturer = (g_spi_flash_info->id >> 16) & 0xFF; in snor_parse_flash_table()
712 p_dev->mem_type = (g_spi_flash_info->id >> 8) & 0xFF; in snor_parse_flash_table()
713 p_dev->capacity = 1 << g_spi_flash_info->density; in snor_parse_flash_table()
714 p_dev->blk_size = g_spi_flash_info->block_size; in snor_parse_flash_table()
715 p_dev->page_size = NOR_SECS_PAGE; in snor_parse_flash_table()
716 p_dev->read_cmd = g_spi_flash_info->read_cmd; in snor_parse_flash_table()
717 p_dev->prog_cmd = g_spi_flash_info->prog_cmd; in snor_parse_flash_table()
718 p_dev->sec_erase_cmd = g_spi_flash_info->sector_erase_cmd; in snor_parse_flash_table()
719 p_dev->blk_erase_cmd = g_spi_flash_info->block_erase_cmd; in snor_parse_flash_table()
720 p_dev->prog_lines = DATA_LINES_X1; in snor_parse_flash_table()
721 p_dev->read_lines = DATA_LINES_X1; in snor_parse_flash_table()
722 p_dev->QE_bits = g_spi_flash_info->QE_bits; in snor_parse_flash_table()
723 p_dev->addr_mode = ADDR_MODE_3BYTE; in snor_parse_flash_table()
727 p_dev->write_status = snor_write_status; in snor_parse_flash_table()
729 p_dev->write_status = snor_write_status1; in snor_parse_flash_table()
731 p_dev->write_status = snor_write_status2; in snor_parse_flash_table()
736 ret = snor_enable_QE(p_dev); in snor_parse_flash_table()
738 p_dev->read_lines = DATA_LINES_X4; in snor_parse_flash_table()
739 p_dev->read_cmd = g_spi_flash_info->read_cmd_4; in snor_parse_flash_table()
743 p_dev->read_lines == DATA_LINES_X4) { in snor_parse_flash_table()
744 p_dev->prog_lines = DATA_LINES_X4; in snor_parse_flash_table()
745 p_dev->prog_cmd = g_spi_flash_info->prog_cmd_4; in snor_parse_flash_table()
746 if ((p_dev->manufacturer == MID_MACRONIX) && in snor_parse_flash_table()
747 (p_dev->prog_cmd == CMD_PAGE_PROG_A4 || in snor_parse_flash_table()
748 p_dev->prog_cmd == CMD_PAGE_PROG_4PP)) in snor_parse_flash_table()
749 p_dev->prog_addr_lines = DATA_LINES_X4; in snor_parse_flash_table()
753 p_dev->addr_mode = ADDR_MODE_4BYTE; in snor_parse_flash_table()
762 int snor_init(struct SFNOR_DEV *p_dev) in snor_init() argument
767 if (!p_dev) in snor_init()
770 memset((void *)p_dev, 0, sizeof(struct SFNOR_DEV)); in snor_init()
771 p_dev->max_iosize = sfc_get_max_iosize(); in snor_init()
781 snor_parse_flash_table(p_dev, g_spi_flash_info); in snor_init()
785 p_dev->manufacturer = id_byte[0]; in snor_init()
786 p_dev->mem_type = id_byte[1]; in snor_init()
787 p_dev->capacity = 1 << (id_byte[2] - 9); in snor_init()
788 p_dev->QE_bits = 0; in snor_init()
789 p_dev->blk_size = NOR_SECS_BLK; in snor_init()
790 p_dev->page_size = NOR_SECS_PAGE; in snor_init()
791 p_dev->read_cmd = CMD_READ_DATA; in snor_init()
792 p_dev->prog_cmd = CMD_PAGE_PROG; in snor_init()
793 p_dev->sec_erase_cmd = CMD_SECTOR_ERASE; in snor_init()
794 p_dev->blk_erase_cmd = CMD_BLOCK_ERASE; in snor_init()
795 p_dev->prog_lines = DATA_LINES_X1; in snor_init()
796 p_dev->prog_addr_lines = DATA_LINES_X1; in snor_init()
797 p_dev->read_lines = DATA_LINES_X1; in snor_init()
798 p_dev->write_status = snor_write_status; in snor_init()
802 rkflash_print_info("addr_mode: %x\n", p_dev->addr_mode); in snor_init()
803 rkflash_print_info("read_lines: %x\n", p_dev->read_lines); in snor_init()
804 rkflash_print_info("prog_lines: %x\n", p_dev->prog_lines); in snor_init()
805 rkflash_print_info("read_cmd: %x\n", p_dev->read_cmd); in snor_init()
806 rkflash_print_info("prog_cmd: %x\n", p_dev->prog_cmd); in snor_init()
807 rkflash_print_info("blk_erase_cmd: %x\n", p_dev->blk_erase_cmd); in snor_init()
808 rkflash_print_info("sec_erase_cmd: %x\n", p_dev->sec_erase_cmd); in snor_init()
809 rkflash_print_info("capacity: %x\n", p_dev->capacity); in snor_init()
814 int snor_reinit_from_table_packet(struct SFNOR_DEV *p_dev, in snor_reinit_from_table_packet() argument
821 if (!p_dev || packet->id != SNOR_INFO_PACKET_ID) in snor_reinit_from_table_packet()
843 ret = snor_parse_flash_table(p_dev, &g_spi_flash_info); in snor_reinit_from_table_packet()