Lines Matching refs:map

20 static int lpddr_chip_setup(struct map_info *map, struct lpddr_private *lpddr);
21 struct mtd_info *lpddr_probe(struct map_info *map);
22 static struct lpddr_private *lpddr_probe_chip(struct map_info *map);
23 static int lpddr_pfow_present(struct map_info *map,
44 static long lpddr_get_qinforec_pos(struct map_info *map, char *id_str) in lpddr_get_qinforec_pos() argument
48 int bankwidth = map_bankwidth(map) * 8; in lpddr_get_qinforec_pos()
58 printk(KERN_ERR"%s qinfo id string is wrong! \n", map->name); in lpddr_get_qinforec_pos()
63 static uint16_t lpddr_info_query(struct map_info *map, char *id_str) in lpddr_info_query() argument
66 int bits_per_chip = map_bankwidth(map) * 8; in lpddr_info_query()
67 unsigned long adr = lpddr_get_qinforec_pos(map, id_str); in lpddr_info_query()
71 map_write(map, CMD(LPDDR_INFO_QUERY), in lpddr_info_query()
72 map->pfow_base + PFOW_COMMAND_CODE); in lpddr_info_query()
73 map_write(map, CMD(adr & ((1 << bits_per_chip) - 1)), in lpddr_info_query()
74 map->pfow_base + PFOW_COMMAND_ADDRESS_L); in lpddr_info_query()
75 map_write(map, CMD(adr >> bits_per_chip), in lpddr_info_query()
76 map->pfow_base + PFOW_COMMAND_ADDRESS_H); in lpddr_info_query()
77 map_write(map, CMD(LPDDR_START_EXECUTION), in lpddr_info_query()
78 map->pfow_base + PFOW_COMMAND_EXECUTE); in lpddr_info_query()
81 dsr = CMDVAL(map_read(map, map->pfow_base + PFOW_DSR)); in lpddr_info_query()
87 val = CMDVAL(map_read(map, map->pfow_base + PFOW_COMMAND_DATA)); in lpddr_info_query()
91 static int lpddr_pfow_present(struct map_info *map, struct lpddr_private *lpddr) in lpddr_pfow_present() argument
96 pfow_val[0] = map_read(map, map->pfow_base + PFOW_QUERY_STRING_P); in lpddr_pfow_present()
97 pfow_val[1] = map_read(map, map->pfow_base + PFOW_QUERY_STRING_F); in lpddr_pfow_present()
98 pfow_val[2] = map_read(map, map->pfow_base + PFOW_QUERY_STRING_O); in lpddr_pfow_present()
99 pfow_val[3] = map_read(map, map->pfow_base + PFOW_QUERY_STRING_W); in lpddr_pfow_present()
101 if (!map_word_equal(map, CMD('P'), pfow_val[0])) in lpddr_pfow_present()
104 if (!map_word_equal(map, CMD('F'), pfow_val[1])) in lpddr_pfow_present()
107 if (!map_word_equal(map, CMD('O'), pfow_val[2])) in lpddr_pfow_present()
110 if (!map_word_equal(map, CMD('W'), pfow_val[3])) in lpddr_pfow_present()
116 map->name, map->pfow_base); in lpddr_pfow_present()
120 static int lpddr_chip_setup(struct map_info *map, struct lpddr_private *lpddr) in lpddr_chip_setup() argument
128 lpddr->ManufactId = CMDVAL(map_read(map, map->pfow_base + PFOW_MANUFACTURER_ID)); in lpddr_chip_setup()
130 lpddr->DevId = CMDVAL(map_read(map, map->pfow_base + PFOW_DEVICE_ID)); in lpddr_chip_setup()
132 lpddr->qinfo->DevSizeShift = lpddr_info_query(map, "DevSizeShift"); in lpddr_chip_setup()
133 lpddr->qinfo->TotalBlocksNum = lpddr_info_query(map, "TotalBlocksNum"); in lpddr_chip_setup()
134 lpddr->qinfo->BufSizeShift = lpddr_info_query(map, "BufSizeShift"); in lpddr_chip_setup()
135 lpddr->qinfo->HWPartsNum = lpddr_info_query(map, "HWPartsNum"); in lpddr_chip_setup()
137 lpddr_info_query(map, "UniformBlockSizeShift"); in lpddr_chip_setup()
138 lpddr->qinfo->SuspEraseSupp = lpddr_info_query(map, "SuspEraseSupp"); in lpddr_chip_setup()
140 lpddr_info_query(map, "SingleWordProgTime"); in lpddr_chip_setup()
141 lpddr->qinfo->ProgBufferTime = lpddr_info_query(map, "ProgBufferTime"); in lpddr_chip_setup()
142 lpddr->qinfo->BlockEraseTime = lpddr_info_query(map, "BlockEraseTime"); in lpddr_chip_setup()
145 static struct lpddr_private *lpddr_probe_chip(struct map_info *map) in lpddr_probe_chip() argument
152 if ((map->pfow_base + 0x1000) >= map->size) { in lpddr_probe_chip()
154 "the map(0x%08lx)\n", map->name, in lpddr_probe_chip()
155 (unsigned long)map->pfow_base, map->size - 1); in lpddr_probe_chip()
159 if (!lpddr_pfow_present(map, &lpddr)) in lpddr_probe_chip()
162 if (!lpddr_chip_setup(map, &lpddr)) in lpddr_probe_chip()
184 struct mtd_info *lpddr_probe(struct map_info *map) in lpddr_probe() argument
190 lpddr = lpddr_probe_chip(map); in lpddr_probe()
194 map->fldrv_priv = lpddr; in lpddr_probe()
195 mtd = lpddr_cmdset(map); in lpddr_probe()
197 if (mtd->size > map->size) { in lpddr_probe()
200 (unsigned long)map->size >> 10); in lpddr_probe()
201 mtd->size = map->size; in lpddr_probe()
208 map->fldrv_priv = NULL; in lpddr_probe()