Hi Yangbo, Thank you for the patch! Perhaps something to improve: [auto build test WARNING on staging/staging-testing] [also build test WARNING on v4.17-rc1 next-20180420] [if your patch is applied to the wrong git tree, please drop us a note to help improve the system] url: https://github.com/0day-ci/linux/commits/Yangbo-Lu/staging-fsl-dpaa2-rtc-add-rtc-driver/20180420-190320 reproduce: # apt-get install sparse make ARCH=x86_64 allmodconfig make C=1 CF=-D__CHECK_ENDIAN__ sparse warnings: (new ones prefixed by >>) >> drivers/staging/fsl-dpaa2/rtc/dprtc.c:43:30: sparse: incorrect type in assignment (different base types) @@ expected unsigned int [unsigned] [usertype] dprtc_id @@ got ed int [unsigned] [usertype] dprtc_id @@ drivers/staging/fsl-dpaa2/rtc/dprtc.c:43:30: expected unsigned int [unsigned] [usertype] dprtc_id drivers/staging/fsl-dpaa2/rtc/dprtc.c:43:30: got restricted __le32 [usertype] <noident> >> drivers/staging/fsl-dpaa2/rtc/dprtc.c:155:31: sparse: incorrect type in assignment (different base types) @@ expected unsigned int [unsigned] [usertype] object_id @@ got ed int [unsigned] [usertype] object_id @@ drivers/staging/fsl-dpaa2/rtc/dprtc.c:155:31: expected unsigned int [unsigned] [usertype] object_id drivers/staging/fsl-dpaa2/rtc/dprtc.c:155:31: got restricted __le32 [usertype] <noident> >> drivers/staging/fsl-dpaa2/rtc/dprtc.c:369:26: sparse: incorrect type in assignment (different base types) @@ expected unsigned int [unsigned] [usertype] mask @@ got ed int [unsigned] [usertype] mask @@ drivers/staging/fsl-dpaa2/rtc/dprtc.c:369:26: expected unsigned int [unsigned] [usertype] mask drivers/staging/fsl-dpaa2/rtc/dprtc.c:369:26: got restricted __le32 [usertype] <noident> >> drivers/staging/fsl-dpaa2/rtc/dprtc.c:414:17: sparse: cast to restricted __le32 >> drivers/staging/fsl-dpaa2/rtc/dprtc.c:448:28: sparse: incorrect type in assignment (different base types) @@ expected unsigned int [unsigned] [usertype] status @@ got ed int [unsigned] [usertype] status @@ drivers/staging/fsl-dpaa2/rtc/dprtc.c:448:28: expected unsigned int [unsigned] [usertype] status drivers/staging/fsl-dpaa2/rtc/dprtc.c:448:28: got restricted __le32 [usertype] <noident> drivers/staging/fsl-dpaa2/rtc/dprtc.c:491:28: sparse: incorrect type in assignment (different base types) @@ expected unsigned int [unsigned] [usertype] status @@ got ed int [unsigned] [usertype] status @@ drivers/staging/fsl-dpaa2/rtc/dprtc.c:491:28: expected unsigned int [unsigned] [usertype] status drivers/staging/fsl-dpaa2/rtc/dprtc.c:491:28: got restricted __le32 [usertype] <noident> drivers/staging/fsl-dpaa2/rtc/dprtc.c:528:20: sparse: cast to restricted __le32 >> drivers/staging/fsl-dpaa2/rtc/dprtc.c:557:28: sparse: incorrect type in assignment (different base types) @@ expected unsigned long long [unsigned] [usertype] offset @@ got g long [unsigned] [usertype] offset @@ drivers/staging/fsl-dpaa2/rtc/dprtc.c:557:28: expected unsigned long long [unsigned] [usertype] offset drivers/staging/fsl-dpaa2/rtc/dprtc.c:557:28: got restricted __le64 [usertype] <noident> >> drivers/staging/fsl-dpaa2/rtc/dprtc.c:586:39: sparse: incorrect type in assignment (different base types) @@ expected unsigned int [unsigned] [usertype] freq_compensation @@ got ed int [unsigned] [usertype] freq_compensation @@ drivers/staging/fsl-dpaa2/rtc/dprtc.c:586:39: expected unsigned int [unsigned] [usertype] freq_compensation drivers/staging/fsl-dpaa2/rtc/dprtc.c:586:39: got restricted __le32 [usertype] <noident> drivers/staging/fsl-dpaa2/rtc/dprtc.c:623:30: sparse: cast to restricted __le32 >> drivers/staging/fsl-dpaa2/rtc/dprtc.c:659:17: sparse: cast to restricted __le64 >> drivers/staging/fsl-dpaa2/rtc/dprtc.c:687:26: sparse: incorrect type in assignment (different base types) @@ expected unsigned long long [unsigned] [usertype] time @@ got g long [unsigned] [usertype] time @@ drivers/staging/fsl-dpaa2/rtc/dprtc.c:687:26: expected unsigned long long [unsigned] [usertype] time drivers/staging/fsl-dpaa2/rtc/dprtc.c:687:26: got restricted __le64 [usertype] <noident> drivers/staging/fsl-dpaa2/rtc/dprtc.c:717:26: sparse: incorrect type in assignment (different base types) @@ expected unsigned long long [unsigned] [usertype] time @@ got g long [unsigned] [usertype] time @@ drivers/staging/fsl-dpaa2/rtc/dprtc.c:717:26: expected unsigned long long [unsigned] [usertype] time drivers/staging/fsl-dpaa2/rtc/dprtc.c:717:26: got restricted __le64 [usertype] <noident> >> drivers/staging/fsl-dpaa2/rtc/dprtc.c:750:22: sparse: cast to restricted __le16 drivers/staging/fsl-dpaa2/rtc/dprtc.c:751:22: sparse: cast to restricted __le16 vim +43 drivers/staging/fsl-dpaa2/rtc/dprtc.c 11 12 /** 13 * dprtc_open() - Open a control session for the specified object. 14 * @mc_io: Pointer to MC portal's I/O object 15 * @cmd_flags: Command flags; one or more of 'MC_CMD_FLAG_' 16 * @dprtc_id: DPRTC unique ID 17 * @token: Returned token; use in subsequent API calls 18 * 19 * This function can be used to open a control session for an 20 * already created object; an object may have been declared in 21 * the DPL or by calling the dprtc_create function. 22 * This function returns a unique authentication token, 23 * associated with the specific object ID and the specific MC 24 * portal; this token must be used in all subsequent commands for 25 * this specific object 26 * 27 * Return: '0' on Success; Error code otherwise. 28 */ 29 int dprtc_open(struct fsl_mc_io *mc_io, 30 u32 cmd_flags, 31 int dprtc_id, 32 u16 *token) 33 { 34 struct dprtc_cmd_open *cmd_params; 35 struct fsl_mc_command cmd = { 0 }; 36 int err; 37 38 /* prepare command */ 39 cmd.header = mc_encode_cmd_header(DPRTC_CMDID_OPEN, 40 cmd_flags, 41 0); 42 cmd_params = (struct dprtc_cmd_open *)cmd.params; > 43 cmd_params->dprtc_id = cpu_to_le32(dprtc_id); 44 45 /* send command to mc*/ 46 err = mc_send_command(mc_io, &cmd); 47 if (err) 48 return err; 49 50 /* retrieve response parameters */ 51 *token = mc_cmd_hdr_read_token(&cmd); 52 53 return err; 54 } 55 56 /** 57 * dprtc_close() - Close the control session of the object 58 * @mc_io: Pointer to MC portal's I/O object 59 * @cmd_flags: Command flags; one or more of 'MC_CMD_FLAG_' 60 * @token: Token of DPRTC object 61 * 62 * After this function is called, no further operations are 63 * allowed on the object without opening a new control session. 64 * 65 * Return: '0' on Success; Error code otherwise. 66 */ 67 int dprtc_close(struct fsl_mc_io *mc_io, 68 u32 cmd_flags, 69 u16 token) 70 { 71 struct fsl_mc_command cmd = { 0 }; 72 73 /* prepare command */ 74 cmd.header = mc_encode_cmd_header(DPRTC_CMDID_CLOSE, cmd_flags, 75 token); 76 77 /* send command to mc*/ 78 return mc_send_command(mc_io, &cmd); 79 } 80 81 /** 82 * dprtc_create() - Create the DPRTC object. 83 * @mc_io: Pointer to MC portal's I/O object 84 * @dprc_token: Parent container token; '0' for default container 85 * @cmd_flags: Command flags; one or more of 'MC_CMD_FLAG_' 86 * @cfg: Configuration structure 87 * @obj_id: Returned object id 88 * 89 * Create the DPRTC object, allocate required resources and 90 * perform required initialization. 91 * 92 * The function accepts an authentication token of a parent 93 * container that this object should be assigned to. The token 94 * can be '0' so the object will be assigned to the default container. 95 * The newly created object can be opened with the returned 96 * object id and using the container's associated tokens and MC portals. 97 * 98 * Return: '0' on Success; Error code otherwise. 99 */ 100 int dprtc_create(struct fsl_mc_io *mc_io, 101 u16 dprc_token, 102 u32 cmd_flags, 103 const struct dprtc_cfg *cfg, 104 u32 *obj_id) 105 { 106 struct fsl_mc_command cmd = { 0 }; 107 int err; 108 109 (void)(cfg); /* unused */ 110 111 /* prepare command */ 112 cmd.header = mc_encode_cmd_header(DPRTC_CMDID_CREATE, 113 cmd_flags, 114 dprc_token); 115 116 /* send command to mc*/ 117 err = mc_send_command(mc_io, &cmd); 118 if (err) 119 return err; 120 121 /* retrieve response parameters */ 122 *obj_id = mc_cmd_read_object_id(&cmd); 123 124 return 0; 125 } 126 127 /** 128 * dprtc_destroy() - Destroy the DPRTC object and release all its resources. 129 * @mc_io: Pointer to MC portal's I/O object 130 * @dprc_token: Parent container token; '0' for default container 131 * @cmd_flags: Command flags; one or more of 'MC_CMD_FLAG_' 132 * @object_id: The object id; it must be a valid id within the container that 133 * created this object; 134 * 135 * The function accepts the authentication token of the parent container that 136 * created the object (not the one that currently owns the object). The object 137 * is searched within parent using the provided 'object_id'. 138 * All tokens to the object must be closed before calling destroy. 139 * 140 * Return: '0' on Success; error code otherwise. 141 */ 142 int dprtc_destroy(struct fsl_mc_io *mc_io, 143 u16 dprc_token, 144 u32 cmd_flags, 145 u32 object_id) 146 { 147 struct dprtc_cmd_destroy *cmd_params; 148 struct fsl_mc_command cmd = { 0 }; 149 150 /* prepare command */ 151 cmd.header = mc_encode_cmd_header(DPRTC_CMDID_DESTROY, 152 cmd_flags, 153 dprc_token); 154 cmd_params = (struct dprtc_cmd_destroy *)cmd.params; > 155 cmd_params->object_id = cpu_to_le32(object_id); 156 157 /* send command to mc*/ 158 return mc_send_command(mc_io, &cmd); 159 } 160 --- 0-DAY kernel test infrastructure Open Source Technology Center https://lists.01.org/pipermail/kbuild-all Intel Corporation _______________________________________________ devel mailing list devel@xxxxxxxxxxxxxxxxxxxxxx http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel