hiu: Introduce HIU driver.
authorChoonghoon Park <choong.park@samsung.com>
Mon, 15 Jan 2018 06:11:54 +0000 (15:11 +0900)
committerlakkyung.jung <lakkyung.jung@samsung.com>
Mon, 23 Jul 2018 05:59:26 +0000 (14:59 +0900)
commitb2f28cb8d1d32a15f2616b9ffc49a56f68e3bc28
tree4d9fc26f09583b15256f71c7724c6a7c98eb1e63
parent5e339ed58edda5a4c473973d224e464d74b66a0c
hiu: Introduce HIU driver.

Change-Id: Ib8c490128ab6dcc36fc7f502ded8c2d5b9eddc41

[9820] hiu: sync up H/W and S/W frequency with EFF

Exynos FF and HIU driver cowork to sync up H/W and S/W frequency.

Change-Id: I71689390ca7cf8bea6cfe222b419788c47708ed7

[9820] hiu: update hiu data using cpufreq ready callback

Change-Id: I398899d97541410776b7b780ac72fb87de8ff796

[9820] hiu: modify logging type

Change-Id: I1cc7927255d574462639e6eda4fbd5533eaed890

[9820] hiu: add offset to level for communication with ACPM

Change-Id: Ic37b5c812004f2168c625e6c224e07090a526f6a

[9820] hiu: add field in hiu data for sw power budget limit

When current frequecy is lower than boost threshold,
HIU don't need to request dynamic power bugeting.

SW requests DVFS with fixed power budgeet limit

Change-Id: I2b20d14d39c729552854bd4226e3d862f65c44a4

[9820] hiu: move some functions under helper function category

Change-Id: I5511e5f9a6778cd92dc7fcdfe5ed905e33a45e5c

[9820] hiu: wait for SR1 response in when normal DVFS is requested

Change-Id: Ib6676d2b586ec11c208f02cb9bbac77dc1acb281

[9820] hiu: make sr1_check_loop more stable

Change-Id: I9fefe89eb4a631238789e34629882447d6bc4adc

[9820] hiu: give normal DVFS request higher prio than turbo boost

If
1) normal DVFS request and trubo boost request tb_threshold DVFS value and
2) turbo boost request get to know SR1 write and clear SR1 write bit,
then normal DVFS will be stuck in loop until other SR1 write comes.

It means that other normal DVFS requests will be stuck by mutex
the normal DVFS request stuck has.

This patch is for solving the problem.

Change-Id: I6671fa1149cdc657560df1bdf3d8ac6929d95ac9

[9820] hiu: enable/disable power constraint and turbo boost using dt

Change-Id: I89724d836be9b9a5475d85981a047a423372c9b6

[9820] hiu: modify API & polling thread for processing DVFS triggered by HIU HW

Change-Id: I11afdf7a32a492e19faf347a43eaa81f9b22949d

[9820] hiu: synchronize SW request and HW request using mutex

Change-Id: I7407a29da0a23422a54a70fa33f7619198faf996

[9820] hiu: do not adjust max frequency

If cpufreq_update_policy is not called,
policy's max frequency could be mis-set.

Therefore, remove max frequency update code
in cpufreq policy callback of HIU

Change-Id: I5cf7073532bc885b360cb0b47764e824fa958c52

[9820] hiu: do not write SR0 with boost threshold when turbo boosting

Change-Id: I575f61f6994f56d2c2498c0371a27f9e32dd5ea7

[9820] hiu: wait for updating sw structure by hwidvfs

Change-Id: Ie8e1387aeb2ca355679f340b7480eed0f7b1361a

[9820] hiu: do not update DVFSLIMIT unnecessarily

Change-Id: Ic3dabb9ee8ada067827dc597bbd3efc53a6cbac3

[9820] hiu: stop polling when turbo boost is released

Change-Id: I58528ee2a93ad7ec8de091daa9e0554cc8bca05f

[9820] hiu: increase polling term

Change-Id: Icd086d3231f4b1b3f2ae399511d7eb5659b6460c

[9820] hiu: check normal dvfs done in API

Change-Id: Ifec361cd4a146cb633f8b82e469d24b6cda895e6

[9820] hiu: locking when updating limit dvfs

Change-Id: I56aa95b5d14c4d89daff1708c8b79131ac0b403e

[9820] hiu: set boost level increments using dt

Change-Id: I0247aa315a20f634f5479d4ead34645321e96ea4

[9820] hiu: deal with hwi dvfs using hwi_dvfs_flag

Change-Id: Ib50268be24994751cab07c9d460d349509426fc5

[9820] hiu: update boost_max using cpufreq policy

Change-Id: I0b34be80c4a5d652e241f29d6318c23bf9ee032f

[9820] hiu: modify condition to set limit dvfs

Condition:
Only when clipped freq is higher than or equal to boost threshold

Change-Id: I588e4b0d5828f3f59ccf182674fc3aa65c920ef4

[9820] hiu: define polling period using macro

Change-Id: Idd74c36d9875f415e2bcc3f08f25a752f78d483c

[9820] hiu: bind polling thread to little

Change-Id: I54862683a1a9d765fb80d2008e0da7529c9fb23b

[9820] hiu: restore hiu data after CHT cluster exits CPD

Change-Id: I342b6e3243755f6da49374a4da76f02affe46bcc

[9820] hiu: use usleep_range instead of udelay

Change-Id: Id19a14242b2d1b25d13b540104b2da0a5543bc16

[9820] hiu: set limit dvfs with hiu data clipped_freq

Change-Id: I6e289246800d28f0f990b4a95ce1c49d084a0395

[9820] hiu: determine SR0 write in set_freq API

Change-Id: Ic5c46476b9ea6ef0b0a418a42fb2085bc7b796c1

[9820] hiu: refactoring functionality to write on SR0

Change-Id: I42ebceba7946f69fdf4242df8dbbecf5be6732bf

[9820] hiu: find policy using online cpu

Change-Id: I4f3ad4d13f348765399290b61fefa2e5a1ca150d

[9820] hiu: create polling thread when probing

Change-Id: I7a4f22b6f573e50e2eedb52aa9e54490109ecf70

[9820] hiu: lock just before cur_freq could be updated

Change-Id: I8e0d7eb2e67af8b6633c429041c6ae08b1b69e5f

[9820] hiu: force work to run only on big

Change-Id: I9a5230f407722a2293eb78fa8a1362797c0407c2
drivers/soc/samsung/Kconfig
drivers/soc/samsung/Makefile
drivers/soc/samsung/exynos-hiu.c [new file with mode: 0644]
drivers/soc/samsung/exynos-hiu.h [new file with mode: 0644]