From e37331820e94820e7825301f95308ab64aac35ca Mon Sep 17 00:00:00 2001 From: Andrey Gusakov Date: Mon, 5 Mar 2018 17:19:53 +0300 Subject: video: tc358767: register aux i2c bus after validating link Register AUX i2c adapter only if AUX link is functional. This should avoid possible hung during tc358767 probe when no display connected. Signed-off-by: Andrey Gusakov Signed-off-by: Sascha Hauer --- drivers/video/tc358767.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/drivers/video/tc358767.c b/drivers/video/tc358767.c index f9ca06c62b..5ad5cb406e 100644 --- a/drivers/video/tc358767.c +++ b/drivers/video/tc358767.c @@ -1404,6 +1404,10 @@ static int tc_probe(struct device_d *dev) if (ret) goto err; + ret = tc_get_display_props(tc); + if (ret) + goto err; + /* Register DP AUX channel */ tc->adapter.master_xfer = tc_aux_i2c_xfer; tc->adapter.nr = -1; /* any free */ @@ -1416,10 +1420,6 @@ static int tc_probe(struct device_d *dev) goto err; } - ret = tc_get_display_props(tc); - if (ret) - goto err; - /* add vlp */ tc->vpl.node = dev->device_node; tc->vpl.ioctl = tc_ioctl; -- cgit v1.2.3 From cad55edfb5838d53ec1eef38abff7be4b8a6143b Mon Sep 17 00:00:00 2001 From: Sascha Hauer Date: Mon, 19 Mar 2018 08:49:57 +0100 Subject: ARM: AM335x: Fix invalid register access Several DDR3 phy registers are written with the pattern x<<30 | x<<20 | x<<10 | x. The x<<30 doesn't fit into 32bit which causes a compiler warning. Looking at the reference manual only the lower 10bit of the registers have any meaning, so drop the other bogus values. This affects the registers: AM33XX_DATA0_RD_DQS_SLAVE_RATIO_0 AM33XX_DATA0_WR_DQS_SLAVE_RATIO_0 AM33XX_DATA0_WR_DQS_SLAVE_RATIO_1 AM33XX_DATA0_WRLVL_INIT_RATIO_0 AM33XX_DATA0_GATELVL_INIT_RATIO_0 AM33XX_DATA0_GATELVL_INIT_RATIO_1 AM33XX_DATA0_FIFO_WE_SLAVE_RATIO_0 AM33XX_DATA0_WR_DATA_SLAVE_RATIO_0 (AM33XX_DATA0_WR_DQS_SLAVE_RATIO_1 and AM33XX_DATA0_GATELVL_INIT_RATIO_1 do not even exist according to the reference manual, but that's another story.) Signed-off-by: Sascha Hauer --- arch/arm/boards/afi-gf/lowlevel.c | 18 ++++++------------ arch/arm/boards/beaglebone/lowlevel.c | 26 ++++++-------------------- 2 files changed, 12 insertions(+), 32 deletions(-) diff --git a/arch/arm/boards/afi-gf/lowlevel.c b/arch/arm/boards/afi-gf/lowlevel.c index 91b4b68c6d..dfa202dda3 100644 --- a/arch/arm/boards/afi-gf/lowlevel.c +++ b/arch/arm/boards/afi-gf/lowlevel.c @@ -64,33 +64,27 @@ static void board_data_macro_config(int dataMacroNum) if (dataMacroNum == 1) BaseAddrOffset = 0xA4; - __raw_writel(((DDR2_RD_DQS<<30)|(DDR2_RD_DQS<<20) - |(DDR2_RD_DQS<<10)|(DDR2_RD_DQS<<0)), + __raw_writel(DDR2_RD_DQS, (AM33XX_DATA0_RD_DQS_SLAVE_RATIO_0 + BaseAddrOffset)); __raw_writel(DDR2_RD_DQS>>2, (AM33XX_DATA0_RD_DQS_SLAVE_RATIO_1 + BaseAddrOffset)); - __raw_writel(((DDR2_WR_DQS<<30)|(DDR2_WR_DQS<<20) - |(DDR2_WR_DQS<<10)|(DDR2_WR_DQS<<0)), + __raw_writel(DDR2_WR_DQS, (AM33XX_DATA0_WR_DQS_SLAVE_RATIO_0 + BaseAddrOffset)); __raw_writel(DDR2_WR_DQS>>2, (AM33XX_DATA0_WR_DQS_SLAVE_RATIO_1 + BaseAddrOffset)); - __raw_writel(((DDR2_PHY_WRLVL<<30)|(DDR2_PHY_WRLVL<<20) - |(DDR2_PHY_WRLVL<<10)|(DDR2_PHY_WRLVL<<0)), + __raw_writel(DDR2_PHY_WRLVL, (AM33XX_DATA0_WRLVL_INIT_RATIO_0 + BaseAddrOffset)); __raw_writel(DDR2_PHY_WRLVL>>2, (AM33XX_DATA0_WRLVL_INIT_RATIO_1 + BaseAddrOffset)); - __raw_writel(((DDR2_PHY_GATELVL<<30)|(DDR2_PHY_GATELVL<<20) - |(DDR2_PHY_GATELVL<<10)|(DDR2_PHY_GATELVL<<0)), + __raw_writel(DDR2_PHY_GATELVL, (AM33XX_DATA0_GATELVL_INIT_RATIO_0 + BaseAddrOffset)); __raw_writel(DDR2_PHY_GATELVL>>2, (AM33XX_DATA0_GATELVL_INIT_RATIO_1 + BaseAddrOffset)); - __raw_writel(((DDR2_PHY_FIFO_WE<<30)|(DDR2_PHY_FIFO_WE<<20) - |(DDR2_PHY_FIFO_WE<<10)|(DDR2_PHY_FIFO_WE<<0)), + __raw_writel(DDR2_PHY_FIFO_WE, (AM33XX_DATA0_FIFO_WE_SLAVE_RATIO_0 + BaseAddrOffset)); __raw_writel(DDR2_PHY_FIFO_WE>>2, (AM33XX_DATA0_FIFO_WE_SLAVE_RATIO_1 + BaseAddrOffset)); - __raw_writel(((DDR2_PHY_WR_DATA<<30)|(DDR2_PHY_WR_DATA<<20) - |(DDR2_PHY_WR_DATA<<10)|(DDR2_PHY_WR_DATA<<0)), + __raw_writel(DDR2_PHY_WR_DATA, (AM33XX_DATA0_WR_DATA_SLAVE_RATIO_0 + BaseAddrOffset)); __raw_writel(DDR2_PHY_WR_DATA>>2, (AM33XX_DATA0_WR_DATA_SLAVE_RATIO_1 + BaseAddrOffset)); diff --git a/arch/arm/boards/beaglebone/lowlevel.c b/arch/arm/boards/beaglebone/lowlevel.c index a56b4b6240..f2e1690b15 100644 --- a/arch/arm/boards/beaglebone/lowlevel.c +++ b/arch/arm/boards/beaglebone/lowlevel.c @@ -48,26 +48,12 @@ static const struct am33xx_emif_regs ddr2_regs = { }; static const struct am33xx_ddr_data ddr2_data = { - .rd_slave_ratio0 = (DDR2_RD_DQS << 30) | (DDR2_RD_DQS << 20) | - (DDR2_RD_DQS << 10) | (DDR2_RD_DQS << 0), - .wr_dqs_slave_ratio0 = (DDR2_WR_DQS << 30) | (DDR2_WR_DQS << 20) | - (DDR2_WR_DQS << 10) | (DDR2_WR_DQS << 0), - .wrlvl_init_ratio0 = (DDR2_PHY_WRLVL << 30) | - (DDR2_PHY_WRLVL << 20) | - (DDR2_PHY_WRLVL << 10) | - (DDR2_PHY_WRLVL << 0), - .gatelvl_init_ratio0 = (DDR2_PHY_GATELVL << 30) | - (DDR2_PHY_GATELVL << 20) | - (DDR2_PHY_GATELVL << 10) | - (DDR2_PHY_GATELVL << 0), - .fifo_we_slave_ratio0 = (DDR2_PHY_FIFO_WE << 30) | - (DDR2_PHY_FIFO_WE << 20) | - (DDR2_PHY_FIFO_WE << 10) | - (DDR2_PHY_FIFO_WE << 0), - .wr_slave_ratio0 = (DDR2_PHY_WR_DATA << 30) | - (DDR2_PHY_WR_DATA << 20) | - (DDR2_PHY_WR_DATA << 10) | - (DDR2_PHY_WR_DATA << 0), + .rd_slave_ratio0 = DDR2_RD_DQS, + .wr_dqs_slave_ratio0 = DDR2_WR_DQS, + .wrlvl_init_ratio0 = DDR2_PHY_WRLVL, + .gatelvl_init_ratio0 = DDR2_PHY_GATELVL, + .fifo_we_slave_ratio0 = DDR2_PHY_FIFO_WE, + .wr_slave_ratio0 = DDR2_PHY_WR_DATA, .use_rank0_delay = 0x01, .dll_lock_diff0 = 0x0, }; -- cgit v1.2.3 From d84ada844b2fdf99a3b394ded66d9b44f5909f9e Mon Sep 17 00:00:00 2001 From: Lucas Stach Date: Fri, 16 Mar 2018 15:56:58 +0100 Subject: of: demote "no ranges" message to debug level There are valid cases where there is no way to translate a OF node to a MMIO address via ranges, so do the same as the Linux kernel and don't print an error message in that case, but make it available as a debug message. Signed-off-by: Lucas Stach Signed-off-by: Sascha Hauer --- drivers/of/address.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/of/address.c b/drivers/of/address.c index 8018d78bcb..14db080417 100644 --- a/drivers/of/address.c +++ b/drivers/of/address.c @@ -314,7 +314,7 @@ static int of_translate_one(struct device_node *parent, struct of_bus *bus, ranges = of_get_property(parent, rprop, &rlen); #if !defined(CONFIG_PPC) if (ranges == NULL) { - pr_err("OF: no ranges; cannot translate\n"); + pr_debug("OF: no ranges; cannot translate\n"); return 1; } #endif /* !defined(CONFIG_PPC) */ -- cgit v1.2.3 From e96dc23280c43dd6b026ea71bcbaf3353abb4c83 Mon Sep 17 00:00:00 2001 From: Sascha Hauer Date: Mon, 19 Mar 2018 11:29:02 +0100 Subject: of: Pass barebox version to kernel Pass the barebox version to Linux in case somebody is interested in it under Linux. We use put the version under /chosen/barebox-version and it can be read under Linux in /sys/firmware/devicetree/base/chosen/barebox-version. Signed-off-by: Sascha Hauer --- common/Makefile | 2 +- common/oftree.c | 1 + common/version.c | 2 ++ 3 files changed, 4 insertions(+), 1 deletion(-) diff --git a/common/Makefile b/common/Makefile index a9abcd1bc6..4e9681f203 100644 --- a/common/Makefile +++ b/common/Makefile @@ -11,7 +11,7 @@ obj-y += bootsource.o obj-y += restart.o obj-y += poweroff.o obj-$(CONFIG_AUTO_COMPLETE) += complete.o -obj-$(CONFIG_BANNER) += version.o +obj-y += version.o obj-$(CONFIG_BAREBOX_UPDATE) += bbu.o obj-$(CONFIG_BINFMT) += binfmt.o obj-$(CONFIG_BLOCK) += block.o diff --git a/common/oftree.c b/common/oftree.c index 40eb35f188..8a2ede4c60 100644 --- a/common/oftree.c +++ b/common/oftree.c @@ -128,6 +128,7 @@ static int of_fixup_bootargs(struct device_node *root, void *unused) if (!node) return -ENOMEM; + of_property_write_string(node, "barebox-version", release_string); err = of_property_write_string(node, "bootargs", str); diff --git a/common/version.c b/common/version.c index f37cb5527f..8b1fd4dbe7 100644 --- a/common/version.c +++ b/common/version.c @@ -10,6 +10,7 @@ const char release_string[] = "barebox-" UTS_RELEASE; EXPORT_SYMBOL(release_string); +#ifdef CONFIG_BANNER void barebox_banner (void) { printf("\n\n"); @@ -17,3 +18,4 @@ void barebox_banner (void) printf("\n\n"); pr_info("Board: %s\n", barebox_get_model()); } +#endif -- cgit v1.2.3 From 37ebcf9984b0f6fe6282a433f8640894c3b9cdda Mon Sep 17 00:00:00 2001 From: Andrey Smirnov Date: Mon, 26 Mar 2018 06:12:31 -0700 Subject: lib: Port CRC-CCITT functions from Linux kernel Port CRC-CCITT implemenation in order to support porting MFD driver for RAVE SP. Signed-off-by: Andrey Smirnov Signed-off-by: Sascha Hauer --- include/linux/crc-ccitt.h | 23 +++++++++ lib/Kconfig | 8 +++ lib/Makefile | 1 + lib/crc-ccitt.c | 124 ++++++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 156 insertions(+) create mode 100644 include/linux/crc-ccitt.h create mode 100644 lib/crc-ccitt.c diff --git a/include/linux/crc-ccitt.h b/include/linux/crc-ccitt.h new file mode 100644 index 0000000000..72c92c396b --- /dev/null +++ b/include/linux/crc-ccitt.h @@ -0,0 +1,23 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +#ifndef _LINUX_CRC_CCITT_H +#define _LINUX_CRC_CCITT_H + +#include + +extern u16 const crc_ccitt_table[256]; +extern u16 const crc_ccitt_false_table[256]; + +extern u16 crc_ccitt(u16 crc, const u8 *buffer, size_t len); +extern u16 crc_ccitt_false(u16 crc, const u8 *buffer, size_t len); + +static inline u16 crc_ccitt_byte(u16 crc, const u8 c) +{ + return (crc >> 8) ^ crc_ccitt_table[(crc ^ c) & 0xff]; +} + +static inline u16 crc_ccitt_false_byte(u16 crc, const u8 c) +{ + return (crc << 8) ^ crc_ccitt_false_table[(crc >> 8) ^ c]; +} + +#endif /* _LINUX_CRC_CCITT_H */ diff --git a/lib/Kconfig b/lib/Kconfig index 4e9213f3e5..3d06655707 100644 --- a/lib/Kconfig +++ b/lib/Kconfig @@ -110,6 +110,14 @@ config ALLOW_PRNG_FALLBACK available and this option is disabled, cmd_password will fail. Enable it on your own risk. +config CRC_CCITT + bool "CRC-CCITT functions" + help + This option is provided for the case where no in-kernel-tree + modules require CRC-CCITT functions, but a module built outside + the kernel tree does. Such modules that use library CRC-CCITT + functions require M here. + source lib/gui/Kconfig source lib/fonts/Kconfig diff --git a/lib/Makefile b/lib/Makefile index 878c2fbe03..a7498288af 100644 --- a/lib/Makefile +++ b/lib/Makefile @@ -64,3 +64,4 @@ obj-y += list_sort.o obj-y += int_sqrt.o obj-y += parseopt.o obj-y += clz_ctz.o +obj-$(CONFIG_CRC_CCITT) += crc-ccitt.o diff --git a/lib/crc-ccitt.c b/lib/crc-ccitt.c new file mode 100644 index 0000000000..b5a916dd8a --- /dev/null +++ b/lib/crc-ccitt.c @@ -0,0 +1,124 @@ +/* + * linux/lib/crc-ccitt.c + * + * This source code is licensed under the GNU General Public License, + * Version 2. See the file COPYING for more details. + */ +#include +#include +#include + +/* + * This mysterious table is just the CRC of each possible byte. It can be + * computed using the standard bit-at-a-time methods. The polynomial can + * be seen in entry 128, 0x8408. This corresponds to x^0 + x^5 + x^12. + * Add the implicit x^16, and you have the standard CRC-CCITT. + */ +u16 const crc_ccitt_table[256] = { + 0x0000, 0x1189, 0x2312, 0x329b, 0x4624, 0x57ad, 0x6536, 0x74bf, + 0x8c48, 0x9dc1, 0xaf5a, 0xbed3, 0xca6c, 0xdbe5, 0xe97e, 0xf8f7, + 0x1081, 0x0108, 0x3393, 0x221a, 0x56a5, 0x472c, 0x75b7, 0x643e, + 0x9cc9, 0x8d40, 0xbfdb, 0xae52, 0xdaed, 0xcb64, 0xf9ff, 0xe876, + 0x2102, 0x308b, 0x0210, 0x1399, 0x6726, 0x76af, 0x4434, 0x55bd, + 0xad4a, 0xbcc3, 0x8e58, 0x9fd1, 0xeb6e, 0xfae7, 0xc87c, 0xd9f5, + 0x3183, 0x200a, 0x1291, 0x0318, 0x77a7, 0x662e, 0x54b5, 0x453c, + 0xbdcb, 0xac42, 0x9ed9, 0x8f50, 0xfbef, 0xea66, 0xd8fd, 0xc974, + 0x4204, 0x538d, 0x6116, 0x709f, 0x0420, 0x15a9, 0x2732, 0x36bb, + 0xce4c, 0xdfc5, 0xed5e, 0xfcd7, 0x8868, 0x99e1, 0xab7a, 0xbaf3, + 0x5285, 0x430c, 0x7197, 0x601e, 0x14a1, 0x0528, 0x37b3, 0x263a, + 0xdecd, 0xcf44, 0xfddf, 0xec56, 0x98e9, 0x8960, 0xbbfb, 0xaa72, + 0x6306, 0x728f, 0x4014, 0x519d, 0x2522, 0x34ab, 0x0630, 0x17b9, + 0xef4e, 0xfec7, 0xcc5c, 0xddd5, 0xa96a, 0xb8e3, 0x8a78, 0x9bf1, + 0x7387, 0x620e, 0x5095, 0x411c, 0x35a3, 0x242a, 0x16b1, 0x0738, + 0xffcf, 0xee46, 0xdcdd, 0xcd54, 0xb9eb, 0xa862, 0x9af9, 0x8b70, + 0x8408, 0x9581, 0xa71a, 0xb693, 0xc22c, 0xd3a5, 0xe13e, 0xf0b7, + 0x0840, 0x19c9, 0x2b52, 0x3adb, 0x4e64, 0x5fed, 0x6d76, 0x7cff, + 0x9489, 0x8500, 0xb79b, 0xa612, 0xd2ad, 0xc324, 0xf1bf, 0xe036, + 0x18c1, 0x0948, 0x3bd3, 0x2a5a, 0x5ee5, 0x4f6c, 0x7df7, 0x6c7e, + 0xa50a, 0xb483, 0x8618, 0x9791, 0xe32e, 0xf2a7, 0xc03c, 0xd1b5, + 0x2942, 0x38cb, 0x0a50, 0x1bd9, 0x6f66, 0x7eef, 0x4c74, 0x5dfd, + 0xb58b, 0xa402, 0x9699, 0x8710, 0xf3af, 0xe226, 0xd0bd, 0xc134, + 0x39c3, 0x284a, 0x1ad1, 0x0b58, 0x7fe7, 0x6e6e, 0x5cf5, 0x4d7c, + 0xc60c, 0xd785, 0xe51e, 0xf497, 0x8028, 0x91a1, 0xa33a, 0xb2b3, + 0x4a44, 0x5bcd, 0x6956, 0x78df, 0x0c60, 0x1de9, 0x2f72, 0x3efb, + 0xd68d, 0xc704, 0xf59f, 0xe416, 0x90a9, 0x8120, 0xb3bb, 0xa232, + 0x5ac5, 0x4b4c, 0x79d7, 0x685e, 0x1ce1, 0x0d68, 0x3ff3, 0x2e7a, + 0xe70e, 0xf687, 0xc41c, 0xd595, 0xa12a, 0xb0a3, 0x8238, 0x93b1, + 0x6b46, 0x7acf, 0x4854, 0x59dd, 0x2d62, 0x3ceb, 0x0e70, 0x1ff9, + 0xf78f, 0xe606, 0xd49d, 0xc514, 0xb1ab, 0xa022, 0x92b9, 0x8330, + 0x7bc7, 0x6a4e, 0x58d5, 0x495c, 0x3de3, 0x2c6a, 0x1ef1, 0x0f78 +}; +EXPORT_SYMBOL(crc_ccitt_table); + +/* + * Similar table to calculate CRC16 variant known as CRC-CCITT-FALSE + * Reflected bits order, does not augment final value. + */ +u16 const crc_ccitt_false_table[256] = { + 0x0000, 0x1021, 0x2042, 0x3063, 0x4084, 0x50A5, 0x60C6, 0x70E7, + 0x8108, 0x9129, 0xA14A, 0xB16B, 0xC18C, 0xD1AD, 0xE1CE, 0xF1EF, + 0x1231, 0x0210, 0x3273, 0x2252, 0x52B5, 0x4294, 0x72F7, 0x62D6, + 0x9339, 0x8318, 0xB37B, 0xA35A, 0xD3BD, 0xC39C, 0xF3FF, 0xE3DE, + 0x2462, 0x3443, 0x0420, 0x1401, 0x64E6, 0x74C7, 0x44A4, 0x5485, + 0xA56A, 0xB54B, 0x8528, 0x9509, 0xE5EE, 0xF5CF, 0xC5AC, 0xD58D, + 0x3653, 0x2672, 0x1611, 0x0630, 0x76D7, 0x66F6, 0x5695, 0x46B4, + 0xB75B, 0xA77A, 0x9719, 0x8738, 0xF7DF, 0xE7FE, 0xD79D, 0xC7BC, + 0x48C4, 0x58E5, 0x6886, 0x78A7, 0x0840, 0x1861, 0x2802, 0x3823, + 0xC9CC, 0xD9ED, 0xE98E, 0xF9AF, 0x8948, 0x9969, 0xA90A, 0xB92B, + 0x5AF5, 0x4AD4, 0x7AB7, 0x6A96, 0x1A71, 0x0A50, 0x3A33, 0x2A12, + 0xDBFD, 0xCBDC, 0xFBBF, 0xEB9E, 0x9B79, 0x8B58, 0xBB3B, 0xAB1A, + 0x6CA6, 0x7C87, 0x4CE4, 0x5CC5, 0x2C22, 0x3C03, 0x0C60, 0x1C41, + 0xEDAE, 0xFD8F, 0xCDEC, 0xDDCD, 0xAD2A, 0xBD0B, 0x8D68, 0x9D49, + 0x7E97, 0x6EB6, 0x5ED5, 0x4EF4, 0x3E13, 0x2E32, 0x1E51, 0x0E70, + 0xFF9F, 0xEFBE, 0xDFDD, 0xCFFC, 0xBF1B, 0xAF3A, 0x9F59, 0x8F78, + 0x9188, 0x81A9, 0xB1CA, 0xA1EB, 0xD10C, 0xC12D, 0xF14E, 0xE16F, + 0x1080, 0x00A1, 0x30C2, 0x20E3, 0x5004, 0x4025, 0x7046, 0x6067, + 0x83B9, 0x9398, 0xA3FB, 0xB3DA, 0xC33D, 0xD31C, 0xE37F, 0xF35E, + 0x02B1, 0x1290, 0x22F3, 0x32D2, 0x4235, 0x5214, 0x6277, 0x7256, + 0xB5EA, 0xA5CB, 0x95A8, 0x8589, 0xF56E, 0xE54F, 0xD52C, 0xC50D, + 0x34E2, 0x24C3, 0x14A0, 0x0481, 0x7466, 0x6447, 0x5424, 0x4405, + 0xA7DB, 0xB7FA, 0x8799, 0x97B8, 0xE75F, 0xF77E, 0xC71D, 0xD73C, + 0x26D3, 0x36F2, 0x0691, 0x16B0, 0x6657, 0x7676, 0x4615, 0x5634, + 0xD94C, 0xC96D, 0xF90E, 0xE92F, 0x99C8, 0x89E9, 0xB98A, 0xA9AB, + 0x5844, 0x4865, 0x7806, 0x6827, 0x18C0, 0x08E1, 0x3882, 0x28A3, + 0xCB7D, 0xDB5C, 0xEB3F, 0xFB1E, 0x8BF9, 0x9BD8, 0xABBB, 0xBB9A, + 0x4A75, 0x5A54, 0x6A37, 0x7A16, 0x0AF1, 0x1AD0, 0x2AB3, 0x3A92, + 0xFD2E, 0xED0F, 0xDD6C, 0xCD4D, 0xBDAA, 0xAD8B, 0x9DE8, 0x8DC9, + 0x7C26, 0x6C07, 0x5C64, 0x4C45, 0x3CA2, 0x2C83, 0x1CE0, 0x0CC1, + 0xEF1F, 0xFF3E, 0xCF5D, 0xDF7C, 0xAF9B, 0xBFBA, 0x8FD9, 0x9FF8, + 0x6E17, 0x7E36, 0x4E55, 0x5E74, 0x2E93, 0x3EB2, 0x0ED1, 0x1EF0 +}; +EXPORT_SYMBOL(crc_ccitt_false_table); + +/** + * crc_ccitt - recompute the CRC (CRC-CCITT variant) for the data + * buffer + * @crc: previous CRC value + * @buffer: data pointer + * @len: number of bytes in the buffer + */ +u16 crc_ccitt(u16 crc, u8 const *buffer, size_t len) +{ + while (len--) + crc = crc_ccitt_byte(crc, *buffer++); + return crc; +} +EXPORT_SYMBOL(crc_ccitt); + +/** + * crc_ccitt_false - recompute the CRC (CRC-CCITT-FALSE variant) + * for the data buffer + * @crc: previous CRC value + * @buffer: data pointer + * @len: number of bytes in the buffer + */ +u16 crc_ccitt_false(u16 crc, u8 const *buffer, size_t len) +{ + while (len--) + crc = crc_ccitt_false_byte(crc, *buffer++); + return crc; +} +EXPORT_SYMBOL(crc_ccitt_false); + +MODULE_DESCRIPTION("CRC-CCITT calculations"); +MODULE_LICENSE("GPL"); -- cgit v1.2.3 From d4d6813b979df98ca9b321c45449a497d0ee7177 Mon Sep 17 00:00:00 2001 From: Andrey Smirnov Date: Mon, 26 Mar 2018 06:14:45 -0700 Subject: aiodev: Constify 'unit' in 'struct aiodev' The way it is currently used, there's no reason for 'uint' field to be mutable, so constify it in order to allow 'aiodev' drivers to pass sting literals in that field. Signed-off-by: Andrey Smirnov Signed-off-by: Sascha Hauer --- include/aiodev.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/aiodev.h b/include/aiodev.h index 0d4f7a2940..5e38b4fab5 100644 --- a/include/aiodev.h +++ b/include/aiodev.h @@ -23,7 +23,7 @@ struct aiodevice; struct aiochannel { int index; - char *unit; + const char *unit; struct aiodevice *aiodev; int value; -- cgit v1.2.3 From 1c8dc624f53580df32794c6f4a9a3d5030f892c3 Mon Sep 17 00:00:00 2001 From: Sascha Hauer Date: Fri, 6 Apr 2018 15:29:16 +0200 Subject: ARM: socfpga: remove nonexistent Kconfig dependency Signed-off-by: Sascha Hauer --- arch/arm/mach-socfpga/Kconfig | 5 ----- 1 file changed, 5 deletions(-) diff --git a/arch/arm/mach-socfpga/Kconfig b/arch/arm/mach-socfpga/Kconfig index caff566bdc..58e4876f5c 100644 --- a/arch/arm/mach-socfpga/Kconfig +++ b/arch/arm/mach-socfpga/Kconfig @@ -24,27 +24,22 @@ config ARCH_SOCFPGA_ARRIA10 select HAVE_MACH_ARM_HEAD config MACH_SOCFPGA_ALTERA_SOCDK - select HAVE_DEFAULT_ENVIRONMENT_NEW select ARCH_SOCFPGA_CYCLONE5 bool "Altera SoCFPGA Development Kit" config MACH_SOCFPGA_EBV_SOCRATES - select HAVE_DEFAULT_ENVIRONMENT_NEW select ARCH_SOCFPGA_CYCLONE5 bool "EBV Socrates" config MACH_SOCFPGA_REFLEX_ACHILLES - select HAVE_DEFAULT_ENVIRONMENT_NEW select ARCH_SOCFPGA_ARRIA10 bool "Reflex Achilles" config MACH_SOCFPGA_TERASIC_DE0_NANO_SOC - select HAVE_DEFAULT_ENVIRONMENT_NEW select ARCH_SOCFPGA_CYCLONE5 bool "Terasic DE0-NANO-SoC aka Atlas" config MACH_SOCFPGA_TERASIC_SOCKIT - select HAVE_DEFAULT_ENVIRONMENT_NEW select ARCH_SOCFPGA_CYCLONE5 bool "Terasic SoCKit" -- cgit v1.2.3