Skip to content

pre2: Update with patches from rwhitby fork #1

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 12 commits into
base: pre2
Choose a base branch
from
8 changes: 5 additions & 3 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -459,6 +459,7 @@ drivers-y := drivers/ sound/
net-y := net/
libs-y := lib/
core-y := usr/
extra-y := extra/
endif # KBUILD_EXTMOD

ifeq ($(dot-config),1)
Expand Down Expand Up @@ -610,12 +611,12 @@ core-y += kernel/ mm/ fs/ ipc/ security/ crypto/ block/

vmlinux-dirs := $(patsubst %/,%,$(filter %/, $(init-y) $(init-m) \
$(core-y) $(core-m) $(drivers-y) $(drivers-m) \
$(net-y) $(net-m) $(libs-y) $(libs-m)))
$(net-y) $(net-m) $(libs-y) $(libs-m) $(extra-y) $(extra-m)))

vmlinux-alldirs := $(sort $(vmlinux-dirs) $(patsubst %/,%,$(filter %/, \
$(init-n) $(init-) \
$(core-n) $(core-) $(drivers-n) $(drivers-) \
$(net-n) $(net-) $(libs-n) $(libs-))))
$(net-n) $(net-) $(libs-n) $(libs-) $(extra-n) $(extra-))))

init-y := $(patsubst %/, %/built-in.o, $(init-y))
core-y := $(patsubst %/, %/built-in.o, $(core-y))
Expand All @@ -624,6 +625,7 @@ net-y := $(patsubst %/, %/built-in.o, $(net-y))
libs-y1 := $(patsubst %/, %/lib.a, $(libs-y))
libs-y2 := $(patsubst %/, %/built-in.o, $(libs-y))
libs-y := $(libs-y1) $(libs-y2)
extra-y := $(patsubst %/, %/built-in.o, $(extra-y))

# Build vmlinux
# ---------------------------------------------------------------------------
Expand Down Expand Up @@ -653,7 +655,7 @@ libs-y := $(libs-y1) $(libs-y2)
# System.map is generated to document addresses of all kernel symbols

vmlinux-init := $(head-y) $(init-y)
vmlinux-main := $(core-y) $(libs-y) $(drivers-y) $(net-y)
vmlinux-main := $(core-y) $(libs-y) $(drivers-y) $(net-y) $(extra-y)
vmlinux-all := $(vmlinux-init) $(vmlinux-main)
vmlinux-lds := arch/$(SRCARCH)/kernel/vmlinux.lds
export KBUILD_VMLINUX_OBJS := $(vmlinux-all)
Expand Down
3 changes: 3 additions & 0 deletions arch/arm/Kconfig
Original file line number Diff line number Diff line change
Expand Up @@ -1146,3 +1146,6 @@ source "security/Kconfig"
source "crypto/Kconfig"

source "lib/Kconfig"

source "extra/Kconfig"

