.. | .. |
---|
91 | 91 | struct serdes *serdes = serdes_panel->parent; |
---|
92 | 92 | struct drm_display_mode *mode; |
---|
93 | 93 | u32 bus_format = MEDIA_BUS_FMT_RGB888_1X24; |
---|
94 | | - int ret = 0; |
---|
| 94 | + int ret = 1; |
---|
95 | 95 | |
---|
96 | 96 | connector->display_info.width_mm = serdes_panel->width_mm; //323; //346; |
---|
97 | 97 | connector->display_info.height_mm = serdes_panel->height_mm; //182; //194; |
---|
.. | .. |
---|
108 | 108 | if (serdes->chip_data->panel_ops && serdes->chip_data->panel_ops->get_modes) |
---|
109 | 109 | ret = serdes->chip_data->panel_ops->get_modes(serdes); |
---|
110 | 110 | |
---|
111 | | - SERDES_DBG_MFD("%s: %s node=%s\n", __func__, |
---|
112 | | - serdes->chip_data->name, panel->dev->of_node->name); |
---|
| 111 | + dev_info(serdes->dev, "%s wxh=%dx%d mode clock %u kHz, flags[0x%x]\n" |
---|
| 112 | + " H: %04d %04d %04d %04d\n" |
---|
| 113 | + " V: %04d %04d %04d %04d\n" |
---|
| 114 | + "bus_format: 0x%x\n", |
---|
| 115 | + panel->dev->of_node->name, |
---|
| 116 | + serdes_panel->width_mm, serdes_panel->height_mm, |
---|
| 117 | + mode->clock, mode->flags, |
---|
| 118 | + mode->hdisplay, mode->hsync_start, |
---|
| 119 | + mode->hsync_end, mode->htotal, |
---|
| 120 | + mode->vdisplay, mode->vsync_start, |
---|
| 121 | + mode->vsync_end, mode->vtotal, |
---|
| 122 | + bus_format); |
---|
113 | 123 | |
---|
114 | 124 | return ret; |
---|
115 | 125 | } |
---|
.. | .. |
---|
129 | 139 | struct videomode vm; |
---|
130 | 140 | int ret, len; |
---|
131 | 141 | unsigned int panel_size[2] = {320, 180}; |
---|
| 142 | + unsigned int link_rate_count_ssc[3] = {DP_LINK_BW_2_7, 4, 0}; |
---|
| 143 | + |
---|
| 144 | + //pr_info("%s: node=%s\n", __func__, dev->of_node->name); |
---|
132 | 145 | |
---|
133 | 146 | serdes_panel->width_mm = panel_size[0]; |
---|
134 | 147 | serdes_panel->height_mm = panel_size[1]; |
---|
135 | 148 | |
---|
| 149 | + serdes_panel->link_rate = link_rate_count_ssc[0]; |
---|
| 150 | + serdes_panel->lane_count = link_rate_count_ssc[1]; |
---|
| 151 | + serdes_panel->ssc = link_rate_count_ssc[2]; |
---|
| 152 | + |
---|
136 | 153 | if (of_find_property(dev->of_node, "panel-size", &len)) { |
---|
137 | 154 | len /= sizeof(unsigned int); |
---|
| 155 | + if (len != 2) { |
---|
| 156 | + dev_err(dev, "panel-size length is error, set 2 default\n", |
---|
| 157 | + dev->of_node); |
---|
| 158 | + len = 2; |
---|
| 159 | + } |
---|
138 | 160 | ret = of_property_read_u32_array(dev->of_node, "panel-size", |
---|
139 | 161 | panel_size, len); |
---|
140 | 162 | if (!ret) { |
---|
.. | .. |
---|
143 | 165 | } |
---|
144 | 166 | } |
---|
145 | 167 | |
---|
146 | | - dev_info(dev, "panle size %dx%d\n", |
---|
147 | | - serdes_panel->width_mm, serdes_panel->height_mm); |
---|
| 168 | + if (of_find_property(dev->of_node, "rate-count-ssc", &len)) { |
---|
| 169 | + len /= sizeof(unsigned int); |
---|
| 170 | + if (len != 3) { |
---|
| 171 | + dev_err(dev, "rate-count-ssc length is error, set 3 default\n", |
---|
| 172 | + dev->of_node); |
---|
| 173 | + len = 3; |
---|
| 174 | + } |
---|
| 175 | + ret = of_property_read_u32_array(dev->of_node, "rate-count-ssc", |
---|
| 176 | + link_rate_count_ssc, len); |
---|
| 177 | + if (!ret) { |
---|
| 178 | + serdes_panel->link_rate = link_rate_count_ssc[0]; |
---|
| 179 | + serdes_panel->lane_count = link_rate_count_ssc[1]; |
---|
| 180 | + serdes_panel->ssc = link_rate_count_ssc[2]; |
---|
| 181 | + } |
---|
| 182 | + } |
---|
| 183 | + |
---|
| 184 | + dev_info(dev, "panle size %dx%d, rate=%d, cnt=%d, ssc=%d\n", |
---|
| 185 | + serdes_panel->width_mm, serdes_panel->height_mm, |
---|
| 186 | + serdes_panel->link_rate, serdes_panel->lane_count, serdes_panel->ssc); |
---|
148 | 187 | |
---|
149 | 188 | ret = of_get_display_timing(dev->of_node, "panel-timing", &dt); |
---|
150 | 189 | if (ret < 0) { |
---|
.. | .. |
---|
196 | 235 | } |
---|
197 | 236 | drm_panel_add(&serdes_panel->panel); |
---|
198 | 237 | |
---|
199 | | - dev_info(dev, "serdes %s serdes_panel_probe successful\n", serdes->chip_data->name); |
---|
| 238 | + dev_info(dev, "serdes %s-%s serdes_panel_probe successful\n", |
---|
| 239 | + dev_name(serdes->dev), serdes->chip_data->name); |
---|
200 | 240 | |
---|
201 | 241 | return 0; |
---|
202 | 242 | } |
---|
.. | .. |
---|
211 | 251 | } |
---|
212 | 252 | |
---|
213 | 253 | static const struct of_device_id serdes_panel_of_match[] = { |
---|
214 | | - { .compatible = "rohm,bu18tl82-panel" }, |
---|
215 | 254 | { .compatible = "rohm,bu18rl82-panel" }, |
---|
216 | 255 | { .compatible = "maxim,max96752-panel" }, |
---|
217 | 256 | { .compatible = "maxim,max96772-panel" }, |
---|