154e999a3SPrafulla Wadaskar /* 254e999a3SPrafulla Wadaskar * (C) Copyright 2010 354e999a3SPrafulla Wadaskar * Marvell Semiconductor <www.marvell.com> 454e999a3SPrafulla Wadaskar * Written-by: Prafulla Wadaskar <prafulla@marvell.com> 554e999a3SPrafulla Wadaskar * 654e999a3SPrafulla Wadaskar * See file CREDITS for list of people who contributed to this 754e999a3SPrafulla Wadaskar * project. 854e999a3SPrafulla Wadaskar * 954e999a3SPrafulla Wadaskar * This program is free software; you can redistribute it and/or 1054e999a3SPrafulla Wadaskar * modify it under the terms of the GNU General Public License as 1154e999a3SPrafulla Wadaskar * published by the Free Software Foundation; either version 2 of 1254e999a3SPrafulla Wadaskar * the License, or (at your option) any later version. 1354e999a3SPrafulla Wadaskar * 1454e999a3SPrafulla Wadaskar * This program is distributed in the hope that it will be useful, 1554e999a3SPrafulla Wadaskar * but WITHOUT ANY WARRANTY; without even the implied warranty of 1654e999a3SPrafulla Wadaskar * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 1754e999a3SPrafulla Wadaskar * GNU General Public License for more details. 1854e999a3SPrafulla Wadaskar * 1954e999a3SPrafulla Wadaskar * You should have received a copy of the GNU General Public License 2054e999a3SPrafulla Wadaskar * along with this program; if not, write to the Free Software 2154e999a3SPrafulla Wadaskar * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, 2254e999a3SPrafulla Wadaskar * MA 02110-1301 USA 2354e999a3SPrafulla Wadaskar */ 2454e999a3SPrafulla Wadaskar 2554e999a3SPrafulla Wadaskar /* 2654e999a3SPrafulla Wadaskar * This file contains Marvell Board Specific common defincations. 2754e999a3SPrafulla Wadaskar * This file should be included in board config header file. 2854e999a3SPrafulla Wadaskar * 2954e999a3SPrafulla Wadaskar * It supports common definations for Kirkwood platform 3054e999a3SPrafulla Wadaskar * TBD: support for Orion5X platforms 3154e999a3SPrafulla Wadaskar */ 3254e999a3SPrafulla Wadaskar 3354e999a3SPrafulla Wadaskar #ifndef _MV_COMMON_H 3454e999a3SPrafulla Wadaskar #define _MV_COMMON_H 3554e999a3SPrafulla Wadaskar 3654e999a3SPrafulla Wadaskar /* 3754e999a3SPrafulla Wadaskar * High Level Configuration Options (easy to change) 3854e999a3SPrafulla Wadaskar */ 3954e999a3SPrafulla Wadaskar #define CONFIG_MARVELL 1 4054e999a3SPrafulla Wadaskar #define CONFIG_ARM926EJS 1 /* Basic Architecture */ 4154e999a3SPrafulla Wadaskar 42*8e14ed85SPrafulla Wadaskar /* ====> Kirkwood Platform Common Definations */ 4354e999a3SPrafulla Wadaskar #if defined(CONFIG_KIRKWOOD) 4454e999a3SPrafulla Wadaskar #define CONFIG_MD5 /* get_random_hex on krikwood needs MD5 support */ 4554e999a3SPrafulla Wadaskar #define CONFIG_KIRKWOOD_EGIGA_INIT /* Enable GbePort0/1 for kernel */ 4654e999a3SPrafulla Wadaskar #define CONFIG_KIRKWOOD_RGMII_PAD_1V8 /* Set RGMII Pad voltage to 1.8V */ 4754e999a3SPrafulla Wadaskar #define CONFIG_KIRKWOOD_PCIE_INIT /* Enable PCIE Port0 for kernel */ 4854e999a3SPrafulla Wadaskar 4931d80c77SPrafulla Wadaskar /* 5031d80c77SPrafulla Wadaskar * By default kwbimage.cfg from board specific folder is used 5131d80c77SPrafulla Wadaskar * If for some board, different configuration file need to be used, 5231d80c77SPrafulla Wadaskar * CONFIG_SYS_KWD_CONFIG should be defined in board specific header file 5331d80c77SPrafulla Wadaskar */ 5431d80c77SPrafulla Wadaskar #ifndef CONFIG_SYS_KWD_CONFIG 5531d80c77SPrafulla Wadaskar #define CONFIG_SYS_KWD_CONFIG $(SRCTREE)/$(CONFIG_BOARDDIR)/kwbimage.cfg 5631d80c77SPrafulla Wadaskar #endif /* CONFIG_SYS_KWD_CONFIG */ 5731d80c77SPrafulla Wadaskar 58*8e14ed85SPrafulla Wadaskar /* Kirkwood has 2k of Security SRAM, use it for SP */ 59*8e14ed85SPrafulla Wadaskar #define CONFIG_SYS_INIT_SP_ADDR 0xC8012000 60*8e14ed85SPrafulla Wadaskar #define CONFIG_NR_DRAM_BANKS_MAX 2 61*8e14ed85SPrafulla Wadaskar 62*8e14ed85SPrafulla Wadaskar #define CONFIG_I2C_MVTWSI_BASE KW_TWSI_BASE 63*8e14ed85SPrafulla Wadaskar #define MV_UART_CONSOLE_BASE KW_UART0_BASE 64*8e14ed85SPrafulla Wadaskar #define MV_SATA_BASE KW_SATA_BASE 65*8e14ed85SPrafulla Wadaskar #define MV_SATA_PORT0_OFFSET KW_SATA_PORT0_OFFSET 66*8e14ed85SPrafulla Wadaskar #define MV_SATA_PORT1_OFFSET KW_SATA_PORT1_OFFSET 67*8e14ed85SPrafulla Wadaskar 68*8e14ed85SPrafulla Wadaskar /* ====> ARMADA100 Platform Common Definations */ 69*8e14ed85SPrafulla Wadaskar #elif defined (CONFIG_ARMADA100) 70*8e14ed85SPrafulla Wadaskar 71*8e14ed85SPrafulla Wadaskar #define CONFIG_SYS_TCLK (14745600) /* NS16550 clk config */ 72*8e14ed85SPrafulla Wadaskar #define CONFIG_SYS_HZ_CLOCK (3250000) /* Timer Freq. 3.25MHZ */ 73*8e14ed85SPrafulla Wadaskar #define CONFIG_MARVELL_MFP /* Enable mvmfp driver */ 74*8e14ed85SPrafulla Wadaskar #define MV_MFPR_BASE ARMD1_MFPR_BASE 75*8e14ed85SPrafulla Wadaskar #define MV_UART_CONSOLE_BASE ARMD1_UART1_BASE 76*8e14ed85SPrafulla Wadaskar #define CONFIG_SYS_NS16550_IER (1 << 6) /* Bit 6 in UART_IER register 77*8e14ed85SPrafulla Wadaskar represents UART Unit Enable */ 7831d80c77SPrafulla Wadaskar /* 79*8e14ed85SPrafulla Wadaskar * There is no internal RAM in ARMADA100, using DRAM 80*8e14ed85SPrafulla Wadaskar * TBD: dcache to be used for this 81*8e14ed85SPrafulla Wadaskar */ 82*8e14ed85SPrafulla Wadaskar #define CONFIG_SYS_INIT_SP_ADDR (CONFIG_SYS_TEXT_BASE - 0x00200000) 83*8e14ed85SPrafulla Wadaskar #define CONFIG_NR_DRAM_BANKS_MAX 2 84*8e14ed85SPrafulla Wadaskar 85*8e14ed85SPrafulla Wadaskar #else 86*8e14ed85SPrafulla Wadaskar #error "Unsupported SoC Platform..." 87*8e14ed85SPrafulla Wadaskar #endif 88*8e14ed85SPrafulla Wadaskar 89*8e14ed85SPrafulla Wadaskar /* 90*8e14ed85SPrafulla Wadaskar * Custom CONFIG_SYS_TEXT_BASE can be done in <board>.h 9131d80c77SPrafulla Wadaskar */ 9231d80c77SPrafulla Wadaskar #ifndef CONFIG_SYS_TEXT_BASE 9331d80c77SPrafulla Wadaskar #define CONFIG_SYS_TEXT_BASE 0x00600000 9431d80c77SPrafulla Wadaskar #endif /* CONFIG_SYS_TEXT_BASE */ 9531d80c77SPrafulla Wadaskar 960b20ed76SPrafulla Wadaskar /* additions for new ARM relocation support */ 970b20ed76SPrafulla Wadaskar #define CONFIG_SYS_SDRAM_BASE 0x00000000 980b20ed76SPrafulla Wadaskar 9954e999a3SPrafulla Wadaskar /* 10054e999a3SPrafulla Wadaskar * CLKs configurations 10154e999a3SPrafulla Wadaskar */ 10254e999a3SPrafulla Wadaskar #define CONFIG_SYS_HZ 1000 10354e999a3SPrafulla Wadaskar 10454e999a3SPrafulla Wadaskar /* 10554e999a3SPrafulla Wadaskar * NS16550 Configuration 10654e999a3SPrafulla Wadaskar */ 10754e999a3SPrafulla Wadaskar #define CONFIG_SYS_NS16550 10854e999a3SPrafulla Wadaskar #define CONFIG_SYS_NS16550_SERIAL 10954e999a3SPrafulla Wadaskar #define CONFIG_SYS_NS16550_REG_SIZE (-4) 11054e999a3SPrafulla Wadaskar #define CONFIG_SYS_NS16550_CLK CONFIG_SYS_TCLK 111*8e14ed85SPrafulla Wadaskar #define CONFIG_SYS_NS16550_COM1 MV_UART_CONSOLE_BASE 11254e999a3SPrafulla Wadaskar 11354e999a3SPrafulla Wadaskar /* 11454e999a3SPrafulla Wadaskar * Serial Port configuration 11554e999a3SPrafulla Wadaskar * The following definitions let you select what serial you want to use 11654e999a3SPrafulla Wadaskar * for your console driver. 11754e999a3SPrafulla Wadaskar */ 11854e999a3SPrafulla Wadaskar 11954e999a3SPrafulla Wadaskar #define CONFIG_CONS_INDEX 1 /*Console on UART0 */ 12054e999a3SPrafulla Wadaskar #define CONFIG_BAUDRATE 115200 12154e999a3SPrafulla Wadaskar #define CONFIG_SYS_BAUDRATE_TABLE { 9600, 19200, 38400, 57600, \ 12254e999a3SPrafulla Wadaskar 115200,230400, 460800, 921600 } 12354e999a3SPrafulla Wadaskar /* auto boot */ 12454e999a3SPrafulla Wadaskar #define CONFIG_BOOTDELAY 3 /* default enable autoboot */ 12554e999a3SPrafulla Wadaskar 12654e999a3SPrafulla Wadaskar /* 12754e999a3SPrafulla Wadaskar * For booting Linux, the board info and command line data 12854e999a3SPrafulla Wadaskar * have to be in the first 8 MB of memory, since this is 12954e999a3SPrafulla Wadaskar * the maximum mapped by the Linux kernel during initialization. 13054e999a3SPrafulla Wadaskar */ 13154e999a3SPrafulla Wadaskar #define CONFIG_CMDLINE_TAG 1 /* enable passing of ATAGs */ 13254e999a3SPrafulla Wadaskar #define CONFIG_INITRD_TAG 1 /* enable INITRD tag */ 13354e999a3SPrafulla Wadaskar #define CONFIG_SETUP_MEMORY_TAGS 1 /* enable memory tag */ 13454e999a3SPrafulla Wadaskar 13554e999a3SPrafulla Wadaskar #define CONFIG_SYS_PROMPT "Marvell>> " /* Command Prompt */ 13654e999a3SPrafulla Wadaskar #define CONFIG_SYS_CBSIZE 1024 /* Console I/O Buff Size */ 13754e999a3SPrafulla Wadaskar #define CONFIG_SYS_PBSIZE (CONFIG_SYS_CBSIZE \ 13854e999a3SPrafulla Wadaskar +sizeof(CONFIG_SYS_PROMPT) + 16) /* Print Buff */ 13954e999a3SPrafulla Wadaskar 14054e999a3SPrafulla Wadaskar /* 14154e999a3SPrafulla Wadaskar * NAND configuration 14254e999a3SPrafulla Wadaskar */ 14354e999a3SPrafulla Wadaskar #ifdef CONFIG_CMD_NAND 14454e999a3SPrafulla Wadaskar #define CONFIG_NAND_KIRKWOOD 14554e999a3SPrafulla Wadaskar #define CONFIG_SYS_MAX_NAND_DEVICE 1 14654e999a3SPrafulla Wadaskar #define NAND_MAX_CHIPS 1 14754e999a3SPrafulla Wadaskar #define CONFIG_SYS_NAND_BASE 0xD8000000 /* MV_DEFADR_NANDF */ 14854e999a3SPrafulla Wadaskar #define NAND_ALLOW_ERASE_ALL 1 14954e999a3SPrafulla Wadaskar #define CONFIG_SYS_64BIT_VSPRINTF /* needed for nand_util.c */ 15054e999a3SPrafulla Wadaskar #endif 15154e999a3SPrafulla Wadaskar 15254e999a3SPrafulla Wadaskar /* 15354e999a3SPrafulla Wadaskar * SPI Flash configuration 15454e999a3SPrafulla Wadaskar */ 15554e999a3SPrafulla Wadaskar #ifdef CONFIG_CMD_SF 15654e999a3SPrafulla Wadaskar #define CONFIG_SPI_FLASH 1 15754e999a3SPrafulla Wadaskar #define CONFIG_HARD_SPI 1 15854e999a3SPrafulla Wadaskar #define CONFIG_KIRKWOOD_SPI 1 15954e999a3SPrafulla Wadaskar #define CONFIG_SPI_FLASH_MACRONIX 1 16054e999a3SPrafulla Wadaskar #define CONFIG_ENV_SPI_BUS 0 16154e999a3SPrafulla Wadaskar #define CONFIG_ENV_SPI_CS 0 16254e999a3SPrafulla Wadaskar #define CONFIG_ENV_SPI_MAX_HZ 50000000 /*50Mhz */ 16354e999a3SPrafulla Wadaskar #endif 16454e999a3SPrafulla Wadaskar 16554e999a3SPrafulla Wadaskar /* 16654e999a3SPrafulla Wadaskar * Size of malloc() pool 16754e999a3SPrafulla Wadaskar */ 16854e999a3SPrafulla Wadaskar #define CONFIG_SYS_MALLOC_LEN (1024 * 1024) /* 1MiB for malloc() */ 16954e999a3SPrafulla Wadaskar /* size in bytes reserved for initial data */ 17054e999a3SPrafulla Wadaskar 17154e999a3SPrafulla Wadaskar /* 17254e999a3SPrafulla Wadaskar * Other required minimal configurations 17354e999a3SPrafulla Wadaskar */ 17454e999a3SPrafulla Wadaskar #define CONFIG_SYS_LONGHELP 17554e999a3SPrafulla Wadaskar #define CONFIG_AUTO_COMPLETE 17654e999a3SPrafulla Wadaskar #define CONFIG_CMDLINE_EDITING 17754e999a3SPrafulla Wadaskar #define CONFIG_CONSOLE_INFO_QUIET /* some code reduction */ 17854e999a3SPrafulla Wadaskar #define CONFIG_ARCH_CPU_INIT /* call arch_cpu_init() */ 179*8e14ed85SPrafulla Wadaskar #ifndef CONFIG_ARMADA100 /* will be removed latter */ 18054e999a3SPrafulla Wadaskar #define CONFIG_ARCH_MISC_INIT /* call arch_misc_init() */ 181*8e14ed85SPrafulla Wadaskar #endif /* CONFIG_ARMADA100 */ 182754ae3fbSPrafulla Wadaskar #define CONFIG_BOARD_EARLY_INIT_F /* call board_init_f for early inits */ 18354e999a3SPrafulla Wadaskar #define CONFIG_DISPLAY_CPUINFO /* Display cpu info */ 18454e999a3SPrafulla Wadaskar #define CONFIG_STACKSIZE 0x00100000 /* regular stack- 1M */ 18554e999a3SPrafulla Wadaskar #define CONFIG_SYS_LOAD_ADDR 0x00800000 /* default load adr- 8M */ 186*8e14ed85SPrafulla Wadaskar #define CONFIG_SYS_MEMTEST_START 0x00800000 /* 8M */ 187*8e14ed85SPrafulla Wadaskar #define CONFIG_SYS_MEMTEST_END 0x00ffffff /*(_16M -1) */ 18854e999a3SPrafulla Wadaskar #define CONFIG_SYS_RESET_ADDRESS 0xffff0000 /* Rst Vector Adr */ 18954e999a3SPrafulla Wadaskar #define CONFIG_SYS_MAXARGS 16 /* max number of command args */ 19054e999a3SPrafulla Wadaskar 19154e999a3SPrafulla Wadaskar /* 192*8e14ed85SPrafulla Wadaskar * DRAM Banks configuration, Custom config can be done in <board>.h 193*8e14ed85SPrafulla Wadaskar */ 194*8e14ed85SPrafulla Wadaskar #ifndef CONFIG_NR_DRAM_BANKS 195*8e14ed85SPrafulla Wadaskar #define CONFIG_NR_DRAM_BANKS CONFIG_NR_DRAM_BANKS_MAX 196*8e14ed85SPrafulla Wadaskar #else 197*8e14ed85SPrafulla Wadaskar #if (CONFIG_NR_DRAM_BANKS > CONFIG_NR_DRAM_BANKS_MAX) 198*8e14ed85SPrafulla Wadaskar #error CONFIG_NR_DRAM_BANKS Configurated more than available 199*8e14ed85SPrafulla Wadaskar #endif 200*8e14ed85SPrafulla Wadaskar #endif /* CONFIG_NR_DRAM_BANKS */ 201*8e14ed85SPrafulla Wadaskar 202*8e14ed85SPrafulla Wadaskar /* 20354e999a3SPrafulla Wadaskar * Ethernet Driver configuration 20454e999a3SPrafulla Wadaskar */ 20554e999a3SPrafulla Wadaskar #ifdef CONFIG_CMD_NET 20654e999a3SPrafulla Wadaskar #define CONFIG_CMD_MII 20754e999a3SPrafulla Wadaskar #define CONFIG_NETCONSOLE /* include NetConsole support */ 20854e999a3SPrafulla Wadaskar #define CONFIG_NET_MULTI /* specify more that one ports available */ 20954e999a3SPrafulla Wadaskar #define CONFIG_MII /* expose smi ove miiphy interface */ 21054e999a3SPrafulla Wadaskar #define CONFIG_MVGBE /* Enable Marvell Gbe Controller Driver */ 21154e999a3SPrafulla Wadaskar #define CONFIG_SYS_FAULT_ECHO_LINK_DOWN /* detect link using phy */ 21254e999a3SPrafulla Wadaskar #define CONFIG_ENV_OVERWRITE /* ethaddr can be reprogrammed */ 21354e999a3SPrafulla Wadaskar #define CONFIG_RESET_PHY_R /* use reset_phy() to init mv8831116 PHY */ 21454e999a3SPrafulla Wadaskar #endif /* CONFIG_CMD_NET */ 21554e999a3SPrafulla Wadaskar 21654e999a3SPrafulla Wadaskar /* 21754e999a3SPrafulla Wadaskar * USB/EHCI 21854e999a3SPrafulla Wadaskar */ 21954e999a3SPrafulla Wadaskar #ifdef CONFIG_CMD_USB 22054e999a3SPrafulla Wadaskar #define CONFIG_USB_EHCI /* Enable EHCI USB support */ 22154e999a3SPrafulla Wadaskar #define CONFIG_USB_EHCI_KIRKWOOD 22254e999a3SPrafulla Wadaskar #define CONFIG_EHCI_IS_TDI 22354e999a3SPrafulla Wadaskar #define CONFIG_USB_STORAGE 22454e999a3SPrafulla Wadaskar #define CONFIG_DOS_PARTITION 22554e999a3SPrafulla Wadaskar #define CONFIG_ISO_PARTITION 22654e999a3SPrafulla Wadaskar #define CONFIG_SUPPORT_VFAT 22754e999a3SPrafulla Wadaskar #endif /* CONFIG_CMD_USB */ 22854e999a3SPrafulla Wadaskar 22954e999a3SPrafulla Wadaskar /* 23054e999a3SPrafulla Wadaskar * IDE Support on SATA ports 23154e999a3SPrafulla Wadaskar */ 23254e999a3SPrafulla Wadaskar #ifdef CONFIG_CMD_IDE 23354e999a3SPrafulla Wadaskar #define __io 23454e999a3SPrafulla Wadaskar #define CONFIG_CMD_EXT2 23554e999a3SPrafulla Wadaskar #define CONFIG_MVSATA_IDE 23654e999a3SPrafulla Wadaskar #define CONFIG_IDE_PREINIT 23754e999a3SPrafulla Wadaskar #define CONFIG_MVSATA_IDE_USE_PORT1 23854e999a3SPrafulla Wadaskar /* Needs byte-swapping for ATA data register */ 23954e999a3SPrafulla Wadaskar #define CONFIG_IDE_SWAP_IO 24054e999a3SPrafulla Wadaskar /* Data, registers and alternate blocks are at the same offset */ 24154e999a3SPrafulla Wadaskar #define CONFIG_SYS_ATA_DATA_OFFSET (0x0100) 24254e999a3SPrafulla Wadaskar #define CONFIG_SYS_ATA_REG_OFFSET (0x0100) 24354e999a3SPrafulla Wadaskar #define CONFIG_SYS_ATA_ALT_OFFSET (0x0100) 24454e999a3SPrafulla Wadaskar /* Each 8-bit ATA register is aligned to a 4-bytes address */ 24554e999a3SPrafulla Wadaskar #define CONFIG_SYS_ATA_STRIDE 4 24654e999a3SPrafulla Wadaskar /* Controller supports 48-bits LBA addressing */ 24754e999a3SPrafulla Wadaskar #define CONFIG_LBA48 24854e999a3SPrafulla Wadaskar /* CONFIG_CMD_IDE requires some #defines for ATA registers */ 24954e999a3SPrafulla Wadaskar #define CONFIG_SYS_IDE_MAXBUS 2 25054e999a3SPrafulla Wadaskar #define CONFIG_SYS_IDE_MAXDEVICE 2 25154e999a3SPrafulla Wadaskar /* ATA registers base is at SATA controller base */ 25254e999a3SPrafulla Wadaskar #define CONFIG_SYS_ATA_BASE_ADDR MV_SATA_BASE 25354e999a3SPrafulla Wadaskar #endif /* CONFIG_CMD_IDE */ 25454e999a3SPrafulla Wadaskar 25554e999a3SPrafulla Wadaskar /* 25654e999a3SPrafulla Wadaskar * I2C related stuff 25754e999a3SPrafulla Wadaskar */ 25854e999a3SPrafulla Wadaskar #ifdef CONFIG_CMD_I2C 25954e999a3SPrafulla Wadaskar #define CONFIG_I2C_MVTWSI 26054e999a3SPrafulla Wadaskar #define CONFIG_SYS_I2C_SLAVE 0x0 26154e999a3SPrafulla Wadaskar #define CONFIG_SYS_I2C_SPEED 100000 26254e999a3SPrafulla Wadaskar #endif 26354e999a3SPrafulla Wadaskar 26454e999a3SPrafulla Wadaskar /* 26554e999a3SPrafulla Wadaskar * File system 26654e999a3SPrafulla Wadaskar */ 267*8e14ed85SPrafulla Wadaskar #ifndef CONFIG_ARMADA100 /* will be removed latter */ 26854e999a3SPrafulla Wadaskar #define CONFIG_CMD_EXT2 26954e999a3SPrafulla Wadaskar #define CONFIG_CMD_JFFS2 27054e999a3SPrafulla Wadaskar #define CONFIG_CMD_FAT 27154e999a3SPrafulla Wadaskar #define CONFIG_CMD_UBI 27254e999a3SPrafulla Wadaskar #define CONFIG_CMD_UBIFS 27354e999a3SPrafulla Wadaskar #define CONFIG_RBTREE 27454e999a3SPrafulla Wadaskar #define CONFIG_MTD_DEVICE /* needed for mtdparts commands */ 27554e999a3SPrafulla Wadaskar #define CONFIG_MTD_PARTITIONS 27654e999a3SPrafulla Wadaskar #define CONFIG_CMD_MTDPARTS 27754e999a3SPrafulla Wadaskar #define CONFIG_LZO 278*8e14ed85SPrafulla Wadaskar #endif /* CONFIG_ARMADA100 */ 27954e999a3SPrafulla Wadaskar 28054e999a3SPrafulla Wadaskar #endif /* _MV_COMMON_H */ 281