4 changes: 2 additions & 2 deletions arch/arm/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -47,12 +47,12 @@ comma = ,
# Note that GCC does not numerically define an architecture version
# macro, but instead defines a whole series of macros which makes
# testing for a specific architecture or later rather impossible.
arch-$(CONFIG_CPU_32v7) :=-D__LINUX_ARM_ARCH__=7 $(call cc-option,-march=armv7-a,-march=armv5t -Wa$(comma)-march=armv7-a)
arch-$(CONFIG_CPU_32v7) :=-D__LINUX_ARM_ARCH__=7 $(call cc-option,-fgcse-lm -fgcse-sm -fsched-spec-load -fforce-addr -ffast-math -fsingle-precision-constant -mcpu=cortex-a8 -mfpu=neon -ftree-vectorize -funswitch-loops,-mcpu=cortex-a8 -Wa$(comma)-mcpu=cortex-a8)
arch-$(CONFIG_CPU_32v6) :=-D__LINUX_ARM_ARCH__=6 $(call cc-option,-march=armv6,-march=armv5t -Wa$(comma)-march=armv6)
# Only override the compiler option if ARMv6. The ARMv6K extensions are
# always available in ARMv7
ifeq ($(CONFIG_CPU_32v6),y)
arch-$(CONFIG_CPU_32v6K) :=-D__LINUX_ARM_ARCH__=6 $(call cc-option,-march=armv6k,-march=armv5t -Wa$(comma)-march=armv6k)
arch-$(CONFIG_CPU_32v6K) :=-D__LINUX_ARM_ARCH__=6 $(call cc-option,-march=armv6k,-mtune=arm1176jf-s -Wa$(comma)-march=armv6k -mtune=arm1176jf-s)
endif
arch-$(CONFIG_CPU_32v5) :=-D__LINUX_ARM_ARCH__=5 $(call cc-option,-march=armv5te,-march=armv4t)
arch-$(CONFIG_CPU_32v4T) :=-D__LINUX_ARM_ARCH__=4 -march=armv4t
Expand Down
41 changes: 26 additions & 15 deletions arch/arm/configs/omap_sirloin_3630_defconfig
Original file line number Diff line number Diff line change
Expand Up @@ -166,9 +166,7 @@ CONFIG_ARCH_OMAP3=y
#
# CONFIG_OMAP_DEBUG_POWERDOMAIN is not set
# CONFIG_OMAP_DEBUG_CLOCKDOMAIN is not set
CONFIG_OMAP_SMARTREFLEX=y
CONFIG_OMAP_SMARTREFLEX_v15=y
# CONFIG_OMAP_SMARTREFLEX_TESTING is not set
# CONFIG_OMAP_SMARTREFLEX is not set
CONFIG_OMAP_RESET_CLOCKS=y
CONFIG_OMAP_BOOT_TAG=y
CONFIG_OMAP_BOOT_REASON=y
Expand Down Expand Up @@ -221,15 +219,15 @@ CONFIG_FASTPATH=y
#
CONFIG_OMAP3_PM=y
# CONFIG_OMAP_VOLT_SR_BYPASS is not set
CONFIG_OMAP_VOLT_SR_FORCEUPDATE=y
# CONFIG_OMAP_VOLT_SR_FORCEUPDATE is not set
# CONFIG_OMAP_VOLT_SR is not set
# CONFIG_OMAP_VOLT_VSEL is not set
CONFIG_OMAP_VOLT_VSEL=y
# CONFIG_OMAP_VOLT_VMODE is not set
# CONFIG_OMAP3_VDD1_OPP1 is not set
# CONFIG_OMAP3_VDD1_OPP2 is not set
# CONFIG_OMAP3_VDD1_OPP3 is not set
# CONFIG_OMAP3_VDD1_OPP4 is not set
CONFIG_OMAP3_VDD1_OPP5=y
CONFIG_OMAP3_VDD1_OPP4=y
# CONFIG_OMAP3_VDD1_OPP5 is not set
# CONFIG_OMAP3_VDD2_OPP2 is not set
CONFIG_OMAP3_VDD2_OPP3=y
# CONFIG_ENABLE_VOLTSCALE_IN_SUSPEND is not set
Expand Down Expand Up @@ -353,18 +351,30 @@ CONFIG_CPU_FREQ_TABLE=y
# CONFIG_CPU_FREQ_DEBUG is not set
CONFIG_CPU_FREQ_STAT=y
CONFIG_CPU_FREQ_STAT_DETAILS=y
CONFIG_CPU_FREQ_OVERRIDE=y
# CONFIG_CPU_FREQ_OVERRIDE_STRIPOPP is not set
# CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE is not set
# CONFIG_CPU_FREQ_DEFAULT_GOV_POWERSAVE is not set
CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE=y
# CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND is not set
# CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND_TICKLE is not set
# CONFIG_CPU_FREQ_DEFAULT_GOV_CONSERVATIVE is not set
# CONFIG_CPU_FREQ_GOV_PERFORMANCE is not set
# CONFIG_CPU_FREQ_GOV_POWERSAVE is not set
CONFIG_CPU_FREQ_GOV_PERFORMANCE=y
CONFIG_CPU_FREQ_GOV_POWERSAVE=y
CONFIG_CPU_FREQ_GOV_USERSPACE=y
CONFIG_CPU_FREQ_GOV_SCREENSTATE=y
CONFIG_CPU_FREQ_GOV_ONDEMAND=y
CONFIG_CPU_FREQ_GOV_ONDEMAND_TICKLE=y
# CONFIG_CPU_FREQ_GOV_CONSERVATIVE is not set
CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y
CONFIG_CPU_FREQ_GOV_LAGFREE=y
CONFIG_LAGFREE_MAX_LOAD=50
CONFIG_LAGFREE_MIN_LOAD=15
CONFIG_LAGFREE_FREQ_STEP_DOWN=100000
CONFIG_LAGFREE_FREQ_SLEEP_MAX=300000
CONFIG_LAGFREE_FREQ_AWAKE_MIN=150000
CONFIG_LAGFREE_FREQ_STEP_UP_SLEEP_PERCENT=20
CONFIG_CPU_FREQ_MIN_TICKS=10
CONFIG_CPU_FREQ_SAMPLING_LATENCY_MULTIPLIER=1000

