···11+CONFIG_EXPERIMENTAL=y22+CONFIG_SYSVIPC=y33+CONFIG_IKCONFIG=y44+CONFIG_IKCONFIG_PROC=y55+CONFIG_LOG_BUF_SHIFT=1466+CONFIG_BLK_DEV_INITRD=y77+CONFIG_EXPERT=y88+# CONFIG_ELF_CORE is not set99+# CONFIG_FUTEX is not set1010+# CONFIG_SIGNALFD is not set1111+# CONFIG_TIMERFD is not set1212+# CONFIG_EVENTFD is not set1313+# CONFIG_AIO is not set1414+CONFIG_SLAB=y1515+CONFIG_MMAP_ALLOW_UNINITIALIZED=y1616+CONFIG_MODULES=y1717+CONFIG_MODULE_UNLOAD=y1818+# CONFIG_LBDAF is not set1919+# CONFIG_BLK_DEV_BSG is not set2020+# CONFIG_IOSCHED_DEADLINE is not set2121+# CONFIG_IOSCHED_CFQ is not set2222+CONFIG_PREEMPT_VOLUNTARY=y2323+CONFIG_BF609=y2424+CONFIG_PINT1_ASSIGN=0x010100002525+CONFIG_PINT2_ASSIGN=0x070001012626+CONFIG_PINT3_ASSIGN=0x020203032727+CONFIG_HIGH_RES_TIMERS=y2828+CONFIG_IP_CHECKSUM_L1=y2929+CONFIG_SYSCALL_TAB_L1=y3030+CONFIG_CPLB_SWITCH_TAB_L1=y3131+# CONFIG_APP_STACK_L1 is not set3232+# CONFIG_BFIN_INS_LOWOVERHEAD is not set3333+CONFIG_NOMMU_INITIAL_TRIM_EXCESS=03434+CONFIG_BINFMT_FLAT=y3535+CONFIG_BINFMT_ZFLAT=y3636+# CONFIG_SUSPEND is not set3737+CONFIG_CPU_FREQ=y3838+CONFIG_CPU_FREQ_GOV_POWERSAVE=y3939+CONFIG_CPU_FREQ_GOV_ONDEMAND=y4040+CONFIG_NET=y4141+CONFIG_PACKET=y4242+CONFIG_UNIX=y4343+CONFIG_INET=y4444+CONFIG_IP_PNP=y4545+CONFIG_IP_PNP_DHCP=y4646+CONFIG_IP_PNP_BOOTP=y4747+CONFIG_IP_PNP_RARP=y4848+# CONFIG_IPV6 is not set4949+CONFIG_NETFILTER=y5050+CONFIG_CAN=y5151+CONFIG_CAN_BFIN=y5252+CONFIG_IRDA=y5353+CONFIG_IRTTY_SIR=y5454+# CONFIG_WIRELESS is not set5555+CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"5656+CONFIG_FW_LOADER=m5757+CONFIG_MTD=y5858+CONFIG_MTD_CMDLINE_PARTS=y5959+CONFIG_MTD_CHAR=y6060+CONFIG_MTD_CFI=y6161+CONFIG_MTD_CFI_INTELEXT=y6262+CONFIG_MTD_CFI_STAA=y6363+CONFIG_MTD_COMPLEX_MAPPINGS=y6464+CONFIG_MTD_BFIN_BF60x=y6565+CONFIG_MTD_M25P80=y6666+CONFIG_MTD_UBI=m6767+CONFIG_SCSI=y6868+CONFIG_BLK_DEV_SD=y6969+CONFIG_NETDEVICES=y7070+# CONFIG_NET_VENDOR_BROADCOM is not set7171+# CONFIG_NET_VENDOR_CHELSIO is not set7272+# CONFIG_NET_VENDOR_INTEL is not set7373+# CONFIG_NET_VENDOR_MARVELL is not set7474+# CONFIG_NET_VENDOR_MICREL is not set7575+# CONFIG_NET_VENDOR_MICROCHIP is not set7676+# CONFIG_NET_VENDOR_NATSEMI is not set7777+# CONFIG_NET_VENDOR_SEEQ is not set7878+# CONFIG_NET_VENDOR_SMSC is not set7979+CONFIG_STMMAC_ETH=y8080+CONFIG_STMMAC_IEEE1588=y8181+# CONFIG_WLAN is not set8282+# CONFIG_INPUT_MOUSEDEV is not set8383+CONFIG_INPUT_EVDEV=y8484+# CONFIG_INPUT_KEYBOARD is not set8585+# CONFIG_INPUT_MOUSE is not set8686+CONFIG_INPUT_MISC=y8787+CONFIG_INPUT_BFIN_ROTARY=y8888+# CONFIG_SERIO is not set8989+# CONFIG_LEGACY_PTYS is not set9090+CONFIG_BFIN_SIMPLE_TIMER=m9191+CONFIG_BFIN_LINKPORT=y9292+# CONFIG_DEVKMEM is not set9393+CONFIG_SERIAL_BFIN=y9494+CONFIG_SERIAL_BFIN_CONSOLE=y9595+CONFIG_SERIAL_BFIN_UART0=y9696+# CONFIG_HW_RANDOM is not set9797+CONFIG_I2C=y9898+CONFIG_I2C_CHARDEV=y9999+CONFIG_I2C_BLACKFIN_TWI=y100100+CONFIG_I2C_BLACKFIN_TWI_CLK_KHZ=100101101+CONFIG_SPI=y102102+CONFIG_SPI_BFIN6XX=y103103+CONFIG_GPIOLIB=y104104+CONFIG_GPIO_SYSFS=y105105+# CONFIG_HWMON is not set106106+CONFIG_WATCHDOG=y107107+CONFIG_BFIN_WDT=y108108+CONFIG_SOUND=m109109+CONFIG_SND=m110110+CONFIG_SND_MIXER_OSS=m111111+CONFIG_SND_PCM_OSS=m112112+# CONFIG_SND_DRIVERS is not set113113+# CONFIG_SND_SPI is not set114114+# CONFIG_SND_USB is not set115115+CONFIG_SND_SOC=m116116+CONFIG_SND_BF6XX_I2S=m117117+CONFIG_SND_SOC_BFIN_EVAL_ADAU1X61=m118118+CONFIG_SND_SOC_ALL_CODECS=m119119+CONFIG_USB=y120120+CONFIG_USB_MUSB_HDRC=y121121+CONFIG_USB_MUSB_BLACKFIN=y122122+CONFIG_USB_STORAGE=y123123+CONFIG_USB_GADGET=y124124+CONFIG_USB_GADGET_MUSB_HDRC=y125125+CONFIG_USB_ZERO=y126126+CONFIG_MMC=y127127+CONFIG_SDH_BFIN=y128128+# CONFIG_IOMMU_SUPPORT is not set129129+CONFIG_EXT2_FS=y130130+# CONFIG_DNOTIFY is not set131131+CONFIG_MSDOS_FS=y132132+CONFIG_VFAT_FS=y133133+CONFIG_JFFS2_FS=m134134+CONFIG_UBIFS_FS=m135135+CONFIG_NFS_FS=m136136+CONFIG_NFS_V3=y137137+CONFIG_NLS_CODEPAGE_437=y138138+CONFIG_NLS_ISO8859_1=y139139+CONFIG_DEBUG_FS=y140140+CONFIG_DEBUG_SHIRQ=y141141+CONFIG_DETECT_HUNG_TASK=y142142+CONFIG_DEBUG_INFO=y143143+CONFIG_FRAME_POINTER=y144144+# CONFIG_FTRACE is not set145145+CONFIG_DEBUG_BFIN_HWTRACE_COMPRESSION_ONE=y146146+CONFIG_EARLY_PRINTK=y147147+CONFIG_CPLB_INFO=y148148+CONFIG_BFIN_PSEUDODBG_INSNS=y149149+CONFIG_CRYPTO_HMAC=y150150+CONFIG_CRYPTO_MD4=y151151+CONFIG_CRYPTO_MD5=y152152+CONFIG_CRYPTO_ARC4=y153153+# CONFIG_CRYPTO_ANSI_CPRNG is not set
+5
arch/blackfin/include/asm/bfin-global.h
···35353636extern unsigned long get_cclk(void);3737extern unsigned long get_sclk(void);3838+#ifdef CONFIG_BF60x3939+extern unsigned long get_sclk0(void);4040+extern unsigned long get_sclk1(void);4141+extern unsigned long get_dramclk(void);4242+#endif3843extern unsigned long sclk_to_usecs(unsigned long sclk);3944extern unsigned long usecs_to_sclk(unsigned long usecs);4045
+79-5
arch/blackfin/include/asm/bfin_dma.h
···1515#define DMAEN 0x0001 /* DMA Channel Enable */1616#define WNR 0x0002 /* Channel Direction (W/R*) */1717#define WDSIZE_8 0x0000 /* Transfer Word Size = 8 */1818+#define PSIZE_8 0x00000000 /* Transfer Word Size = 16 */1919+2020+#ifdef CONFIG_BF60x2121+2222+#define PSIZE_16 0x00000010 /* Transfer Word Size = 16 */2323+#define PSIZE_32 0x00000020 /* Transfer Word Size = 32 */2424+#define PSIZE_64 0x00000030 /* Transfer Word Size = 32 */2525+#define WDSIZE_16 0x00000100 /* Transfer Word Size = 16 */2626+#define WDSIZE_32 0x00000200 /* Transfer Word Size = 32 */2727+#define WDSIZE_64 0x00000300 /* Transfer Word Size = 32 */2828+#define WDSIZE_128 0x00000400 /* Transfer Word Size = 32 */2929+#define WDSIZE_256 0x00000500 /* Transfer Word Size = 32 */3030+#define DMA2D 0x04000000 /* DMA Mode (2D/1D*) */3131+#define RESTART 0x00000004 /* DMA Buffer Clear SYNC */3232+#define DI_EN_X 0x00100000 /* Data Interrupt Enable in X count */3333+#define DI_EN_Y 0x00200000 /* Data Interrupt Enable in Y count */3434+#define DI_EN_P 0x00300000 /* Data Interrupt Enable in Peripheral */3535+#define DI_EN DI_EN_X /* Data Interrupt Enable */3636+#define NDSIZE_0 0x00000000 /* Next Descriptor Size = 1 */3737+#define NDSIZE_1 0x00010000 /* Next Descriptor Size = 2 */3838+#define NDSIZE_2 0x00020000 /* Next Descriptor Size = 3 */3939+#define NDSIZE_3 0x00030000 /* Next Descriptor Size = 4 */4040+#define NDSIZE_4 0x00040000 /* Next Descriptor Size = 5 */4141+#define NDSIZE_5 0x00050000 /* Next Descriptor Size = 6 */4242+#define NDSIZE_6 0x00060000 /* Next Descriptor Size = 7 */4343+#define NDSIZE 0x00070000 /* Next Descriptor Size */4444+#define NDSIZE_OFFSET 16 /* Next Descriptor Size Offset */4545+#define DMAFLOW_LIST 0x00004000 /* Descriptor List Mode */4646+#define DMAFLOW_LARGE DMAFLOW_LIST4747+#define DMAFLOW_ARRAY 0x00005000 /* Descriptor Array Mode */4848+#define DMAFLOW_LIST_DEMAND 0x00006000 /* Descriptor Demand List Mode */4949+#define DMAFLOW_ARRAY_DEMAND 0x00007000 /* Descriptor Demand Array Mode */5050+#define DMA_RUN_DFETCH 0x00000100 /* DMA Channel Running Indicator (DFETCH) */5151+#define DMA_RUN 0x00000200 /* DMA Channel Running Indicator */5252+#define DMA_RUN_WAIT_TRIG 0x00000300 /* DMA Channel Running Indicator (WAIT TRIG) */5353+#define DMA_RUN_WAIT_ACK 0x00000400 /* DMA Channel Running Indicator (WAIT ACK) */5454+5555+#else5656+5757+#define PSIZE_16 0x0000 /* Transfer Word Size = 16 */5858+#define PSIZE_32 0x0000 /* Transfer Word Size = 32 */1859#define WDSIZE_16 0x0004 /* Transfer Word Size = 16 */1960#define WDSIZE_32 0x0008 /* Transfer Word Size = 32 */2061#define DMA2D 0x0010 /* DMA Mode (2D/1D*) */2162#define RESTART 0x0020 /* DMA Buffer Clear */2263#define DI_SEL 0x0040 /* Data Interrupt Timing Select */2364#define DI_EN 0x0080 /* Data Interrupt Enable */6565+#define DI_EN_X 0x00C0 /* Data Interrupt Enable in X count*/6666+#define DI_EN_Y 0x0080 /* Data Interrupt Enable in Y count*/2467#define NDSIZE_0 0x0000 /* Next Descriptor Size = 0 (Stop/Autobuffer) */2568#define NDSIZE_1 0x0100 /* Next Descriptor Size = 1 */2669#define NDSIZE_2 0x0200 /* Next Descriptor Size = 2 */···7532#define NDSIZE_8 0x0800 /* Next Descriptor Size = 8 */7633#define NDSIZE_9 0x0900 /* Next Descriptor Size = 9 */7734#define NDSIZE 0x0f00 /* Next Descriptor Size */7878-#define DMAFLOW 0x7000 /* Flow Control */7979-#define DMAFLOW_STOP 0x0000 /* Stop Mode */8080-#define DMAFLOW_AUTO 0x1000 /* Autobuffer Mode */3535+#define NDSIZE_OFFSET 8 /* Next Descriptor Size Offset */8136#define DMAFLOW_ARRAY 0x4000 /* Descriptor Array Mode */8237#define DMAFLOW_SMALL 0x6000 /* Small Model Descriptor List Mode */8338#define DMAFLOW_LARGE 0x7000 /* Large Model Descriptor List Mode */3939+#define DFETCH 0x0004 /* DMA Descriptor Fetch Indicator */4040+#define DMA_RUN 0x0008 /* DMA Channel Running Indicator */4141+4242+#endif4343+#define DMAFLOW 0x7000 /* Flow Control */4444+#define DMAFLOW_STOP 0x0000 /* Stop Mode */4545+#define DMAFLOW_AUTO 0x1000 /* Autobuffer Mode */84468547/* DMA_IRQ_STATUS Masks */8648#define DMA_DONE 0x0001 /* DMA Completion Interrupt Status */8749#define DMA_ERR 0x0002 /* DMA Error Interrupt Status */8888-#define DFETCH 0x0004 /* DMA Descriptor Fetch Indicator */8989-#define DMA_RUN 0x0008 /* DMA Channel Running Indicator */5050+#ifdef CONFIG_BF60x5151+#define DMA_PIRQ 0x0004 /* DMA Peripheral Error Interrupt Status */5252+#else5353+#define DMA_PIRQ 05454+#endif90559156/*9257 * All Blackfin system MMRs are padded to 32bits even if the register···10857struct bfin_dma_regs {10958 u32 next_desc_ptr;11059 u32 start_addr;6060+#ifdef CONFIG_BF60x6161+ u32 cfg;6262+ u32 x_count;6363+ u32 x_modify;6464+ u32 y_count;6565+ u32 y_modify;6666+ u32 pad1;6767+ u32 pad2;6868+ u32 curr_desc_ptr;6969+ u32 prev_desc_ptr;7070+ u32 curr_addr;7171+ u32 irq_status;7272+ u32 curr_x_count;7373+ u32 curr_y_count;7474+ u32 pad3;7575+ u32 bw_limit_count;7676+ u32 curr_bw_limit_count;7777+ u32 bw_monitor_count;7878+ u32 curr_bw_monitor_count;7979+#else11180 __BFP(config);11281 u32 __pad0;11382 __BFP(x_count);···14271 u32 __pad1;14372 __BFP(curr_y_count);14473 u32 __pad2;7474+#endif14575};146767777+#ifndef CONFIG_BF60x14778/*14879 * bfin handshake mdma registers layout14980 */···15885 __BFP(ecount);15986 __BFP(bcount);16087};8888+#endif1618916290#undef __BFP16391
···9595 idle();9696 rcu_idle_exit();9797 tick_nohz_idle_exit();9898- schedule_preempt_disabled();9898+ preempt_enable_no_resched();9999+ schedule();100100+ preempt_disable();99101 }100102}101103···331329{332330 return in_mem_const_off(addr, size, 0, const_addr, const_size);333331}332332+#ifdef CONFIG_BF60x333333+#define ASYNC_ENABLED(bnum, bctlnum) 1334334+#else334335#define ASYNC_ENABLED(bnum, bctlnum) \335336({ \336337 (bfin_read_EBIU_AMGCTL() & 0xe) < ((bnum + 1) << 1) ? 0 : \337338 bfin_read_EBIU_AMBCTL##bctlnum() & B##bnum##RDYEN ? 0 : \338339 1; \339340})341341+#endif340342/*341343 * We can't read EBIU banks that aren't enabled or we end up hanging342344 * on the access to the async space. Make sure we validate accesses
+5-1
arch/blackfin/kernel/reboot.c
···2222__attribute__ ((__l1_text__, __noreturn__))2323static void bfin_reset(void)2424{2525+#ifndef CONFIG_BF60x2526 if (!ANOMALY_05000353 && !ANOMALY_05000386)2627 bfrom_SoftReset((void *)(L1_SCRATCH_START + L1_SCRATCH_LENGTH - 20));2728···5857 if (__SILICON_REVISION__ < 1 && bfin_revid() < 1)5958 bfin_read_SWRST();6059#endif6161-6260 /* Wait for the SWRST write to complete. Cannot rely on SSYNC6361 * though as the System state is all reset now.6462 */···7272 while (1)7373 /* Issue core reset */7474 asm("raise 1");7575+#else7676+ while (1)7777+ bfin_write_RCU0_CTL(0x1);7878+#endif7579}76807781__attribute__((weak))
+141-18
arch/blackfin/kernel/setup.c
···2525#include <asm/cacheflush.h>2626#include <asm/blackfin.h>2727#include <asm/cplbinit.h>2828+#include <asm/clocks.h>2829#include <asm/div64.h>2930#include <asm/cpu.h>3031#include <asm/fixed_code.h>···551550{552551#ifdef CONFIG_MTD_UCLINUX553552 unsigned long mtd_phys = 0;554554- unsigned long n;555553#endif556554 unsigned long max_mem;557555···594594 mtd_size = PAGE_ALIGN(*((unsigned long *)(mtd_phys + 8)));595595596596# if defined(CONFIG_EXT2_FS) || defined(CONFIG_EXT3_FS)597597- n = ext2_image_size((void *)(mtd_phys + 0x400));598598- if (n)599599- mtd_size = PAGE_ALIGN(n * 1024);597597+ if (*((unsigned short *)(mtd_phys + 0x438)) == EXT2_SUPER_MAGIC)598598+ mtd_size =599599+ PAGE_ALIGN(*((unsigned long *)(mtd_phys + 0x404)) << 10);600600# endif601601602602# if defined(CONFIG_CRAMFS)···612612613613 /* ROM_FS is XIP, so if we found it, we need to limit memory */614614 if (memory_end > max_mem) {615615- pr_info("Limiting kernel memory to %liMB due to anomaly 05000263\n", max_mem >> 20);615615+ pr_info("Limiting kernel memory to %liMB due to anomaly 05000263\n",616616+ (max_mem - CONFIG_PHY_RAM_BASE_ADDRESS) >> 20);616617 memory_end = max_mem;617618 }618619 }···643642 * doesn't exist, or we don't need to - then dont.644643 */645644 if (memory_end > max_mem) {646646- pr_info("Limiting kernel memory to %liMB due to anomaly 05000263\n", max_mem >> 20);645645+ pr_info("Limiting kernel memory to %liMB due to anomaly 05000263\n",646646+ (max_mem - CONFIG_PHY_RAM_BASE_ADDRESS) >> 20);647647 memory_end = max_mem;648648 }649649···663661 init_mm.end_data = (unsigned long)_edata;664662 init_mm.brk = (unsigned long)0;665663666666- printk(KERN_INFO "Board Memory: %ldMB\n", physical_mem_end >> 20);667667- printk(KERN_INFO "Kernel Managed Memory: %ldMB\n", _ramend >> 20);664664+ printk(KERN_INFO "Board Memory: %ldMB\n", (physical_mem_end - CONFIG_PHY_RAM_BASE_ADDRESS) >> 20);665665+ printk(KERN_INFO "Kernel Managed Memory: %ldMB\n", (_ramend - CONFIG_PHY_RAM_BASE_ADDRESS) >> 20);668666669667 printk(KERN_INFO "Memory map:\n"670668 " fixedcode = 0x%p-0x%p\n"···707705 int i;708706709707 max_pfn = 0;710710- min_low_pfn = memory_end;708708+ min_low_pfn = PFN_DOWN(memory_end);711709712710 for (i = 0; i < bfin_memmap.nr_map; i++) {713711 unsigned long start, end;···750748 /* pfn of the first usable page frame after kernel image*/751749 if (min_low_pfn < memory_start >> PAGE_SHIFT)752750 min_low_pfn = memory_start >> PAGE_SHIFT;753753-754754- start_pfn = PAGE_OFFSET >> PAGE_SHIFT;751751+ start_pfn = CONFIG_PHY_RAM_BASE_ADDRESS >> PAGE_SHIFT;755752 end_pfn = memory_end >> PAGE_SHIFT;756753757754 /*···795794 }796795797796 /* reserve memory before memory_start, including bootmap */798798- reserve_bootmem(PAGE_OFFSET,799799- memory_start + bootmap_size + PAGE_SIZE - 1 - PAGE_OFFSET,797797+ reserve_bootmem(CONFIG_PHY_RAM_BASE_ADDRESS,798798+ memory_start + bootmap_size + PAGE_SIZE - 1 - CONFIG_PHY_RAM_BASE_ADDRESS,800799 BOOTMEM_DEFAULT);801800}802801···845844 break;846845 }847846 switch (ddrctl & 0x30000) {848848- case DEVWD_4: ret *= 2;849849- case DEVWD_8: ret *= 2;850850- case DEVWD_16: break;847847+ case DEVWD_4:848848+ ret *= 2;849849+ case DEVWD_8:850850+ ret *= 2;851851+ case DEVWD_16:852852+ break;851853 }852854 if ((ddrctl & 0xc000) == 0x4000)853855 ret *= 2;856856+ return ret;857857+#elif defined(CONFIG_BF60x)858858+ u32 ddrctl = bfin_read_DDR0_CFG();859859+ int ret;860860+ switch (ddrctl & 0xf00) {861861+ case DEVSZ_64:862862+ ret = 64 / 8;863863+ break;864864+ case DEVSZ_128:865865+ ret = 128 / 8;866866+ break;867867+ case DEVSZ_256:868868+ ret = 256 / 8;869869+ break;870870+ case DEVSZ_512:871871+ ret = 512 / 8;872872+ break;873873+ case DEVSZ_1G:874874+ ret = 1024 / 8;875875+ break;876876+ case DEVSZ_2G:877877+ ret = 2048 / 8;878878+ break;879879+ }854880 return ret;855881#endif856882 BUG();···892864{893865 u32 mmr;894866 unsigned long sclk, cclk;867867+ struct clk *clk;895868896869 native_machine_early_platform_add_devices();897870898871 enable_shadow_console();899872900873 /* Check to make sure we are running on the right processor */874874+ mmr = bfin_cpuid();901875 if (unlikely(CPUID != bfin_cpuid()))902876 printk(KERN_ERR "ERROR: Not running on ADSP-%s: unknown CPUID 0x%04x Rev 0.%d\n",903877 CPU, bfin_cpuid(), bfin_revid());···920890921891 memset(&bfin_memmap, 0, sizeof(bfin_memmap));922892893893+#ifdef CONFIG_BF60x894894+ /* Should init clock device before parse command early */895895+ clk_init();896896+#endif923897 /* If the user does not specify things on the command line, use924898 * what the bootloader set things up as925899 */···938904939905 memory_setup();940906907907+#ifndef CONFIG_BF60x941908 /* Initialize Async memory banks */942909 bfin_write_EBIU_AMBCTL0(AMBCTL0VAL);943910 bfin_write_EBIU_AMBCTL1(AMBCTL1VAL);···948913 bfin_write_EBIU_MODE(CONFIG_EBIU_MODEVAL);949914 bfin_write_EBIU_FCTL(CONFIG_EBIU_FCTLVAL);950915#endif916916+#endif951917#ifdef CONFIG_BFIN_HYSTERESIS_CONTROL952918 bfin_write_PORTF_HYSTERESIS(HYST_PORTF_0_15);953919 bfin_write_PORTG_HYSTERESIS(HYST_PORTG_0_15);···957921 ~HYST_NONEGPIO_MASK) | HYST_NONEGPIO);958922#endif959923924924+#ifdef CONFIG_BF60x925925+ clk = clk_get(NULL, "CCLK");926926+ if (!IS_ERR(clk)) {927927+ cclk = clk_get_rate(clk);928928+ clk_put(clk);929929+ } else930930+ cclk = 0;931931+932932+ clk = clk_get(NULL, "SCLK0");933933+ if (!IS_ERR(clk)) {934934+ sclk = clk_get_rate(clk);935935+ clk_put(clk);936936+ } else937937+ sclk = 0;938938+#else960939 cclk = get_cclk();961940 sclk = get_sclk();941941+#endif962942963943 if ((ANOMALY_05000273 || ANOMALY_05000274) && (cclk >> 1) < sclk)964944 panic("ANOMALY 05000273 or 05000274: CCLK must be >= 2*SCLK");···990938 printk(KERN_INFO "Hardware Trace %s and %sabled\n",991939 (mmr & 0x1) ? "active" : "off",992940 (mmr & 0x2) ? "en" : "dis");993993-941941+#ifndef CONFIG_BF60x994942 mmr = bfin_read_SYSCR();995943 printk(KERN_INFO "Boot Mode: %i\n", mmr & 0xF);996944···1032980 printk(KERN_INFO "Recovering from Watchdog event\n");1033981 else if (_bfin_swrst & RESET_SOFTWARE)1034982 printk(KERN_NOTICE "Reset caused by Software reset\n");10351035-983983+#endif1036984 printk(KERN_INFO "Blackfin support (C) 2004-2010 Analog Devices, Inc.\n");1037985 if (bfin_compiled_revid() == 0xffff)1038986 printk(KERN_INFO "Compiled for ADSP-%s Rev any, running on 0.%d\n", CPU, bfin_revid());···1112106011131061/* Get the input clock frequency */11141062static u_long cached_clkin_hz = CONFIG_CLKIN_HZ;10631063+#ifndef CONFIG_BF60x11151064static u_long get_clkin_hz(void)11161065{11171066 return cached_clkin_hz;11181067}10681068+#endif11191069static int __init early_init_clkin_hz(char *buf)11201070{11211071 cached_clkin_hz = simple_strtoul(buf, NULL, 0);···11291075}11301076early_param("clkin_hz=", early_init_clkin_hz);1131107710781078+#ifndef CONFIG_BF60x11321079/* Get the voltage input multiplier */11331080static u_long get_vco(void)11341081{···11521097 cached_vco *= msel;11531098 return cached_vco;11541099}11001100+#endif1155110111561102/* Get the Core clock */11571103u_long get_cclk(void)11581104{11051105+#ifdef CONFIG_BF60x11061106+ struct clk *cclk;11071107+ u_long cclk_rate;11081108+11091109+ cclk = clk_get(NULL, "CCLK");11101110+ if (IS_ERR(cclk))11111111+ return 0;11121112+11131113+ cclk_rate = clk_get_rate(cclk);11141114+ clk_put(cclk);11151115+ return cclk_rate;11161116+#else11591117 static u_long cached_cclk_pll_div, cached_cclk;11601118 u_long csel, ssel;11611119···11881120 else11891121 cached_cclk = get_vco() >> csel;11901122 return cached_cclk;11231123+#endif11911124}11921125EXPORT_SYMBOL(get_cclk);11261126+11271127+#ifdef CONFIG_BF60x11281128+/* Get the bf60x clock of SCLK0 domain */11291129+u_long get_sclk0(void)11301130+{11311131+ struct clk *sclk0;11321132+ u_long sclk0_rate;11331133+11341134+ sclk0 = clk_get(NULL, "SCLK0");11351135+ if (IS_ERR(sclk0))11361136+ return 0;11371137+11381138+ sclk0_rate = clk_get_rate(sclk0);11391139+ clk_put(sclk0);11401140+ return sclk0_rate;11411141+}11421142+EXPORT_SYMBOL(get_sclk0);11431143+11441144+/* Get the bf60x clock of SCLK1 domain */11451145+u_long get_sclk1(void)11461146+{11471147+ struct clk *sclk1;11481148+ u_long sclk1_rate;11491149+11501150+ sclk1 = clk_get(NULL, "SCLK1");11511151+ if (IS_ERR(sclk1))11521152+ return 0;11531153+11541154+ sclk1_rate = clk_get_rate(sclk1);11551155+ clk_put(sclk1);11561156+ return sclk1_rate;11571157+}11581158+EXPORT_SYMBOL(get_sclk1);11591159+11601160+/* Get the bf60x DRAM clock */11611161+u_long get_dclk(void)11621162+{11631163+ struct clk *dclk;11641164+ u_long dclk_rate;11651165+11661166+ dclk = clk_get(NULL, "DCLK");11671167+ if (IS_ERR(dclk))11681168+ return 0;11691169+11701170+ dclk_rate = clk_get_rate(dclk);11711171+ clk_put(dclk);11721172+ return dclk_rate;11731173+}11741174+EXPORT_SYMBOL(get_dclk);11751175+#endif1193117611941177/* Get the System clock */11951178u_long get_sclk(void)11961179{11801180+#ifdef CONFIG_BF60x11811181+ return get_sclk0();11821182+#else11971183 static u_long cached_sclk;11981184 u_long ssel;11991185···1268114612691147 cached_sclk = get_vco() / ssel;12701148 return cached_sclk;11491149+#endif12711150}12721151EXPORT_SYMBOL(get_sclk);12731152
···11411141 sti r0;1142114211431143 /* finish the userspace "atomic" functions for it */11441144- r1 = FIXED_CODE_END;11441144+ r1.l = lo(FIXED_CODE_END);11451145+ r1.h = hi(FIXED_CODE_END);11451146 r2 = [sp + PT_PC];11461147 cc = r1 <= r2;11471148 if cc jump .Lresume_userspace (bp);
-2
arch/blackfin/mach-common/head.S
···210210ENTRY(_real_start)211211 /* Enable nested interrupts */212212 [--sp] = reti;213213-214213 /* watchdog off for now */215214 p0.l = lo(WDOG_CTL);216215 p0.h = hi(WDOG_CTL);217216 r0 = 0xAD6(z);218217 w[p0] = r0;219218 ssync;220220-221219 /* Pass the u-boot arguments to the global value command line */222220 R0 = R7;223221 call _cmdline_init;
+6-8
arch/blackfin/mm/init.c
···48484949 unsigned long zones_size[MAX_NR_ZONES] = {5050 [0] = 0,5151- [ZONE_DMA] = (end_mem - PAGE_OFFSET) >> PAGE_SHIFT,5151+ [ZONE_DMA] = (end_mem - CONFIG_PHY_RAM_BASE_ADDRESS) >> PAGE_SHIFT,5252 [ZONE_NORMAL] = 0,5353#ifdef CONFIG_HIGHMEM5454 [ZONE_HIGHMEM] = 0,···60606161 pr_debug("free_area_init -> start_mem is %#lx virtual_end is %#lx\n",6262 PAGE_ALIGN(memory_start), end_mem);6363- free_area_init(zones_size);6363+ free_area_init_node(0, zones_size,6464+ CONFIG_PHY_RAM_BASE_ADDRESS >> PAGE_SHIFT, NULL);6465}65666667asmlinkage void __init init_pda(void)···7574 undefined at the time of the call, we are only setting up7675 valid pointers to it. */7776 memset(&cpu_pda[cpu], 0, sizeof(cpu_pda[cpu]));7878-7979- cpu_pda[0].next = &cpu_pda[1];8080- cpu_pda[1].next = &cpu_pda[0];81778278#ifdef CONFIG_EXCEPTION_L1_SCRATCH8379 cpu_pda[cpu].ex_stack = (unsigned long *)(L1_SCRATCH_START + \···107109 totalram_pages = free_all_bootmem();108110109111 reservedpages = 0;110110- for (tmp = 0; tmp < max_mapnr; tmp++)112112+ for (tmp = ARCH_PFN_OFFSET; tmp < max_mapnr; tmp++)111113 if (PageReserved(pfn_to_page(tmp)))112114 reservedpages++;113113- freepages = max_mapnr - reservedpages;115115+ freepages = max_mapnr - ARCH_PFN_OFFSET - reservedpages;114116115117 /* do not count in kernel image between _rambase and _ramstart */116118 reservedpages -= (_ramstart - _rambase) >> PAGE_SHIFT;···125127 printk(KERN_INFO126128 "Memory available: %luk/%luk RAM, "127129 "(%uk init code, %uk kernel code, %uk data, %uk dma, %uk reserved)\n",128128- (unsigned long) freepages << (PAGE_SHIFT-10), _ramend >> 10,130130+ (unsigned long) freepages << (PAGE_SHIFT-10), (_ramend - CONFIG_PHY_RAM_BASE_ADDRESS) >> 10,129131 initk, codek, datak, DMA_UNCACHED_REGION >> 10, (reservedpages << (PAGE_SHIFT-10)));130132}131133