|
79 | 79 | mp_lcd_err_ti80_tx_color(mp_obj_tobj,intlcd_cmd,void*color,size_tcolor_size,intx_start,inty_start,intx_end,inty_end); |
80 | 80 | mp_lcd_err_ti80_del(mp_obj_tobj); |
81 | 81 | mp_lcd_err_ti80_init(mp_obj_tobj,uint16_twidth,uint16_theight,uint8_tbpp,uint32_tbuffer_size,boolrgb565_byte_swap,uint8_tcmd_bits,uint8_tparam_bits); |
82 | | -mp_lcd_err_ti80_get_lane_count(mp_obj_tobj,uint8_t*lane_count); |
83 | 82 |
|
84 | 83 | voidwrite_color8(mp_lcd_i80_bus_obj_t*self,void*color,size_tcolor_size); |
85 | 84 | voidwrite_color16(mp_lcd_i80_bus_obj_t*self,void*color,size_tcolor_size); |
|
103 | 102 | enum { |
104 | 103 | ARG_dc, |
105 | 104 | ARG_wr, |
106 | | -ARG_data0, |
107 | | -ARG_data1, |
108 | | -ARG_data2, |
109 | | -ARG_data3, |
110 | | -ARG_data4, |
111 | | -ARG_data5, |
112 | | -ARG_data6, |
113 | | -ARG_data7, |
114 | | -ARG_data8, |
115 | | -ARG_data9, |
116 | | -ARG_data10, |
117 | | -ARG_data11, |
118 | | -ARG_data12, |
119 | | -ARG_data13, |
120 | | -ARG_data14, |
121 | | -ARG_data15, |
| 105 | +ARG_data_pins, |
122 | 106 | ARG_cs, |
123 | 107 | ARG_freq, |
124 | 108 | ARG_dc_idle_high, |
|
129 | 113 | ARG_param_bits, |
130 | 114 | ARG_cs_active_high, |
131 | 115 | ARG_reverse_color_bits, |
132 | | -ARG_swap_color_bytes, |
133 | 116 | ARG_pclk_active_low, |
134 | 117 | ARG_pclk_idle_low, |
135 | 118 | }; |
|
151 | 134 | constmp_arg_tmake_new_args[]= { |
152 | 135 | {MP_QSTR_dc,MP_ARG_OBJ |MP_ARG_REQUIRED }, |
153 | 136 | {MP_QSTR_wr,MP_ARG_OBJ |MP_ARG_REQUIRED }, |
154 | | - {MP_QSTR_data0,MP_ARG_OBJ |MP_ARG_REQUIRED }, |
155 | | - {MP_QSTR_data1,MP_ARG_OBJ |MP_ARG_REQUIRED }, |
156 | | - {MP_QSTR_data2,MP_ARG_OBJ |MP_ARG_REQUIRED }, |
157 | | - {MP_QSTR_data3,MP_ARG_OBJ |MP_ARG_REQUIRED }, |
158 | | - {MP_QSTR_data4,MP_ARG_OBJ |MP_ARG_REQUIRED }, |
159 | | - {MP_QSTR_data5,MP_ARG_OBJ |MP_ARG_REQUIRED }, |
160 | | - {MP_QSTR_data6,MP_ARG_OBJ |MP_ARG_REQUIRED }, |
161 | | - {MP_QSTR_data7,MP_ARG_OBJ |MP_ARG_REQUIRED }, |
162 | | - {MP_QSTR_data8,MP_ARG_OBJ |MP_ARG_KW_ONLY, { .u_obj=mp_const_none } }, |
163 | | - {MP_QSTR_data9,MP_ARG_OBJ |MP_ARG_KW_ONLY, { .u_obj=mp_const_none } }, |
164 | | - {MP_QSTR_data10,MP_ARG_OBJ |MP_ARG_KW_ONLY, { .u_obj=mp_const_none } }, |
165 | | - {MP_QSTR_data11,MP_ARG_OBJ |MP_ARG_KW_ONLY, { .u_obj=mp_const_none } }, |
166 | | - {MP_QSTR_data12,MP_ARG_OBJ |MP_ARG_KW_ONLY, { .u_obj=mp_const_none } }, |
167 | | - {MP_QSTR_data13,MP_ARG_OBJ |MP_ARG_KW_ONLY, { .u_obj=mp_const_none } }, |
168 | | - {MP_QSTR_data14,MP_ARG_OBJ |MP_ARG_KW_ONLY, { .u_obj=mp_const_none } }, |
169 | | - {MP_QSTR_data15,MP_ARG_OBJ |MP_ARG_KW_ONLY, { .u_obj=mp_const_none } }, |
| 137 | + {MP_QSTR_data_pins,MP_ARG_OBJ |MP_ARG_REQUIRED }, |
170 | 138 | {MP_QSTR_cs,MP_ARG_OBJ |MP_ARG_KW_ONLY, { .u_obj=mp_const_none } }, |
171 | 139 | {MP_QSTR_freq,MP_ARG_INT |MP_ARG_KW_ONLY, { .u_int=10000000 } }, |
172 | 140 | {MP_QSTR_dc_idle_high,MP_ARG_BOOL |MP_ARG_KW_ONLY, { .u_bool= false } }, |
|
175 | 143 | {MP_QSTR_dc_data_high,MP_ARG_BOOL |MP_ARG_KW_ONLY, { .u_bool= true } }, |
176 | 144 | {MP_QSTR_cs_active_high,MP_ARG_BOOL |MP_ARG_KW_ONLY, { .u_bool= false } }, |
177 | 145 | {MP_QSTR_reverse_color_bits,MP_ARG_BOOL |MP_ARG_KW_ONLY, { .u_bool= false } }, |
178 | | - {MP_QSTR_swap_color_bytes,MP_ARG_BOOL |MP_ARG_KW_ONLY, { .u_bool= false } }, |
179 | 146 | {MP_QSTR_pclk_active_low,MP_ARG_BOOL |MP_ARG_KW_ONLY, { .u_bool= false } }, |
180 | 147 | {MP_QSTR_pclk_idle_low,MP_ARG_BOOL |MP_ARG_KW_ONLY, { .u_bool= false } } |
181 | 148 | }; |
|
219 | 186 | mp_hal_pin_write(self->bus_config.dc_gpio_num,self->panel_io_config.dc_levels.dc_data_level); |
220 | 187 | mp_hal_pin_write(self->bus_config.wr_gpio_num,0); |
221 | 188 |
|
222 | | -self->bus_config.data_gpio_nums[0]= (mp_hal_pin_obj_t)mp_hal_get_pin_obj(args[ARG_data0].u_obj); |
223 | | -self->bus_config.data_gpio_nums[1]= (mp_hal_pin_obj_t)mp_hal_get_pin_obj(args[ARG_data1].u_obj); |
224 | | -self->bus_config.data_gpio_nums[2]= (mp_hal_pin_obj_t)mp_hal_get_pin_obj(args[ARG_data2].u_obj); |
225 | | -self->bus_config.data_gpio_nums[3]= (mp_hal_pin_obj_t)mp_hal_get_pin_obj(args[ARG_data3].u_obj); |
226 | | -self->bus_config.data_gpio_nums[4]= (mp_hal_pin_obj_t)mp_hal_get_pin_obj(args[ARG_data4].u_obj); |
227 | | -self->bus_config.data_gpio_nums[5]= (mp_hal_pin_obj_t)mp_hal_get_pin_obj(args[ARG_data5].u_obj); |
228 | | -self->bus_config.data_gpio_nums[6]= (mp_hal_pin_obj_t)mp_hal_get_pin_obj(args[ARG_data6].u_obj); |
229 | | -self->bus_config.data_gpio_nums[7]= (mp_hal_pin_obj_t)mp_hal_get_pin_obj(args[ARG_data7].u_obj); |
230 | | -if (args[ARG_data8].u_obj==mp_const_none) { |
231 | | -self->bus_config.bus_width=8; |
232 | | - }else { |
233 | | -self->bus_config.data_gpio_nums[8]= (mp_hal_pin_obj_t)mp_hal_get_pin_obj(args[ARG_data8].u_obj); |
234 | | -self->bus_config.data_gpio_nums[9]= (mp_hal_pin_obj_t)mp_hal_get_pin_obj(args[ARG_data9].u_obj); |
235 | | -self->bus_config.data_gpio_nums[10]= (mp_hal_pin_obj_t)mp_hal_get_pin_obj(args[ARG_data10].u_obj); |
236 | | -self->bus_config.data_gpio_nums[11]= (mp_hal_pin_obj_t)mp_hal_get_pin_obj(args[ARG_data11].u_obj); |
237 | | -self->bus_config.data_gpio_nums[12]= (mp_hal_pin_obj_t)mp_hal_get_pin_obj(args[ARG_data12].u_obj); |
238 | | -self->bus_config.data_gpio_nums[13]= (mp_hal_pin_obj_t)mp_hal_get_pin_obj(args[ARG_data13].u_obj); |
239 | | -self->bus_config.data_gpio_nums[14]= (mp_hal_pin_obj_t)mp_hal_get_pin_obj(args[ARG_data14].u_obj); |
240 | | -self->bus_config.data_gpio_nums[15]= (mp_hal_pin_obj_t)mp_hal_get_pin_obj(args[ARG_data15].u_obj); |
241 | | -self->bus_config.bus_width=16; |
| 189 | +mp_obj_tuple_t*data_pins= (mp_obj_tuple_t*)MP_OBJ_TO_PTR(args[ARG_data_pins].u_obj); |
| 190 | + |
| 191 | +for (size_ti=0;i<data_pins->len;i++) { |
| 192 | +self->bus_config.data_gpio_nums[i]= (mp_hal_pin_obj_t)mp_hal_get_pin_obj(data_pins->items[i]); |
242 | 193 | } |
243 | 194 |
|
| 195 | +self->bus_config.bus_width= (size_t)data_pins->len; |
| 196 | +self->lane_count= (uint8_t)self->bus_config.bus_width; |
| 197 | + |
244 | 198 | mp_hal_pin_obj_tpin; |
245 | 199 |
|
246 | 200 | for (uint8_ti=0;i<self->bus_config.bus_width;i++) { |
|
269 | 223 | self->panel_io_handle.rx_param=i80_rx_param; |
270 | 224 | self->panel_io_handle.del=i80_del; |
271 | 225 | self->panel_io_handle.init=i80_init; |
272 | | -self->panel_io_handle.get_lane_count=i80_get_lane_count; |
273 | 226 | #endif/* defined(mp_hal_pin_output) || defined(IDF_VER) */ |
274 | 227 |
|
275 | 228 | returnMP_OBJ_FROM_PTR(self); |
|
437 | 390 | returnLCD_OK; |
438 | 391 | } |
439 | 392 |
|
440 | | - |
441 | | -mp_lcd_err_ti80_get_lane_count(mp_obj_tobj,uint8_t*lane_count) |
442 | | - { |
443 | | -mp_lcd_i80_bus_obj_t*self=MP_OBJ_TO_PTR(obj); |
444 | | -*lane_count= (uint8_t)self->bus_config.bus_width; |
445 | | -returnLCD_OK; |
446 | | - } |
447 | | - |
448 | | - |
449 | 393 | /* transfer functions */ |
450 | 394 | voidwrite_color8(mp_lcd_i80_bus_obj_t*self,void*color,size_tcolor_size) |
451 | 395 | { |
|