tree: https://kernel.googlesource.com/pub/scm/linux/kernel/git/tmlind/linux-omap.git droid4-pending-mdm-v5.3 head: ac8c78ae24b5535576cb398cb6e6b895ce0f918d commit: b0acc1316f8969c3f3463d549ce5031ce87c9b58 [1/15] tty: n_gsm: Add support for serdev drivers config: i386-randconfig-h001-201937 (attached as .config) compiler: gcc-7 (Debian 7.4.0-11) 7.4.0 reproduce: git checkout b0acc1316f8969c3f3463d549ce5031ce87c9b58 # save the attached .config to linux build tree make ARCH=i386 If you fix the issue, kindly add following tag Reported-by: kbuild test robot <lkp@xxxxxxxxx> All error/warnings (new ones prefixed by >>): In file included from <command-line>:0:0: >> include/linux/serdev-gsm.h:29:2: error: unknown type name 'atomic_t' atomic_t asleep; ^~~~~~~~ >> include/linux/serdev-gsm.h:37:40: error: unknown type name 'u8' int (*output)(struct gsm_serdev *gsd, u8 *data, int len); ^~ include/linux/serdev-gsm.h:39:14: error: unknown type name 'u8' const u8 *buf, int len); ^~ >> include/linux/serdev-gsm.h:52:7: error: unknown type name 'size_t' size_t len); ^~~~~~ >> include/linux/serdev-gsm.h:53:1: warning: no semicolon at end of struct or union }; ^ include/linux/serdev-gsm.h: In function 'gsm_serdev_register_device': >> include/linux/serdev-gsm.h:172:10: error: 'ENODEV' undeclared (first use in this function) return -ENODEV; ^~~~~~ include/linux/serdev-gsm.h:172:10: note: each undeclared identifier is reported only once for each function it appears in include/linux/serdev-gsm.h: At top level: >> include/linux/serdev-gsm.h:180:51: warning: 'struct device' declared inside parameter list will not be visible outside of this definition or declaration static inline void *gsm_serdev_get_drvdata(struct device *dev) ^~~~~~ include/linux/serdev-gsm.h: In function 'gsm_serdev_get_drvdata': >> include/linux/serdev-gsm.h:182:9: error: 'NULL' undeclared (first use in this function) return NULL; ^~~~ include/linux/serdev-gsm.h: At top level: include/linux/serdev-gsm.h:186:36: warning: 'struct device' declared inside parameter list will not be visible outside of this definition or declaration void gsm_serdev_set_drvdata(struct device *dev, void *drvdata) ^~~~~~ include/linux/serdev-gsm.h: In function 'gsm_serdev_get_config': include/linux/serdev-gsm.h:193:10: error: 'ENODEV' undeclared (first use in this function) return -ENODEV; ^~~~~~ include/linux/serdev-gsm.h: In function 'gsm_serdev_set_config': include/linux/serdev-gsm.h:199:10: error: 'ENODEV' undeclared (first use in this function) return -ENODEV; ^~~~~~ include/linux/serdev-gsm.h: In function 'gsm_serdev_register_dlci': include/linux/serdev-gsm.h:206:10: error: 'ENODEV' undeclared (first use in this function) return -ENODEV; ^~~~~~ include/linux/serdev-gsm.h: At top level: include/linux/serdev-gsm.h:217:14: error: unknown type name 'u8' const u8 *buf, int len) ^~ include/linux/serdev-gsm.h: In function 'gsm_serdev_write': include/linux/serdev-gsm.h:219:10: error: 'ENODEV' undeclared (first use in this function) return -ENODEV; ^~~~~~ vim +/atomic_t +29 include/linux/serdev-gsm.h 8 9 /** 10 * struct gsm_serdev - serdev-gsm instance 11 * @serdev: serdev instance 12 * @gsm: ts 27.010 n_gsm instance 13 * @asleep: device is in idle state 14 * @drvdata: serdev-gsm consumer driver data 15 * @get_config: get ts 27.010 config 16 * @set_config: set ts 27.010 config 17 * @register_dlci: register ts 27.010 channel 18 * @unregister_dlci: unregister ts 27.010 channel 19 * @output: read data from ts 27.010 channel 20 * @write: write data to a ts 27.010 channel 21 * @kick: indicate more data is ready 22 * 23 * Currently only serdev and output must be initialized, the rest are 24 * are initialized by gsm_serdev_register_dlci(). 25 */ 26 struct gsm_serdev { 27 struct serdev_device *serdev; 28 struct gsm_mux *gsm; > 29 atomic_t asleep; 30 void *drvdata; 31 int (*get_config)(struct gsm_serdev *gsd, struct gsm_config *c); 32 int (*set_config)(struct gsm_serdev *gsd, struct gsm_config *c); 33 int (*register_dlci)(struct gsm_serdev *gsd, 34 struct gsm_serdev_dlci *ops); 35 void (*unregister_dlci)(struct gsm_serdev *gsd, 36 struct gsm_serdev_dlci *ops); > 37 int (*output)(struct gsm_serdev *gsd, u8 *data, int len); 38 int (*write)(struct gsm_serdev *gsd, struct gsm_serdev_dlci *ops, 39 const u8 *buf, int len); 40 void (*kick)(struct gsm_serdev *gsd); 41 }; 42 43 /** 44 * struct gsm_serdev_dlci - serdev-gsm ts 27.010 channel data 45 * @line: ts 27.010 channel, control channel 0 is not available 46 * @receive_buf: function to handle data received for the channel 47 */ 48 struct gsm_serdev_dlci { 49 int line; 50 int (*receive_buf)(struct gsm_serdev_dlci *ops, 51 const unsigned char *buf, > 52 size_t len); > 53 }; 54 55 #ifdef CONFIG_SERIAL_DEV_BUS 56 57 int gsm_serdev_register_device(struct gsm_serdev *gsd); 58 void gsm_serdev_unregister_device(struct gsm_serdev *gsd); 59 60 static inline void *gsm_serdev_get_drvdata(struct device *dev) 61 { 62 struct serdev_device *serdev = to_serdev_device(dev); 63 struct gsm_serdev *gsd = serdev_device_get_drvdata(serdev); 64 65 if (gsd) 66 return gsd->drvdata; 67 68 return NULL; 69 } 70 71 static inline void gsm_serdev_set_drvdata(struct device *dev, void *drvdata) 72 { 73 struct serdev_device *serdev = to_serdev_device(dev); 74 struct gsm_serdev *gsd = serdev_device_get_drvdata(serdev); 75 76 if (gsd) 77 gsd->drvdata = drvdata; 78 } 79 80 /** 81 * gsm_serdev_get_config - read ts 27.010 config 82 * @gsd: serdev-gsm instance 83 * @c: ts 27.010 config data 84 * 85 * See gsm_copy_config_values() for more information. 86 */ 87 static inline 88 int gsm_serdev_get_config(struct gsm_serdev *gsd, struct gsm_config *c) 89 { 90 return gsd->get_config(gsd, c); 91 } 92 93 /** 94 * gsm_serdev_set_config - set ts 27.010 config 95 * @gsd: serdev-gsm instance 96 * @c: ts 27.010 config data 97 * 98 * See gsm_config() for more information. 99 */ 100 static inline 101 int gsm_serdev_set_config(struct gsm_serdev *gsd, struct gsm_config *c) 102 { 103 if (gsd && gsd->set_config) 104 return gsd->set_config(gsd, c); 105 106 return -ENODEV; 107 } 108 109 /** 110 * gsm_serdev_register_dlci - register a ts 27.010 channel 111 * @gsd: serdev-gsm instance 112 * @ops: channel ops 113 */ 114 static inline 115 int gsm_serdev_register_dlci(struct gsm_serdev *gsd, 116 struct gsm_serdev_dlci *ops) 117 { 118 if (gsd && gsd->register_dlci) 119 return gsd->register_dlci(gsd, ops); 120 121 return -ENODEV; 122 } 123 124 /** 125 * gsm_serdev_unregister_dlci - unregister a ts 27.010 channel 126 * @gsd: serdev-gsm instance 127 * @ops: channel ops 128 */ 129 static inline 130 void gsm_serdev_unregister_dlci(struct gsm_serdev *gsd, 131 struct gsm_serdev_dlci *ops) 132 { 133 if (gsd && gsd->unregister_dlci) 134 gsd->unregister_dlci(gsd, ops); 135 } 136 137 /** 138 * gsm_serdev_write - write data to a ts 27.010 channel 139 * @gsd: serdev-gsm instance 140 * @ops: channel ops 141 * @buf: write buffer 142 * @len: buffer length 143 */ 144 static inline 145 int gsm_serdev_write(struct gsm_serdev *gsd, struct gsm_serdev_dlci *ops, 146 const u8 *buf, int len) 147 { 148 if (gsd && gsd->write) 149 return gsd->write(gsd, ops, buf, len); 150 151 return -ENODEV; 152 } 153 154 /** 155 * gsm_serdev_data_kick - indicate more data can be trasmitted 156 * @gsd: serdev-gsm instance 157 * 158 * See gsm_data_kick() for more information. 159 */ 160 static inline 161 void gsm_serdev_data_kick(struct gsm_serdev *gsd) 162 { 163 if (gsd && gsd->kick) 164 gsd->kick(gsd); 165 } 166 167 #else /* CONFIG_SERIAL_DEV_BUS */ 168 169 static inline 170 int gsm_serdev_register_device(struct gsm_serdev *gsd) 171 { > 172 return -ENODEV; 173 } 174 175 static inline 176 void gsm_serdev_unregister_device(struct gsm_serdev *gsd) 177 { 178 } 179 > 180 static inline void *gsm_serdev_get_drvdata(struct device *dev) 181 { > 182 return NULL; 183 } 184 --- 0-DAY kernel test infrastructure Open Source Technology Center https://lists.01.org/pipermail/kbuild-all Intel Corporation
Attachment:
.config.gz
Description: application/gzip