#
# Floating point emulation
Expand Down Expand Up @@ -1037,7 +1047,8 @@ CONFIG_OMAP3430_1WIRE_PROTOCOL=y
# CONFIG_W1_SLAVE_DS2760 is not set
CONFIG_W1_SLAVE_DS2784=y
# CONFIG_POWER_SUPPLY is not set
# CONFIG_HWMON is not set
CONFIG_HWMON=y
CONFIG_SENSORS_OMAP34XX=y
CONFIG_WATCHDOG=y
# CONFIG_WATCHDOG_NOWAYOUT is not set

Expand Down Expand Up @@ -1824,14 +1835,14 @@ CONFIG_CRYPTO_SHA256=y
CONFIG_CRYPTO_ECB=m
CONFIG_CRYPTO_CBC=y
CONFIG_CRYPTO_PCBC=m
# CONFIG_CRYPTO_LRW is not set
# CONFIG_CRYPTO_XTS is not set
CONFIG_CRYPTO_LRW=y
CONFIG_CRYPTO_XTS=y
# CONFIG_CRYPTO_CRYPTD is not set
CONFIG_CRYPTO_DES=y
# CONFIG_CRYPTO_FCRYPT is not set
# CONFIG_CRYPTO_BLOWFISH is not set
# CONFIG_CRYPTO_TWOFISH is not set
# CONFIG_CRYPTO_SERPENT is not set
CONFIG_CRYPTO_TWOFISH=y
CONFIG_CRYPTO_SERPENT=y
CONFIG_CRYPTO_AES=y
# CONFIG_CRYPTO_CAST5 is not set
# CONFIG_CRYPTO_CAST6 is not set
Expand Down
5 changes: 5 additions & 0 deletions arch/arm/mach-omap3pe/board-nduid.c
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/

#include <linux/kernel.h>
#include <asm/arch/nduid.h>
#include <asm/io.h>
#if defined(CONFIG_ARCH_OMAP24XX)
Expand Down Expand Up @@ -63,5 +64,9 @@ int omap_nduid_get_cpu_id(char *id, unsigned int maxlen)
buf[4] = __raw_readl(CONTROL_TAP_DIE_ID_2);
buf[5] = __raw_readl(CONTROL_TAP_DIE_ID_3);

printk(KERN_INFO "IDCODE: 0x%04x\n", buf[0]);
printk(KERN_INFO "PROD_ID: 0x%04x\n", buf[1]);
printk(KERN_INFO "DIE_ID: 0x%04x%04x%04x%04x\n", buf[2], buf[3], buf[4], buf[5]);

return sizeof(uint32_t) * 6;
}
7 changes: 7 additions & 0 deletions arch/arm/mach-omap3pe/clock.c
Original file line number Diff line number Diff line change
Expand Up @@ -707,6 +707,13 @@ static void omap3_clk_init_cpufreq_table(struct cpufreq_frequency_table **table)

