tree:
https://github.com/frank-w/BPI-R2-4.14 5.15-bpi-r2-pro
head: 14a93e4b341569bdb9f0456c3934e62402a82174
commit: 14a93e4b341569bdb9f0456c3934e62402a82174 [90/90] more porting
config: h8300-buildonly-randconfig-r003-20211014 (attached as .config)
compiler: h8300-linux-gcc (GCC) 11.2.0
reproduce (this is a W=1 build):
wget
https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O
~/bin/make.cross
chmod +x ~/bin/make.cross
#
https://github.com/frank-w/BPI-R2-4.14/commit/14a93e4b341569bdb9f0456c393...
git remote add frank-w-bpi-r2-4.14
https://github.com/frank-w/BPI-R2-4.14
git fetch --no-tags frank-w-bpi-r2-4.14 5.15-bpi-r2-pro
git checkout 14a93e4b341569bdb9f0456c3934e62402a82174
# save the attached .config to linux build tree
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-11.2.0 make.cross ARCH=h8300
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp(a)intel.com>
All warnings (new ones prefixed by >>):
In file included from include/linux/device.h:15,
from include/linux/acpi.h:15,
from include/linux/i2c.h:13,
from drivers/gpu/drm/bridge/display-connector.c:7:
drivers/gpu/drm/bridge/display-connector.c: In function
'display_connector_probe':
drivers/gpu/drm/bridge/display-connector.c:275:17: error: implicit declaration of
function 'drm_get_connector_type_name'; did you mean
'drm_get_connector_name'? [-Werror=implicit-function-declaration]
275 | drm_get_connector_type_name(conn->bridge.type),
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~
include/linux/dev_printk.h:129:48: note: in definition of macro 'dev_printk'
129 | _dev_printk(level, dev, fmt, ##__VA_ARGS__); \
| ^~~~~~~~~~~
drivers/gpu/drm/bridge/display-connector.c:273:9: note: in expansion of macro
'dev_dbg'
273 | dev_dbg(&pdev->dev,
| ^~~~~~~
> drivers/gpu/drm/bridge/display-connector.c:274:17: warning:
format '%s' expects argument of type 'char *', but argument 4 has type
'int' [-Wformat=]
274 | "Found %s display
connector '%s' %s DDC bus and %s HPD GPIO (ops 0x%x)\n",
|
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
include/linux/dev_printk.h:129:41: note: in definition of macro 'dev_printk'
129 | _dev_printk(level, dev, fmt, ##__VA_ARGS__); \
| ^~~
include/linux/dev_printk.h:163:45: note: in expansion of macro 'dev_fmt'
163 | dev_printk(KERN_DEBUG, dev, dev_fmt(fmt), ##__VA_ARGS__); \
| ^~~~~~~
drivers/gpu/drm/bridge/display-connector.c:273:9: note: in expansion of macro
'dev_dbg'
273 | dev_dbg(&pdev->dev,
| ^~~~~~~
drivers/gpu/drm/bridge/display-connector.c:274:25: note: format string is defined here
274 | "Found %s display connector '%s' %s DDC bus and %s
HPD GPIO (ops 0x%x)\n",
| ~^
| |
| char *
| %d
cc1: some warnings being treated as errors
vim +274 drivers/gpu/drm/bridge/display-connector.c
0c275c30176b2e Laurent Pinchart 2020-02-26 105
0c275c30176b2e Laurent Pinchart 2020-02-26 106 static int display_connector_probe(struct
platform_device *pdev)
0c275c30176b2e Laurent Pinchart 2020-02-26 107 {
0c275c30176b2e Laurent Pinchart 2020-02-26 108 struct display_connector *conn;
0c275c30176b2e Laurent Pinchart 2020-02-26 109 unsigned int type;
0c275c30176b2e Laurent Pinchart 2020-02-26 110 const char *label;
0c275c30176b2e Laurent Pinchart 2020-02-26 111 int ret;
0c275c30176b2e Laurent Pinchart 2020-02-26 112
0c275c30176b2e Laurent Pinchart 2020-02-26 113 conn = devm_kzalloc(&pdev->dev,
sizeof(*conn), GFP_KERNEL);
0c275c30176b2e Laurent Pinchart 2020-02-26 114 if (!conn)
0c275c30176b2e Laurent Pinchart 2020-02-26 115 return -ENOMEM;
0c275c30176b2e Laurent Pinchart 2020-02-26 116
0c275c30176b2e Laurent Pinchart 2020-02-26 117 platform_set_drvdata(pdev, conn);
0c275c30176b2e Laurent Pinchart 2020-02-26 118
0c275c30176b2e Laurent Pinchart 2020-02-26 119 type =
(uintptr_t)of_device_get_match_data(&pdev->dev);
0c275c30176b2e Laurent Pinchart 2020-02-26 120
0c275c30176b2e Laurent Pinchart 2020-02-26 121 /* Get the exact connector type. */
0c275c30176b2e Laurent Pinchart 2020-02-26 122 switch (type) {
0c275c30176b2e Laurent Pinchart 2020-02-26 123 case DRM_MODE_CONNECTOR_DVII: {
0c275c30176b2e Laurent Pinchart 2020-02-26 124 bool analog, digital;
0c275c30176b2e Laurent Pinchart 2020-02-26 125
0c275c30176b2e Laurent Pinchart 2020-02-26 126 analog =
of_property_read_bool(pdev->dev.of_node, "analog");
0c275c30176b2e Laurent Pinchart 2020-02-26 127 digital =
of_property_read_bool(pdev->dev.of_node, "digital");
0c275c30176b2e Laurent Pinchart 2020-02-26 128 if (analog && !digital) {
0c275c30176b2e Laurent Pinchart 2020-02-26 129 conn->bridge.type =
DRM_MODE_CONNECTOR_DVIA;
0c275c30176b2e Laurent Pinchart 2020-02-26 130 } else if (!analog && digital)
{
0c275c30176b2e Laurent Pinchart 2020-02-26 131 conn->bridge.type =
DRM_MODE_CONNECTOR_DVID;
0c275c30176b2e Laurent Pinchart 2020-02-26 132 } else if (analog && digital)
{
0c275c30176b2e Laurent Pinchart 2020-02-26 133 conn->bridge.type =
DRM_MODE_CONNECTOR_DVII;
0c275c30176b2e Laurent Pinchart 2020-02-26 134 } else {
0c275c30176b2e Laurent Pinchart 2020-02-26 135 dev_err(&pdev->dev, "DVI
connector with no type\n");
0c275c30176b2e Laurent Pinchart 2020-02-26 136 return -EINVAL;
0c275c30176b2e Laurent Pinchart 2020-02-26 137 }
0c275c30176b2e Laurent Pinchart 2020-02-26 138 break;
0c275c30176b2e Laurent Pinchart 2020-02-26 139 }
0c275c30176b2e Laurent Pinchart 2020-02-26 140
0c275c30176b2e Laurent Pinchart 2020-02-26 141 case DRM_MODE_CONNECTOR_HDMIA: {
0c275c30176b2e Laurent Pinchart 2020-02-26 142 const char *hdmi_type;
0c275c30176b2e Laurent Pinchart 2020-02-26 143
0c275c30176b2e Laurent Pinchart 2020-02-26 144 ret =
of_property_read_string(pdev->dev.of_node, "type",
0c275c30176b2e Laurent Pinchart 2020-02-26 145 &hdmi_type);
0c275c30176b2e Laurent Pinchart 2020-02-26 146 if (ret < 0) {
0c275c30176b2e Laurent Pinchart 2020-02-26 147 dev_err(&pdev->dev, "HDMI
connector with no type\n");
0c275c30176b2e Laurent Pinchart 2020-02-26 148 return -EINVAL;
0c275c30176b2e Laurent Pinchart 2020-02-26 149 }
0c275c30176b2e Laurent Pinchart 2020-02-26 150
0c275c30176b2e Laurent Pinchart 2020-02-26 151 if (!strcmp(hdmi_type, "a")
|| !strcmp(hdmi_type, "c") ||
0c275c30176b2e Laurent Pinchart 2020-02-26 152 !strcmp(hdmi_type, "d")
|| !strcmp(hdmi_type, "e")) {
0c275c30176b2e Laurent Pinchart 2020-02-26 153 conn->bridge.type =
DRM_MODE_CONNECTOR_HDMIA;
0c275c30176b2e Laurent Pinchart 2020-02-26 154 } else if (!strcmp(hdmi_type,
"b")) {
0c275c30176b2e Laurent Pinchart 2020-02-26 155 conn->bridge.type =
DRM_MODE_CONNECTOR_HDMIB;
0c275c30176b2e Laurent Pinchart 2020-02-26 156 } else {
0c275c30176b2e Laurent Pinchart 2020-02-26 157 dev_err(&pdev->dev,
0c275c30176b2e Laurent Pinchart 2020-02-26 158 "Unsupported HDMI connector type
'%s'\n",
0c275c30176b2e Laurent Pinchart 2020-02-26 159 hdmi_type);
0c275c30176b2e Laurent Pinchart 2020-02-26 160 return -EINVAL;
0c275c30176b2e Laurent Pinchart 2020-02-26 161 }
0c275c30176b2e Laurent Pinchart 2020-02-26 162
0c275c30176b2e Laurent Pinchart 2020-02-26 163 break;
0c275c30176b2e Laurent Pinchart 2020-02-26 164 }
0c275c30176b2e Laurent Pinchart 2020-02-26 165
0c275c30176b2e Laurent Pinchart 2020-02-26 166 default:
0c275c30176b2e Laurent Pinchart 2020-02-26 167 conn->bridge.type = type;
0c275c30176b2e Laurent Pinchart 2020-02-26 168 break;
0c275c30176b2e Laurent Pinchart 2020-02-26 169 }
0c275c30176b2e Laurent Pinchart 2020-02-26 170
0c275c30176b2e Laurent Pinchart 2020-02-26 171 /* All the supported connector types
support interlaced modes. */
0c275c30176b2e Laurent Pinchart 2020-02-26 172 conn->bridge.interlace_allowed =
true;
0c275c30176b2e Laurent Pinchart 2020-02-26 173
0c275c30176b2e Laurent Pinchart 2020-02-26 174 /* Get the optional connector label. */
0c275c30176b2e Laurent Pinchart 2020-02-26 175
of_property_read_string(pdev->dev.of_node, "label", &label);
0c275c30176b2e Laurent Pinchart 2020-02-26 176
0c275c30176b2e Laurent Pinchart 2020-02-26 177 /*
2e2bf3a5584de2 Tomi Valkeinen 2020-11-30 178 * Get the HPD GPIO for DVI, HDMI and DP
connectors. If the GPIO can provide
0c275c30176b2e Laurent Pinchart 2020-02-26 179 * edge interrupts, register an
interrupt handler.
0c275c30176b2e Laurent Pinchart 2020-02-26 180 */
0c275c30176b2e Laurent Pinchart 2020-02-26 181 if (type == DRM_MODE_CONNECTOR_DVII ||
2e2bf3a5584de2 Tomi Valkeinen 2020-11-30 182 type == DRM_MODE_CONNECTOR_HDMIA ||
2e2bf3a5584de2 Tomi Valkeinen 2020-11-30 183 type ==
DRM_MODE_CONNECTOR_DisplayPort) {
0c275c30176b2e Laurent Pinchart 2020-02-26 184 conn->hpd_gpio =
devm_gpiod_get_optional(&pdev->dev, "hpd",
0c275c30176b2e Laurent Pinchart 2020-02-26 185 GPIOD_IN);
0c275c30176b2e Laurent Pinchart 2020-02-26 186 if (IS_ERR(conn->hpd_gpio)) {
0c275c30176b2e Laurent Pinchart 2020-02-26 187 if (PTR_ERR(conn->hpd_gpio) !=
-EPROBE_DEFER)
0c275c30176b2e Laurent Pinchart 2020-02-26 188 dev_err(&pdev->dev,
0c275c30176b2e Laurent Pinchart 2020-02-26 189 "Unable to retrieve HPD
GPIO\n");
0c275c30176b2e Laurent Pinchart 2020-02-26 190 return PTR_ERR(conn->hpd_gpio);
0c275c30176b2e Laurent Pinchart 2020-02-26 191 }
0c275c30176b2e Laurent Pinchart 2020-02-26 192
0c275c30176b2e Laurent Pinchart 2020-02-26 193 conn->hpd_irq =
gpiod_to_irq(conn->hpd_gpio);
0c275c30176b2e Laurent Pinchart 2020-02-26 194 } else {
0c275c30176b2e Laurent Pinchart 2020-02-26 195 conn->hpd_irq = -EINVAL;
0c275c30176b2e Laurent Pinchart 2020-02-26 196 }
0c275c30176b2e Laurent Pinchart 2020-02-26 197
0c275c30176b2e Laurent Pinchart 2020-02-26 198 if (conn->hpd_irq >= 0) {
0c275c30176b2e Laurent Pinchart 2020-02-26 199 ret =
devm_request_threaded_irq(&pdev->dev, conn->hpd_irq,
0c275c30176b2e Laurent Pinchart 2020-02-26 200 NULL, display_connector_hpd_irq,
0c275c30176b2e Laurent Pinchart 2020-02-26 201 IRQF_TRIGGER_RISING |
0c275c30176b2e Laurent Pinchart 2020-02-26 202 IRQF_TRIGGER_FALLING |
0c275c30176b2e Laurent Pinchart 2020-02-26 203 IRQF_ONESHOT,
0c275c30176b2e Laurent Pinchart 2020-02-26 204 "HPD", conn);
0c275c30176b2e Laurent Pinchart 2020-02-26 205 if (ret) {
0c275c30176b2e Laurent Pinchart 2020-02-26 206 dev_info(&pdev->dev,
0c275c30176b2e Laurent Pinchart 2020-02-26 207 "Failed to request HPD edge
interrupt, falling back to polling\n");
0c275c30176b2e Laurent Pinchart 2020-02-26 208 conn->hpd_irq = -EINVAL;
0c275c30176b2e Laurent Pinchart 2020-02-26 209 }
0c275c30176b2e Laurent Pinchart 2020-02-26 210 }
0c275c30176b2e Laurent Pinchart 2020-02-26 211
0c275c30176b2e Laurent Pinchart 2020-02-26 212 /* Retrieve the DDC I2C adapter for DVI,
HDMI and VGA connectors. */
0c275c30176b2e Laurent Pinchart 2020-02-26 213 if (type == DRM_MODE_CONNECTOR_DVII ||
0c275c30176b2e Laurent Pinchart 2020-02-26 214 type == DRM_MODE_CONNECTOR_HDMIA ||
0c275c30176b2e Laurent Pinchart 2020-02-26 215 type == DRM_MODE_CONNECTOR_VGA) {
0c275c30176b2e Laurent Pinchart 2020-02-26 216 struct device_node *phandle;
0c275c30176b2e Laurent Pinchart 2020-02-26 217
0c275c30176b2e Laurent Pinchart 2020-02-26 218 phandle =
of_parse_phandle(pdev->dev.of_node, "ddc-i2c-bus", 0);
0c275c30176b2e Laurent Pinchart 2020-02-26 219 if (phandle) {
0c275c30176b2e Laurent Pinchart 2020-02-26 220 conn->bridge.ddc =
of_get_i2c_adapter_by_node(phandle);
0c275c30176b2e Laurent Pinchart 2020-02-26 221 of_node_put(phandle);
0c275c30176b2e Laurent Pinchart 2020-02-26 222 if (!conn->bridge.ddc)
0c275c30176b2e Laurent Pinchart 2020-02-26 223 return -EPROBE_DEFER;
0c275c30176b2e Laurent Pinchart 2020-02-26 224 } else {
0c275c30176b2e Laurent Pinchart 2020-02-26 225 dev_dbg(&pdev->dev,
0c275c30176b2e Laurent Pinchart 2020-02-26 226 "No I2C bus specified, disabling
EDID readout\n");
0c275c30176b2e Laurent Pinchart 2020-02-26 227 }
0c275c30176b2e Laurent Pinchart 2020-02-26 228 }
0c275c30176b2e Laurent Pinchart 2020-02-26 229
2e2bf3a5584de2 Tomi Valkeinen 2020-11-30 230 /* Get the DP PWR for DP connector. */
2e2bf3a5584de2 Tomi Valkeinen 2020-11-30 231 if (type ==
DRM_MODE_CONNECTOR_DisplayPort) {
2e2bf3a5584de2 Tomi Valkeinen 2020-11-30 232 int ret;
2e2bf3a5584de2 Tomi Valkeinen 2020-11-30 233
2e2bf3a5584de2 Tomi Valkeinen 2020-11-30 234 conn->dp_pwr =
devm_regulator_get_optional(&pdev->dev, "dp-pwr");
2e2bf3a5584de2 Tomi Valkeinen 2020-11-30 235
2e2bf3a5584de2 Tomi Valkeinen 2020-11-30 236 if (IS_ERR(conn->dp_pwr)) {
2e2bf3a5584de2 Tomi Valkeinen 2020-11-30 237 ret = PTR_ERR(conn->dp_pwr);
2e2bf3a5584de2 Tomi Valkeinen 2020-11-30 238
2e2bf3a5584de2 Tomi Valkeinen 2020-11-30 239 switch (ret) {
2e2bf3a5584de2 Tomi Valkeinen 2020-11-30 240 case -ENODEV:
2e2bf3a5584de2 Tomi Valkeinen 2020-11-30 241 conn->dp_pwr = NULL;
2e2bf3a5584de2 Tomi Valkeinen 2020-11-30 242 break;
2e2bf3a5584de2 Tomi Valkeinen 2020-11-30 243
2e2bf3a5584de2 Tomi Valkeinen 2020-11-30 244 case -EPROBE_DEFER:
2e2bf3a5584de2 Tomi Valkeinen 2020-11-30 245 return -EPROBE_DEFER;
2e2bf3a5584de2 Tomi Valkeinen 2020-11-30 246
2e2bf3a5584de2 Tomi Valkeinen 2020-11-30 247 default:
2e2bf3a5584de2 Tomi Valkeinen 2020-11-30 248 dev_err(&pdev->dev,
"failed to get DP PWR regulator: %d\n", ret);
2e2bf3a5584de2 Tomi Valkeinen 2020-11-30 249 return ret;
2e2bf3a5584de2 Tomi Valkeinen 2020-11-30 250 }
2e2bf3a5584de2 Tomi Valkeinen 2020-11-30 251 }
2e2bf3a5584de2 Tomi Valkeinen 2020-11-30 252
2e2bf3a5584de2 Tomi Valkeinen 2020-11-30 253 if (conn->dp_pwr) {
2e2bf3a5584de2 Tomi Valkeinen 2020-11-30 254 ret =
regulator_enable(conn->dp_pwr);
2e2bf3a5584de2 Tomi Valkeinen 2020-11-30 255 if (ret) {
2e2bf3a5584de2 Tomi Valkeinen 2020-11-30 256 dev_err(&pdev->dev,
"failed to enable DP PWR regulator: %d\n", ret);
2e2bf3a5584de2 Tomi Valkeinen 2020-11-30 257 return ret;
2e2bf3a5584de2 Tomi Valkeinen 2020-11-30 258 }
2e2bf3a5584de2 Tomi Valkeinen 2020-11-30 259 }
2e2bf3a5584de2 Tomi Valkeinen 2020-11-30 260 }
2e2bf3a5584de2 Tomi Valkeinen 2020-11-30 261
0c275c30176b2e Laurent Pinchart 2020-02-26 262 conn->bridge.funcs =
&display_connector_bridge_funcs;
0c275c30176b2e Laurent Pinchart 2020-02-26 263 conn->bridge.of_node =
pdev->dev.of_node;
0c275c30176b2e Laurent Pinchart 2020-02-26 264
0c275c30176b2e Laurent Pinchart 2020-02-26 265 if (conn->bridge.ddc)
0c275c30176b2e Laurent Pinchart 2020-02-26 266 conn->bridge.ops |=
DRM_BRIDGE_OP_EDID
0c275c30176b2e Laurent Pinchart 2020-02-26 267 | DRM_BRIDGE_OP_DETECT;
0c275c30176b2e Laurent Pinchart 2020-02-26 268 if (conn->hpd_gpio)
0c275c30176b2e Laurent Pinchart 2020-02-26 269 conn->bridge.ops |=
DRM_BRIDGE_OP_DETECT;
0c275c30176b2e Laurent Pinchart 2020-02-26 270 if (conn->hpd_irq >= 0)
0c275c30176b2e Laurent Pinchart 2020-02-26 271 conn->bridge.ops |=
DRM_BRIDGE_OP_HPD;
0c275c30176b2e Laurent Pinchart 2020-02-26 272
0c275c30176b2e Laurent Pinchart 2020-02-26 273 dev_dbg(&pdev->dev,
0c275c30176b2e Laurent Pinchart 2020-02-26 @274 "Found %s display connector
'%s' %s DDC bus and %s HPD GPIO (ops 0x%x)\n",
0c275c30176b2e Laurent Pinchart 2020-02-26 @275
drm_get_connector_type_name(conn->bridge.type),
0c275c30176b2e Laurent Pinchart 2020-02-26 276 label ? label :
"<unlabelled>",
0c275c30176b2e Laurent Pinchart 2020-02-26 277 conn->bridge.ddc ? "with"
: "without",
0c275c30176b2e Laurent Pinchart 2020-02-26 278 conn->hpd_gpio ? "with" :
"without",
0c275c30176b2e Laurent Pinchart 2020-02-26 279 conn->bridge.ops);
0c275c30176b2e Laurent Pinchart 2020-02-26 280
0c275c30176b2e Laurent Pinchart 2020-02-26 281 drm_bridge_add(&conn->bridge);
0c275c30176b2e Laurent Pinchart 2020-02-26 282
0c275c30176b2e Laurent Pinchart 2020-02-26 283 return 0;
0c275c30176b2e Laurent Pinchart 2020-02-26 284 }
0c275c30176b2e Laurent Pinchart 2020-02-26 285
:::::: The code at line 274 was first introduced by commit
:::::: 0c275c30176b2e7871c6ac5fb0ed548f81e0fa27 drm/bridge: Add bridge driver for display
connectors
:::::: TO: Laurent Pinchart <laurent.pinchart(a)ideasonboard.com>
:::::: CC: Tomi Valkeinen <tomi.valkeinen(a)ti.com>
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org