forked from openwrt/openwrt
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Add support for kernel 4.9 based on the more upstream comformant partition defintions. Increases compressed kernel size by ~95k compared to 4.4. Signed-off-by: Jonas Gorski <[email protected]>
- Loading branch information
1 parent
a27d59b
commit b0c5e8b
Showing
204 changed files
with
23,683 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,261 @@ | ||
CONFIG_ARCH_BINFMT_ELF_STATE=y | ||
CONFIG_ARCH_CLOCKSOURCE_DATA=y | ||
CONFIG_ARCH_DISCARD_MEMBLOCK=y | ||
CONFIG_ARCH_HAS_ELF_RANDOMIZE=y | ||
# CONFIG_ARCH_HAS_GCOV_PROFILE_ALL is not set | ||
# CONFIG_ARCH_HAS_SG_CHAIN is not set | ||
CONFIG_ARCH_HIBERNATION_POSSIBLE=y | ||
CONFIG_ARCH_MIGHT_HAVE_PC_PARPORT=y | ||
CONFIG_ARCH_MIGHT_HAVE_PC_SERIO=y | ||
CONFIG_ARCH_SUPPORTS_UPROBES=y | ||
CONFIG_ARCH_SUSPEND_POSSIBLE=y | ||
CONFIG_ARCH_USE_BUILTIN_BSWAP=y | ||
CONFIG_ARCH_WANT_IPC_PARSE_VERSION=y | ||
CONFIG_BCM6345_EXT_IRQ=y | ||
CONFIG_BCM6345_PERIPH_IRQ=y | ||
CONFIG_BCM63XX=y | ||
CONFIG_BCM63XX_CPU_3368=y | ||
CONFIG_BCM63XX_CPU_6318=y | ||
CONFIG_BCM63XX_CPU_63268=y | ||
CONFIG_BCM63XX_CPU_6328=y | ||
CONFIG_BCM63XX_CPU_6338=y | ||
CONFIG_BCM63XX_CPU_6345=y | ||
CONFIG_BCM63XX_CPU_6348=y | ||
CONFIG_BCM63XX_CPU_6358=y | ||
CONFIG_BCM63XX_CPU_6362=y | ||
CONFIG_BCM63XX_CPU_6368=y | ||
CONFIG_BCM63XX_EHCI=y | ||
CONFIG_BCM63XX_ENET=y | ||
CONFIG_BCM63XX_OHCI=y | ||
CONFIG_BCM63XX_PHY=y | ||
CONFIG_BCM63XX_WDT=y | ||
CONFIG_BCMA=y | ||
CONFIG_BCMA_BLOCKIO=y | ||
# CONFIG_BCMA_DEBUG is not set | ||
# CONFIG_BCMA_DRIVER_GMAC_CMN is not set | ||
# CONFIG_BCMA_DRIVER_MIPS is not set | ||
CONFIG_BCMA_DRIVER_PCI=y | ||
# CONFIG_BCMA_DRIVER_PCI_HOSTMODE is not set | ||
CONFIG_BCMA_HOST_PCI=y | ||
CONFIG_BCMA_HOST_PCI_POSSIBLE=y | ||
# CONFIG_BCMA_HOST_SOC is not set | ||
CONFIG_BCM_NET_PHYLIB=y | ||
CONFIG_BLK_MQ_PCI=y | ||
CONFIG_BOARD_BCM63XX_DT=y | ||
CONFIG_BOARD_BCM963XX=y | ||
CONFIG_BOARD_LIVEBOX=y | ||
CONFIG_CEVT_R4K=y | ||
CONFIG_CLKDEV_LOOKUP=y | ||
CONFIG_CLONE_BACKWARDS=y | ||
CONFIG_CPU_BIG_ENDIAN=y | ||
CONFIG_CPU_BMIPS=y | ||
CONFIG_CPU_BMIPS32_3300=y | ||
CONFIG_CPU_BMIPS4350=y | ||
CONFIG_CPU_GENERIC_DUMP_TLB=y | ||
CONFIG_CPU_HAS_PREFETCH=y | ||
CONFIG_CPU_HAS_SYNC=y | ||
CONFIG_CPU_MIPS32=y | ||
CONFIG_CPU_NEEDS_NO_SMARTMIPS_OR_MICROMIPS=y | ||
CONFIG_CPU_R4K_CACHE_TLB=y | ||
CONFIG_CPU_R4K_FPU=y | ||
CONFIG_CPU_SUPPORTS_32BIT_KERNEL=y | ||
CONFIG_CPU_SUPPORTS_HIGHMEM=y | ||
CONFIG_CRYPTO_RNG2=y | ||
CONFIG_CRYPTO_WORKQUEUE=y | ||
CONFIG_CSRC_R4K=y | ||
CONFIG_DMA_NONCOHERENT=y | ||
CONFIG_DTC=y | ||
CONFIG_EARLY_PRINTK=y | ||
CONFIG_FIRMWARE_IN_KERNEL=y | ||
CONFIG_FIXED_PHY=y | ||
CONFIG_GENERIC_ATOMIC64=y | ||
CONFIG_GENERIC_CLOCKEVENTS=y | ||
CONFIG_GENERIC_CMOS_UPDATE=y | ||
CONFIG_GENERIC_IO=y | ||
CONFIG_GENERIC_IRQ_CHIP=y | ||
CONFIG_GENERIC_IRQ_SHOW=y | ||
CONFIG_GENERIC_PCI_IOMAP=y | ||
CONFIG_GENERIC_PINCONF=y | ||
CONFIG_GENERIC_SCHED_CLOCK=y | ||
CONFIG_GENERIC_SMP_IDLE_THREAD=y | ||
CONFIG_GENERIC_TIME_VSYSCALL=y | ||
CONFIG_GPIOLIB=y | ||
CONFIG_GPIO_BCM63XX=y | ||
CONFIG_GPIO_GENERIC=y | ||
CONFIG_GPIO_SYSFS=y | ||
CONFIG_HANDLE_DOMAIN_IRQ=y | ||
CONFIG_HAS_DMA=y | ||
CONFIG_HAS_IOMEM=y | ||
CONFIG_HAS_IOPORT_MAP=y | ||
# CONFIG_HAVE_64BIT_ALIGNED_ACCESS is not set | ||
# CONFIG_HAVE_ARCH_BITREVERSE is not set | ||
CONFIG_HAVE_ARCH_JUMP_LABEL=y | ||
CONFIG_HAVE_ARCH_KGDB=y | ||
CONFIG_HAVE_ARCH_SECCOMP_FILTER=y | ||
CONFIG_HAVE_ARCH_TRACEHOOK=y | ||
# CONFIG_HAVE_BOOTMEM_INFO_NODE is not set | ||
CONFIG_HAVE_CBPF_JIT=y | ||
CONFIG_HAVE_CC_STACKPROTECTOR=y | ||
CONFIG_HAVE_CLK=y | ||
CONFIG_HAVE_CONTEXT_TRACKING=y | ||
CONFIG_HAVE_C_RECORDMCOUNT=y | ||
CONFIG_HAVE_DEBUG_KMEMLEAK=y | ||
CONFIG_HAVE_DEBUG_STACKOVERFLOW=y | ||
CONFIG_HAVE_DMA_API_DEBUG=y | ||
CONFIG_HAVE_DMA_CONTIGUOUS=y | ||
CONFIG_HAVE_DYNAMIC_FTRACE=y | ||
CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y | ||
CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y | ||
CONFIG_HAVE_FUNCTION_TRACER=y | ||
CONFIG_HAVE_GENERIC_DMA_COHERENT=y | ||
CONFIG_HAVE_IDE=y | ||
CONFIG_HAVE_IRQ_EXIT_ON_IRQ_STACK=y | ||
CONFIG_HAVE_IRQ_TIME_ACCOUNTING=y | ||
CONFIG_HAVE_LATENCYTOP_SUPPORT=y | ||
CONFIG_HAVE_MEMBLOCK=y | ||
CONFIG_HAVE_MEMBLOCK_NODE_MAP=y | ||
CONFIG_HAVE_MOD_ARCH_SPECIFIC=y | ||
CONFIG_HAVE_NET_DSA=y | ||
CONFIG_HAVE_OPROFILE=y | ||
CONFIG_HAVE_PERF_EVENTS=y | ||
CONFIG_HAVE_REGS_AND_STACK_ACCESS_API=y | ||
CONFIG_HAVE_SYSCALL_TRACEPOINTS=y | ||
CONFIG_HAVE_VIRT_CPU_ACCOUNTING_GEN=y | ||
CONFIG_HW_HAS_PCI=y | ||
CONFIG_HW_RANDOM=y | ||
CONFIG_HW_RANDOM_BCM63XX=y | ||
CONFIG_HZ=250 | ||
# CONFIG_HZ_100 is not set | ||
CONFIG_HZ_250=y | ||
CONFIG_HZ_PERIODIC=y | ||
CONFIG_INITRAMFS_SOURCE="" | ||
CONFIG_IRQCHIP=y | ||
CONFIG_IRQ_DOMAIN=y | ||
CONFIG_IRQ_FORCED_THREADING=y | ||
CONFIG_IRQ_MIPS_CPU=y | ||
CONFIG_IRQ_WORK=y | ||
CONFIG_KEXEC=y | ||
CONFIG_KEXEC_CORE=y | ||
CONFIG_LEDS_BCM6328=y | ||
CONFIG_LEDS_BCM6358=y | ||
CONFIG_LEDS_GPIO=y | ||
CONFIG_LIBFDT=y | ||
CONFIG_MDIO_BOARDINFO=y | ||
CONFIG_MFD_SYSCON=y | ||
CONFIG_MIPS=y | ||
CONFIG_MIPS_ASID_BITS=8 | ||
CONFIG_MIPS_ASID_SHIFT=0 | ||
CONFIG_MIPS_CLOCK_VSYSCALL=y | ||
# CONFIG_MIPS_CMDLINE_DTB_EXTEND is not set | ||
# CONFIG_MIPS_CMDLINE_FROM_BOOTLOADER is not set | ||
CONFIG_MIPS_CMDLINE_FROM_DTB=y | ||
# CONFIG_MIPS_ELF_APPENDED_DTB is not set | ||
# CONFIG_MIPS_HUGE_TLB_SUPPORT is not set | ||
CONFIG_MIPS_L1_CACHE_SHIFT=4 | ||
CONFIG_MIPS_L1_CACHE_SHIFT_4=y | ||
# CONFIG_MIPS_MACHINE is not set | ||
# CONFIG_MIPS_NO_APPENDED_DTB is not set | ||
CONFIG_MIPS_RAW_APPENDED_DTB=y | ||
CONFIG_MODULES_USE_ELF_REL=y | ||
CONFIG_MODULE_FORCE_LOAD=y | ||
CONFIG_MODULE_FORCE_UNLOAD=y | ||
CONFIG_MTD_BCM63XX_PARTS=y | ||
CONFIG_MTD_CFI_ADV_OPTIONS=y | ||
CONFIG_MTD_CFI_BE_BYTE_SWAP=y | ||
# CONFIG_MTD_CFI_GEOMETRY is not set | ||
# CONFIG_MTD_CFI_NOSWAP is not set | ||
CONFIG_MTD_CFI_STAA=y | ||
# CONFIG_MTD_COMPLEX_MAPPINGS is not set | ||
CONFIG_MTD_JEDECPROBE=y | ||
CONFIG_MTD_M25P80=y | ||
CONFIG_MTD_PARSER_IMAGETAG=y | ||
CONFIG_MTD_PHYSMAP=y | ||
CONFIG_MTD_REDBOOT_PARTS=y | ||
CONFIG_MTD_REDBOOT_PARTS_UNALLOCATED=y | ||
CONFIG_MTD_SPI_NOR=y | ||
CONFIG_NEED_DMA_MAP_STATE=y | ||
CONFIG_NEED_PER_CPU_KM=y | ||
CONFIG_NO_GENERIC_PCI_IOPORT_MAP=y | ||
# CONFIG_NO_IOPORT_MAP is not set | ||
CONFIG_OF=y | ||
CONFIG_OF_ADDRESS=y | ||
CONFIG_OF_ADDRESS_PCI=y | ||
CONFIG_OF_EARLY_FLATTREE=y | ||
CONFIG_OF_FLATTREE=y | ||
CONFIG_OF_GPIO=y | ||
CONFIG_OF_IRQ=y | ||
CONFIG_OF_MDIO=y | ||
CONFIG_OF_NET=y | ||
CONFIG_OF_PCI=y | ||
CONFIG_OF_PCI_IRQ=y | ||
CONFIG_PCI=y | ||
# CONFIG_PCIEAER is not set | ||
CONFIG_PCIEPORTBUS=y | ||
CONFIG_PCI_DOMAINS=y | ||
CONFIG_PCI_DRIVERS_LEGACY=y | ||
CONFIG_PERF_USE_VMALLOC=y | ||
CONFIG_PGTABLE_LEVELS=2 | ||
CONFIG_PHYLIB=y | ||
CONFIG_PINCTRL=y | ||
CONFIG_PINCTRL_BCM6318=y | ||
CONFIG_PINCTRL_BCM63268=y | ||
CONFIG_PINCTRL_BCM6328=y | ||
CONFIG_PINCTRL_BCM6348=y | ||
CONFIG_PINCTRL_BCM6358=y | ||
CONFIG_PINCTRL_BCM6362=y | ||
CONFIG_PINCTRL_BCM6368=y | ||
CONFIG_PINCTRL_BCM63XX=y | ||
CONFIG_POSIX_MQUEUE=y | ||
CONFIG_POSIX_MQUEUE_SYSCTL=y | ||
# CONFIG_RCU_STALL_COMMON is not set | ||
CONFIG_REGMAP=y | ||
CONFIG_REGMAP_MMIO=y | ||
CONFIG_RELAY=y | ||
CONFIG_RTL8366_SMI=y | ||
CONFIG_RTL8367_PHY=y | ||
# CONFIG_SCHED_INFO is not set | ||
# CONFIG_SCSI_DMA is not set | ||
# CONFIG_SERIAL_8250 is not set | ||
CONFIG_SERIAL_BCM63XX=y | ||
CONFIG_SERIAL_BCM63XX_CONSOLE=y | ||
CONFIG_SPI=y | ||
CONFIG_SPI_BCM63XX=y | ||
CONFIG_SPI_BCM63XX_HSSPI=y | ||
CONFIG_SPI_MASTER=y | ||
CONFIG_SQUASHFS_EMBEDDED=y | ||
CONFIG_SRCU=y | ||
CONFIG_SSB=y | ||
CONFIG_SSB_B43_PCI_BRIDGE=y | ||
CONFIG_SSB_BLOCKIO=y | ||
# CONFIG_SSB_DRIVER_MIPS is not set | ||
CONFIG_SSB_DRIVER_PCICORE=y | ||
CONFIG_SSB_DRIVER_PCICORE_POSSIBLE=y | ||
CONFIG_SSB_PCIHOST=y | ||
CONFIG_SSB_PCIHOST_POSSIBLE=y | ||
CONFIG_SSB_SPROM=y | ||
CONFIG_SWAP_IO_SPACE=y | ||
CONFIG_SWCONFIG=y | ||
CONFIG_SWCONFIG_B53=y | ||
CONFIG_SWCONFIG_B53_MMAP_DRIVER=y | ||
CONFIG_SWCONFIG_B53_PHY_DRIVER=y | ||
CONFIG_SWCONFIG_B53_PHY_FIXUP=y | ||
CONFIG_SWCONFIG_B53_SPI_DRIVER=y | ||
# CONFIG_SWCONFIG_B53_SRAB_DRIVER is not set | ||
CONFIG_SWPHY=y | ||
CONFIG_SYNC_R4K=y | ||
CONFIG_SYSCTL_EXCEPTION_TRACE=y | ||
CONFIG_SYS_HAS_CPU_BMIPS=y | ||
CONFIG_SYS_HAS_CPU_BMIPS32_3300=y | ||
CONFIG_SYS_HAS_CPU_BMIPS4350=y | ||
CONFIG_SYS_HAS_EARLY_PRINTK=y | ||
CONFIG_SYS_SUPPORTS_32BIT_KERNEL=y | ||
CONFIG_SYS_SUPPORTS_ARBIT_HZ=y | ||
CONFIG_SYS_SUPPORTS_BIG_ENDIAN=y | ||
CONFIG_SYS_SUPPORTS_HOTPLUG_CPU=y | ||
CONFIG_SYS_SUPPORTS_SMP=y | ||
CONFIG_TICK_CPU_ACCOUNTING=y | ||
CONFIG_USB_SUPPORT=y | ||
CONFIG_USE_OF=y | ||
CONFIG_VM_EVENT_COUNTERS=y | ||
CONFIG_WATCHDOG_NOWAYOUT=y | ||
CONFIG_WEAK_ORDERING=y |
30 changes: 30 additions & 0 deletions
30
...rcm63xx/patches-4.9/001-4.11-01-mtd-m25p80-consider-max-message-size-in-m25p80_read.patch
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,30 @@ | ||
From 80a79a889ce5df16c5261ab2f1e8e63b94b78102 Mon Sep 17 00:00:00 2001 | ||
From: Heiner Kallweit <[email protected]> | ||
Date: Fri, 28 Oct 2016 07:58:46 +0200 | ||
Subject: [PATCH 1/8] mtd: m25p80: consider max message size in m25p80_read | ||
|
||
Consider a message size limit when calculating the maximum amount | ||
of data that can be read. | ||
|
||
The message size limit has been introduced with 4.9, so cc it | ||
to stable. | ||
|
||
Signed-off-by: Heiner Kallweit <[email protected]> | ||
Cc: <[email protected]> # 4.9.x | ||
Signed-off-by: Cyrille Pitchen <[email protected]> | ||
--- | ||
drivers/mtd/devices/m25p80.c | 3 ++- | ||
1 file changed, 2 insertions(+), 1 deletion(-) | ||
|
||
--- a/drivers/mtd/devices/m25p80.c | ||
+++ b/drivers/mtd/devices/m25p80.c | ||
@@ -172,7 +172,8 @@ static ssize_t m25p80_read(struct spi_no | ||
|
||
t[1].rx_buf = buf; | ||
t[1].rx_nbits = m25p80_rx_nbits(nor); | ||
- t[1].len = min(len, spi_max_transfer_size(spi)); | ||
+ t[1].len = min3(len, spi_max_transfer_size(spi), | ||
+ spi_max_message_size(spi) - t[0].len); | ||
spi_message_add_tail(&t[1], &m); | ||
|
||
ret = spi_sync(spi, &m); |
42 changes: 42 additions & 0 deletions
42
...cm63xx/patches-4.9/001-4.12-01-spi-bcm63xx-make-spi-subsystem-aware-of-message-size.patch
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,42 @@ | ||
From 3fcc36962c32ad0af2d5904103e2b2b824b6b1aa Mon Sep 17 00:00:00 2001 | ||
From: Jonas Gorski <[email protected]> | ||
Date: Sat, 4 Feb 2017 12:32:59 +0100 | ||
Subject: [PATCH 2/8] spi/bcm63xx: make spi subsystem aware of message size | ||
limits | ||
|
||
The bcm63xx LS SPI controller does not allow manual control of the CS | ||
lines and will toggle it automatically before after sending data, so we | ||
are limited to messages that fit in the FIFO buffer. Since the CS lines | ||
aren't available as GPIOs either, we will need to make slave drivers | ||
aware of this limitation and handle it accordingly. | ||
|
||
Signed-off-by: Jonas Gorski <[email protected]> | ||
--- | ||
drivers/spi/spi-bcm63xx.c | 9 +++++++++ | ||
1 file changed, 9 insertions(+) | ||
|
||
--- a/drivers/spi/spi-bcm63xx.c | ||
+++ b/drivers/spi/spi-bcm63xx.c | ||
@@ -428,6 +428,13 @@ static irqreturn_t bcm63xx_spi_interrupt | ||
return IRQ_HANDLED; | ||
} | ||
|
||
+static size_t bcm63xx_spi_max_length(struct spi_device *spi) | ||
+{ | ||
+ struct bcm63xx_spi *bs = spi_master_get_devdata(spi->master); | ||
+ | ||
+ return bs->fifo_size; | ||
+} | ||
+ | ||
static const unsigned long bcm6348_spi_reg_offsets[] = { | ||
[SPI_CMD] = SPI_6348_CMD, | ||
[SPI_INT_STATUS] = SPI_6348_INT_STATUS, | ||
@@ -541,6 +548,8 @@ static int bcm63xx_spi_probe(struct plat | ||
master->transfer_one_message = bcm63xx_spi_transfer_one; | ||
master->mode_bits = MODEBITS; | ||
master->bits_per_word_mask = SPI_BPW_MASK(8); | ||
+ master->max_transfer_size = bcm63xx_spi_max_length; | ||
+ master->max_message_size = bcm63xx_spi_max_length; | ||
master->auto_runtime_pm = true; | ||
bs->msg_type_shift = bs->reg_offsets[SPI_MSG_TYPE_SHIFT]; | ||
bs->msg_ctl_width = bs->reg_offsets[SPI_MSG_CTL_WIDTH]; |
50 changes: 50 additions & 0 deletions
50
...et/linux/brcm63xx/patches-4.9/001-4.12-02-spi-bcm63xx-document-device-tree-bindings.patch
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,50 @@ | ||
From 0a0c39044332a75eaf4a3c5654079df953b0d839 Mon Sep 17 00:00:00 2001 | ||
From: Jonas Gorski <[email protected]> | ||
Date: Mon, 7 Sep 2015 21:00:38 +0200 | ||
Subject: [PATCH 3/8] spi/bcm63xx: document device tree bindings | ||
|
||
Add documentation for the bindings of the low speed SPI controller found | ||
on most bcm63xx SoCs. | ||
|
||
Signed-off-by: Jonas Gorski <[email protected]> | ||
--- | ||
.../devicetree/bindings/spi/spi-bcm63xx.txt | 33 ++++++++++++++++++++++ | ||
1 file changed, 33 insertions(+) | ||
create mode 100644 Documentation/devicetree/bindings/spi/spi-bcm63xx.txt | ||
|
||
--- /dev/null | ||
+++ b/Documentation/devicetree/bindings/spi/spi-bcm63xx.txt | ||
@@ -0,0 +1,33 @@ | ||
+Binding for Broadcom BCM6348/BCM6358 SPI controller | ||
+ | ||
+Required properties: | ||
+- compatible: must contain one of "brcm,bcm6348-spi", "brcm,bcm6358-spi". | ||
+- reg: Base address and size of the controllers memory area. | ||
+- interrupts: Interrupt for the SPI block. | ||
+- clocks: phandle of the SPI clock. | ||
+- clock-names: has to be "spi". | ||
+- #address-cells: <1>, as required by generic SPI binding. | ||
+- #size-cells: <0>, also as required by generic SPI binding. | ||
+ | ||
+Optional properties: | ||
+- num-cs: some controllers have less than 8 cs signals. Defaults to 8 | ||
+ if absent. | ||
+ | ||
+Child nodes as per the generic SPI binding. | ||
+ | ||
+Example: | ||
+ | ||
+ spi@10000800 { | ||
+ compatible = "brcm,bcm6368-spi", "brcm,bcm6358-spi"; | ||
+ reg = <0x10000800 0x70c>; | ||
+ | ||
+ interrupts = <1>; | ||
+ | ||
+ clocks = <&clkctl 9>; | ||
+ clock-names = "spi"; | ||
+ | ||
+ num-cs = <5>; | ||
+ | ||
+ #address-cells = <1>; | ||
+ #size-cells = <0>; | ||
+ }; |
Oops, something went wrong.