prcm = vdd1_rate_table + ARRAY_SIZE(vdd1_rate_table) -1;
for (; prcm->speed; prcm--) {
#ifdef CONFIG_CPU_FREQ_OVERRIDE_STRIPOPP
#ifdef CONFIG_MACH_SIRLOIN_3630
if((prcm->speed / 1000) < 300000) continue;
#else
if((prcm->speed / 1000) < 500000) continue;
#endif
#endif
freq_table[i].index = i;
freq_table[i].frequency = prcm->speed / 1000;
i++;
Expand Down
2 changes: 1 addition & 1 deletion arch/arm/mach-omap3pe/clock.h
Original file line number Diff line number Diff line change
Expand Up @@ -54,8 +54,8 @@
#define S550M 550000000
#define S625M 625000000
#define S600M 600000000
#define S800M 800000000
#define S1000M 1000000000
#define S1200M 1200000000

/* Macro to enable clock control via clock framework */
#define ENABLE_CLOCKCONTROL 1
Expand Down
4 changes: 2 additions & 2 deletions arch/arm/mach-omap3pe/clock_tree.h
Original file line number Diff line number Diff line change
Expand Up @@ -91,9 +91,9 @@ static struct vdd_prcm_config vdd1_rate_table[MAX_VDD1_OPP +1] = {
/*OPP3*/
{S600M, PRCM_VDD1_OPP3, RATE_IN_343X},
/*OPP4*/
{S800M, PRCM_VDD1_OPP4, RATE_IN_343X},
{S1000M, PRCM_VDD1_OPP4, RATE_IN_343X},
/*OPP5*/
{S1000M, PRCM_VDD1_OPP5, RATE_IN_343X},
{S1200M, PRCM_VDD1_OPP5, RATE_IN_343X},
};

static struct vdd_prcm_config vdd2_rate_table[MAX_VDD2_OPP +1] = {
Expand Down
26 changes: 14 additions & 12 deletions arch/arm/mach-omap3pe/prcm_opp.c
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,7 @@ static u8 mpu_iva2_vdd1_volts [2][PRCM_NO_VDD1_OPPS] = {
{ 0x1e, 0x24, 0x30, 0x36, 0x3C }, /* OLD 3430 values */
/* Vsel corresponding to unused (OPP1), 1.0125V (OPP2),
1.2V (OPP3), 1.325V (OPP4), 1.375 (OPP5) */
{ 0x21, 0x21, 0x30, 0x3a, 0x3e }, /* NEW 3630 values */
{ 0x21, 0x21, 0x30, 0x3e, 0x44 }, /* NEW 3630 values */
};

static u8 core_l3_vdd2_volts [2][PRCM_NO_VDD2_OPPS] = { /* only 3 OPPs */
Expand Down Expand Up @@ -226,7 +226,7 @@ void prcm_set_current_vdd2_opp(u32 opp)

u32 omap3_max_vdd1_opp(void)
{
return 5;
return 0;

/* This function call is used in the bridgedriver.
*
Expand Down Expand Up @@ -332,10 +332,10 @@ static struct dpll_param mpu_dpll_param[2][5][PRCM_NO_VDD1_OPPS] = {
/* 26M values */
/* OPP1(150 Mhz) and OPP2(300 Mhz)*/
{{0x12c, 0x0C, 0x07, 0x04}, {0x12c, 0x0C, 0x07, 0x02},
/* OPP3(600 Mhz) and OPP4(800 Mhz)*/
{0x12c, 0x0C, 0x07, 0x01}, {0x190, 0x0C, 0x07, 0x01},
/* OPP5 (1000 Mhz) */
{0x1f4, 0x0C, 0x07, 0x01} },
/* OPP3(600 Mhz) and OPP4(1000 Mhz)*/
{0x12c, 0x0C, 0x07, 0x01}, {0x1f4, 0x0C, 0x07, 0x01},
/* OPP5 (1200 Mhz) */
{0x258, 0x0C, 0x07, 0x01} },
/* 38.4M values */
/* OPP1(125 Mhz) and OPP2(250 Mhz)*/
{{0x271, 0x2F, 0x03, 0x04}, {0x271, 0x2F, 0x03, 0x02},
Expand Down Expand Up @@ -697,10 +697,10 @@ void prcm_scale_finish(void)
valid_rate = clk_round_rate(p_vdd1_clk, S600M);
break;
case PRCM_VDD1_OPP4:
valid_rate = clk_round_rate(p_vdd1_clk, S800M);
valid_rate = clk_round_rate(p_vdd1_clk, S1000M);
break;
case PRCM_VDD1_OPP5:
valid_rate = clk_round_rate(p_vdd1_clk, S1000M);
valid_rate = clk_round_rate(p_vdd1_clk, S1200M);
break;
#else
case PRCM_VDD1_OPP2:
Expand Down Expand Up @@ -732,8 +732,8 @@ static struct vdd1_arm_dsp_freq_d {
{150, 90, CO_VDD1_OPP1, PRCM_VDD1_OPP1},
{300, 180, CO_VDD1_OPP2, PRCM_VDD1_OPP2},
{600, 360, CO_VDD1_OPP3, PRCM_VDD1_OPP3},
{800, 396, CO_VDD1_OPP4, PRCM_VDD1_OPP4},
{1000, 430, CO_VDD1_OPP5, PRCM_VDD1_OPP5},
{1000, 396, CO_VDD1_OPP4, PRCM_VDD1_OPP4},
{1200, 430, CO_VDD1_OPP5, PRCM_VDD1_OPP5},
};
static struct vdd2_core_freq_d {
unsigned int freq;
Expand All @@ -746,7 +746,7 @@ static struct vdd2_core_freq_d {
};

static unsigned int rnd_rate_vdd1[5] = {
S150M, S300M, S600M, S800M, S1000M
S150M, S300M, S600M, S1000M, S1200M
};
static unsigned int rnd_rate_vdd2[3] = {
0, S100M, S200M
Expand Down Expand Up @@ -1889,5 +1889,7 @@ int __init prcm_vdd_clk_init(void)
return -1;
}


#ifdef CONFIG_CPU_FREQ_OVERRIDE
#include "prcm_opp_ss.c"
#endif

70 changes: 70 additions & 0 deletions arch/arm/mach-omap3pe/prcm_opp_ss.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
#ifdef CONFIG_CPU_FREQ_OVERRIDE
void omap_pm_opp_get_volts(u8 vdd1_volts[]) {
#ifdef CONFIG_MACH_SIRLOIN_3630
memcpy(vdd1_volts,mpu_iva2_vdd1_volts[tidx],
sizeof(mpu_iva2_vdd1_volts[tidx]));
#else
memcpy(vdd1_volts,mpu_iva2_vdd1_volts,sizeof(mpu_iva2_vdd1_volts));
#endif
}
EXPORT_SYMBOL(omap_pm_opp_get_volts);

void omap_pm_opp_set_volts(u8 vdd1_volts[]) {
#ifdef CONFIG_MACH_SIRLOIN_3630
memcpy(mpu_iva2_vdd1_volts[tidx],vdd1_volts,
sizeof(mpu_iva2_vdd1_volts[tidx]));
prcm_do_voltage_scaling(s_current_vdd1_opp, s_current_vdd1_opp-1);
#else
memcpy(mpu_iva2_vdd1_volts,vdd1_volts,sizeof(mpu_iva2_vdd1_volts));
prcm_do_voltage_scaling(current_vdd1_opp, current_vdd1_opp-1);
#endif
}
EXPORT_SYMBOL(omap_pm_opp_set_volts);

void omap_pm_opp_get_vdd2_volts(u8 *vdd2_volt) {
#ifdef CONFIG_MACH_SIRLOIN_3630
*(vdd2_volt)=(u8 )core_l3_vdd2_volts[tidx][2];
#else
*(vdd2_volt)=(u8 )core_l3_vdd2_volts[2];
#endif
}
EXPORT_SYMBOL(omap_pm_opp_get_vdd2_volts);

void omap_pm_opp_set_vdd2_volts(u8 vdd2_volt) {
#ifdef CONFIG_MACH_SIRLOIN_3630
core_l3_vdd2_volts[tidx][2]=(u8)vdd2_volt;
prcm_do_voltage_scaling(s_current_vdd2_opp, s_current_vdd2_opp-1);
#else
core_l3_vdd2_volts[2]=(u8)vdd2_volt;
prcm_do_voltage_scaling(current_vdd2_opp, current_vdd2_opp-1);
#endif
}
EXPORT_SYMBOL(omap_pm_opp_set_vdd2_volts);

void omap_pm_opp_get_vdd2_freq(u8 *vdd2_freq) {
*(vdd2_freq)=(u8)vdd2_core_freq[2].freq;
}
EXPORT_SYMBOL(omap_pm_opp_get_vdd2_freq);

unsigned int prcm_get_current_vdd1_opp_no(void) {
#ifdef CONFIG_MACH_SIRLOIN_3630
return get_opp_no(s_current_vdd1_opp);
#else
return get_opp_no(current_vdd1_opp);
#endif
}
EXPORT_SYMBOL(prcm_get_current_vdd1_opp_no);

unsigned short get_vdd1_arm_opp_for_freq(unsigned int freq)
{
int i;
for (i = 0; i < ARRAY_SIZE(vdd1_arm_dsp_freq); i++) {
if (vdd1_arm_dsp_freq[i].freq_mpu == (freq / 1000)) {
return i+1;
}
}
return 0;
}
EXPORT_SYMBOL(get_vdd1_arm_opp_for_freq);
#endif

1 change: 1 addition & 0 deletions arch/arm/plat-omap/cpu-omap.c
Original file line number Diff line number Diff line change
Expand Up @@ -174,6 +174,7 @@ static int __init omap_cpu_init(struct cpufreq_policy *policy)
if (!result)
cpufreq_frequency_table_get_attr(freq_table,
policy->cpu);
policy->max = 1000000;
} else
#endif
{
Expand Down
1 change: 1 addition & 0 deletions drivers/Kconfig
Original file line number Diff line number Diff line change
Expand Up @@ -95,4 +95,5 @@ source "drivers/kvm/Kconfig"
source "drivers/uio/Kconfig"

source "drivers/virtio/Kconfig"

endmenu
Loading