On 19. 7. 16. 오후 10:03, Dmitry Osipenko wrote:
> 16.07.2019 14:47, Chanwoo Choi пишет:
>> On 19. 7. 8. 오전 7:32, Dmitry Osipenko wrote:
>>> There is no real need to keep interrupt always-enabled, will be nicer
>>> to keep it disabled while governor is inactive.
>>&
},
> { 1100000,60 },
> { 100, 500000 },
>
Reviewed-by: Chanwoo Choi
--
Best Regards,
Chanwoo Choi
Samsung Electronics
, you better to use 'tegra->max_freq' as following:
min(target_freq, tegra->max_freq);
> target_freq = tegra_actmon_account_cpu_freq(tegra, dev, target_freq);
>
> return target_freq;
>
--
Best Regards,
Chanwoo Choi
Samsung Electronics
const struct tegra_actmon_emc_ratio *ratio = actmon_emc_ratios;
> unsigned int cpu_freq = cpufreq_get(0);
> unsigned int i;
>
>
Reviewed-by: Chanwoo Choi
--
Best Regards,
Chanwoo Choi
Samsung Electronics
t(unsigned long val, unsigned int pct)
> +static inline unsigned long do_percent(unsigned long val, unsigned int pct)
> {
> return val * pct / 100;
> }
>
--
Best Regards,
Chanwoo Choi
Samsung Electronics
> @@ -734,6 +764,11 @@ static int tegra_governor_get_target(struct devfreq
> *devfreq,
> dev_target_freq = actmon_update_target(tegra, dev);
>
> target_freq = max(target_freq, dev_target_freq);
> +
> + dev_dbg(ddev, "%03x: upd: dev_target_freq %lu\n",
> + dev->config->offset, dev_target_freq);
> +
> + actmon_device_debug(tegra, dev, "upd");
> }
>
> *freq = target_freq * KHZ;
>
--
Best Regards,
Chanwoo Choi
Samsung Electronics
OVE_WMARK_EN;
> val |= ACTMON_DEV_CTRL_AVG_BELOW_WMARK_EN;
> - val |= ACTMON_DEV_CTRL_CONSECUTIVE_BELOW_WMARK_EN;
> val |= ACTMON_DEV_CTRL_CONSECUTIVE_ABOVE_WMARK_EN;
> val |= ACTMON_DEV_CTRL_ENB;
>
>
Maybe, I think that better to review it by Thierry.
I'm not
expression is not good
/* Reset the boost frequency on restart */
> + dev->boost_freq = 0;
> +
> target_freq = clk_get_rate(tegra->emc_clock) / KHZ;
> dev->avg_count = target_freq * ACTMON_SAMPLING_PERIOD;
> device_writel(dev, dev->avg_count
pp_remove_all_dynamic(>dev);
>
> @@ -912,7 +918,6 @@ static int tegra_devfreq_remove(struct platform_device
> *pdev)
> devfreq_remove_device(tegra->devfreq);
> devfreq_remove_governor(_devfreq_governor);
>
> - clk_notifier_unregister(tegra->emc_clock, >clk_rate_change_nb);
> dev_pm_opp_remove_all_dynamic(>dev);
>
> reset_control_reset(tegra->reset);
>
Reviewed-by: Chanwoo Choi
--
Best Regards,
Chanwoo Choi
Samsung Electronics
ra->emc_clock,
> - >rate_change_nb);
> + >clk_rate_change_nb);
> if (err) {
> dev_err(>dev,
> "Failed to register rate change notifier\n");
> @@ -823,7 +894,7 @@ static int tegra_d
.boost_up_coeff = 200,
> .boost_down_coeff = 50,
> - .boost_up_threshold = 60,
> - .boost_down_threshold = 40,
> + .boost_up_threshold = 50,
> + .boost_down_threshold = 25,
> },
> {
> /* MCCPU: memory acc
NTR_STATUS_CLEAR,
> ACTMON_DEV_INTR_STATUS);
> }
> -
> - actmon_write_barrier(tegra);
> }
>
> static int tegra_devfreq_target(struct device *dev, unsigned long *freq,
>
Reviewed-by: Chanwoo Choi
--
Best Regards,
Chanwoo Choi
Samsung Electronics
rate: %ld\n", rate);
> + err = rate;
> + goto remove_opps;
> + }
Also, this patch doesn't contain code which restore the previous
tegra->cur_freq/max_freq when error happen.
> +
> err = dev_pm_opp_add(>dev, rate, 0);
> if (err) {
> dev_err(>dev, "Failed to add OPP: %d\n", err);
>
--
Best Regards,
Chanwoo Choi
Samsung Electronics
actmon_thread_isr, IRQF_ONESHOT,
> - "tegra-devfreq", tegra);
> - if (err) {
> - dev_err(>dev, "Interrupt request failed: %d\n", err);
> - goto remove_devfreq;
> - }
> -
> return 0;
>
> -remove_devfreq:
> - devfreq_remove_device(tegra->devfreq);
> -
> remove_governor:
> devfreq_remove_governor(_devfreq_governor);
>
>
--
Best Regards,
Chanwoo Choi
Samsung Electronics
; - if (tegra->irq < 0) {
> - err = tegra->irq;
> + err = platform_get_irq(pdev, 0);
> + if (err < 0) {
> dev_err(>dev, "Failed to get IRQ: %d\n", err);
> return err;
> }
> + tegra->irq = err;
>
> reset_control_assert(tegra->reset);
>
>
Reviewed-by: Chanwoo Choi
--
Best Regards,
Chanwoo Choi
Samsung Electronics
Hi,
On 19. 7. 16. 오후 7:59, Bartlomiej Zolnierkiewicz wrote:
>
> On 7/16/19 12:33 PM, Chanwoo Choi wrote:
>> Hi Bartlomiej,
>>
>> On 19. 7. 16. 오후 7:13, Bartlomiej Zolnierkiewicz wrote:
>>>
>>> Hi Chanwoo,
>>>
>>> On 7/16/19 5:56 AM, C
Hi Bartlomiej,
On 19. 7. 16. 오후 7:13, Bartlomiej Zolnierkiewicz wrote:
>
> Hi Chanwoo,
>
> On 7/16/19 5:56 AM, Chanwoo Choi wrote:
>> Hi Kamil,
>>
>> Looks good to me. But, this patch has some issue.
>> I added the detailed reviews.
>>
>>
RC_TOP7, 16, 2),
> MUX_F(0, "mout_mau_epll_clk", mout_mau_epll_clk_p, SRC_TOP7, 20, 2,
> @@ -641,8 +656,6 @@ static const struct samsung_mux_clock exynos5x_mux_clks[]
> __initconst = {
> SRC_TOP4, 8, 1),
> MUX(0, "mout_user_aclk333_432_isp0", mout_user_aclk333_432_isp0_p,
> SRC_TOP4, 12, 1),
> - MUX(0, "mout_user_aclk266_isp", mout_user_aclk266_isp_p,
> - SRC_TOP4, 16, 1),
> MUX(0, "mout_user_aclk266", mout_user_aclk266_p, SRC_TOP4, 20, 1),
> MUX(0, "mout_user_aclk166", mout_user_aclk166_p, SRC_TOP4, 24, 1),
> MUX(CLK_MOUT_USER_ACLK333, "mout_user_aclk333", mout_user_aclk333_p,
>
I checked it on Exynos5420/5422 TRM.
Acked-by: Chanwoo Choi
--
Best Regards,
Chanwoo Choi
Samsung Electronics
ct samsung_gate_clock exynos5420_gate_clks[] __initconst = {
> @@ -798,8 +804,6 @@ static const struct samsung_div_clock exynos5x_div_clks[]
> __initconst = {
> DIV_TOP0, 8, 3),
> DIV(CLK_DOUT_ACLK200_FSYS2, "dout_aclk200_fsys2", "mout_aclk200_fsys2",
> DIV_TOP0, 12, 3),
> - DIV(CLK_DOUT_ACLK100_NOC, "dout_aclk100_noc", "mout_aclk100_noc",
> - DIV_TOP0, 20, 3),
> DIV(CLK_DOUT_PCLK200_FSYS, "dout_pclk200_fsys", "mout_pclk200_fsys",
> DIV_TOP0, 24, 3),
> DIV(CLK_DOUT_ACLK200_FSYS, "dout_aclk200_fsys", "mout_aclk200_fsys",
>
--
Best Regards,
Chanwoo Choi
Samsung Electronics
t; @@ -264,8 +288,9 @@
> #define CLK_FF_DOUT_SPLL2797
> #define CLK_DOUT_PCLK_DREX0 798
> #define CLK_DOUT_PCLK_DREX1 799
> +#define CLK_DOUT_ACLK266_ISP 800
>
> /* must be greater than maximal clock id */
> -#define CLK_NR_CLKS 800
> +#define CLK_NR_CLKS 801
>
> #endif /* _DT_BINDINGS_CLOCK_EXYNOS_5420_H */
>
--
Best Regards,
Chanwoo Choi
Samsung Electronics
t(struct device_node
> *np,
>
> if (_get_rate("fin_pll") == 24 * MHZ) {
> exynos5x_plls[apll].rate_table = exynos5420_pll2550x_24mhz_tbl;
> + exynos5x_plls[dpll].rate_table = exynos5420_pll2550x_24mhz_tbl;
> exynos5x_plls[epll].rate_table = exynos5420_epll_24mhz_tbl;
> exynos5x_plls[kpll].rate_table = exynos5420_pll2550x_24mhz_tbl;
> }
>
--
Best Regards,
Chanwoo Choi
Samsung Electronics
MUX(CLK_MOUT_SW_ACLK400_WCORE, "mout_sw_aclk400_wcore",
> + mout_sw_aclk400_wcore_p, SRC_TOP10, 16, 1),
> MUX(0, "mout_sw_aclk100_noc", mout_sw_aclk100_noc_p,
> SRC_TOP10, 20, 1),
> MUX(0, "mout_sw_pclk200_fsys", mout_sw_pclk200_fsys_p,
>
--
Best Regards,
Chanwoo Choi
Samsung Electronics
10, 4, 1),
> + MUX(CLK_MOUT_SW_ACLK400_MSCL, "mout_sw_aclk400_mscl",
> + mout_sw_aclk400_mscl_p, SRC_TOP10, 4, 1),
> MUX(CLK_MOUT_SW_ACLK200, "mout_sw_aclk200", mout_sw_aclk200_p,
> SRC_TOP10, 8, 1),
> MUX(0, "mout_sw_aclk200_fsys2", mout_sw_aclk200_fsys2_p,
>
--
Best Regards,
Chanwoo Choi
Samsung Electronics
V_TOP0, 16, 3),
> + "mout_aclk400_wcore", DIV_TOP0, 16, 3),
> };
>
> static const struct samsung_gate_clock exynos5420_gate_clks[] __initconst = {
>
Acked-by: Chanwoo Choi
If possible, you better to send it to stable mailing list
with Fixes information.
--
Best Regards,
Chanwoo Choi
Samsung Electronics
> 4 files changed, 41 insertions(+), 33 deletions(-)
Reviewed-by: Chanwoo Choi
>
> diff --git a/arch/arm/boot/dts/exynos5420.dtsi
> b/arch/arm/boot/dts/exynos5420.dtsi
> index 5fb2326875dc..0cbf74750553 100644
> --- a/arch/arm/boot/dts/exynos5420.dtsi
> +++
xynos,voltage-tolerance: the percentage value for bus voltage tolerance
> - which is used to calculate the max voltage.
>
> Detailed correlation between sub-blocks and power line according to Exynos
> SoC:
> - In case of Exynos3250, there are two power li
le);
>
>
I agree to enable the regulator before using it.
The bootloader might not enable the regulators
and the kernel need to enable regulator in order to increase
the reference count explicitly event if bootloader enables it.
Reviewed-by: Chanwoo Choi
--
Best Regards,
Chanwoo Choi
Samsung Electronics
sive = true;
> + }
>
> /* Parse the device-tree to get the resource information */
> - ret = exynos_bus_parse_of(np, bus);
> + ret = exynos_bus_parse_of(np, bus, passive);
> if (ret < 0)
> return ret;
>
> @@ -410,13 +368,10 @@ static int exynos_bus_probe(struct platform_device
> *pdev)
> goto err;
> }
>
> - node = of_parse_phandle(dev->of_node, "devfreq", 0);
> - if (node) {
> - of_node_put(node);
> + if (passive)
> goto passive;
> - } else {
> - ret = exynos_bus_parent_parse_of(np, bus);
> - }
> +
> + ret = exynos_bus_parent_parse_of(np, bus);
>
Remove unneeded blank line.
> if (ret < 0)
> goto err;
> @@ -509,6 +464,11 @@ static int exynos_bus_probe(struct platform_device *pdev)
>
> err:
> dev_pm_opp_of_remove_table(dev);
> + if (bus->opp_table) {
> + dev_pm_opp_put_regulators(bus->opp_table);
> + bus->opp_table = NULL;
> + }
> +
ditto.
Have to disable regulator after disabling the clock
to prevent the h/w fault.
I think that you should call them with following sequence:
clk_disable_unprepare(bus->clk);
if (bus->opp_table)
dev_pm_opp_put_regulators(bus->opp_table);
dev_pm_opp_of_remove_table(dev);
> clk_disable_unprepare(bus->clk);
>
> return ret;
>
--
Best Regards,
Chanwoo Choi
Samsung Electronics
Hi Arnd,
Thanks for fixup.
Reviewed-by: Chanwoo Choi
Hi Myungjoo,
This patch have to be merged for linux 5.3 before sending pull-request
because it fixed the build error of merged patch[1] on devfreq.git.
[1]
https://git.kernel.org/pub/scm/linux/kernel/git/mzx/devfreq.git/commit/?h=for-next
cumentation/media/
> @@ -6073,7 +6073,7 @@ S: Maintained
> F: drivers/extcon/
> F: include/linux/extcon/
> F: include/linux/extcon.h
> -F: Documentation/extcon/
> +F: Documentation/firmware-guide/acpi/extcon-intel-int3496.rst
> F: Documentation/devicetree/bindings/extcon/
>
> EXYNOS DP DRIVER
>
Acked-by: Chanwoo Choi
--
Best Regards,
Chanwoo Choi
Samsung Electronics
Hi Linus,
On 19. 6. 30. 오후 11:03, Linus Walleij wrote:
> The FSA9480 has a new driver more appropriately located
> in the drivers/extcon subsystem. It is also more complete
> and includes device tree support. Delete the old misc
> driver.
>
> Cc: Paweł Chmiel
> Cc: Cha
Semiconductor
FSA9480 microUSB switch and accessory detector chip which
detects the kind of external connector like usb, charger,
audio, video and so on.
2.
- Add the exception handling code for extcon-arizona.c
when using the regmap interface.
Best Regards,
Chanwoo Choi
The following changes
Hi Lukasz,
On 19. 6. 26. 오후 11:17, Lukasz Luba wrote:
> Hi Krzysztof,
>
> On 6/26/19 4:03 PM, Krzysztof Kozlowski wrote:
>> On Wed, 26 Jun 2019 at 15:58, Lukasz Luba wrote:
>>>
>>> Hi Chanwoo,
>>>
>>> On 6/26/19 10:23 AM, Chanwoo Choi wro
383:2: error: implicit declaration of
> function ‘i2c_add_driver’ [-Werror=implicit-function-declaration]
> return i2c_add_driver(_i2c_driver);
> ../drivers/extcon/extcon-fsa9480.c: In function ‘fsa9480_module_exit’:
> ../drivers/extcon/extcon-fsa9480.c:389:2: error: implicit dec
Hello Sibi and Hsin-Yi,
On 19. 6. 20. 오후 6:41, Sibi Sankar wrote:
> Hey Hsin-Yi, Chanwoo
>
> On 2019-06-20 15:02, Hsin-Yi Wang wrote:
>> Hi Chanwoo Choi, Saravana Kannan and Sibi Sankar,
>>
>> I've also tested Sibi Sankar's patch[1] locally with mt8183-cci, and
&g
_target_freq(struct devfreq
> *devfreq,
> *freq = child_freq;
>
> out:
> + if (!IS_ERR_OR_NULL(opp))
> + dev_pm_opp_put(p_opp);
> +
> return ret;
> }
>
>
I agree this approach. It is necessary.
Acked-by: Chanwoo Choi
--
Best Regards,
Chanwoo Choi
Samsung Electronics
e/linux/devfreq.h
> index fbffa74bfc1b..0d877c9513d7 100644
> --- a/include/linux/devfreq.h
> +++ b/include/linux/devfreq.h
> @@ -156,6 +156,7 @@ struct devfreq {
> struct devfreq_dev_profile *profile;
> const struct devfreq_governor *governor;
> char governor
On 19. 6. 25. 오후 4:31, Lukasz Luba wrote:
>
>
> On 6/22/19 3:10 PM, Chanwoo Choi wrote:
>> Hi,
>>
>> 2019년 6월 14일 (금) 오후 6:54, Lukasz Luba 님이 작성:
>>>
>>> Define new performance events supported by Exynos5422 SoC counters.
>>> The counters
On 19. 6. 8. 오전 6:24, Linus Walleij wrote:
> On Tue, Jun 4, 2019 at 3:30 AM Chanwoo Choi wrote:
>> On 19. 5. 31. 오전 3:39, Linus Walleij wrote:
>
>>> + /*
>>> + * It is unlikely that this is an acknowledged interrupt that goes
>>> + * a
t;
Applied this series to extcon-next
after checked the build warning on extcon-testing branch.
Thanks.
--
Best Regards,
Chanwoo Choi
Samsung Electronics
Hi Dmitry,
On 19. 6. 24. 오전 2:17, Dmitry Osipenko wrote:
> 05.06.2019 2:09, Dmitry Osipenko пишет:
>> 04.06.2019 3:49, Chanwoo Choi пишет:
>>> On 19. 6. 4. 오전 1:52, Dmitry Osipenko wrote:
>>>> 03.05.2019 3:52, Dmitry Osipenko пишет:
>>>>> 03.05.20
On 19. 6. 24. 오전 4:16, Krzysztof Kozlowski wrote:
> On Sun, 23 Jun 2019 at 06:31, Chanwoo Choi wrote:
>>
>> Hi Krzysztof,
>>
>> 2019년 6월 23일 (일) 오전 4:20, Krzysztof Kozlowski 님이 작성:
>>>
>>> Enable support for Mali GPU with Panfrost and Lima drive
ed the simple_ondmenad governor of devfreq.
Why do you remove this configuration from the defconfig?
> CONFIG_EXTCON_USB_GPIO=y
> CONFIG_EXTCON_USBC_CROS_EC=y
> CONFIG_MEMORY=y
> --
> 2.17.1
>
--
Best Regards,
Chanwoo Choi
Hi,
2019년 6월 23일 (일) 오전 6:42, Saravana Kannan 님이 작성:
>
> On Sat, Jun 22, 2019 at 4:50 AM Chanwoo Choi wrote:
> >
> > Hi,
> >
> > Absolutely, I like this approach. I think that it is necessary to make
> > the connection
> > between frequencies of devices.
NT(dmc0_1),
> + PPMU_EVENT(dmc1_0),
> + PPMU_EVENT(dmc1_1),
> };
>
> static int exynos_ppmu_find_ppmu_id(struct devfreq_event_dev *edev)
> --
> 2.17.1
>
Acked-by: Chanwoo Choi
--
Best Regards,
Chanwoo Choi
Hi,
I applied this series to extcon-testing branch.
If there are no build problem for few days, I'll move them to
extcon-next branch.
Best Regards,
Chanwoo Choi
2019년 6월 21일 (금) 오후 8:14, Paweł Chmiel 님이 작성:
>
> This small patchset adds support for Fairchild Semiconductor FSA9480
>
atic int devfreq_passive_get_target_freq(struct devfreq
> *devfreq,
> *freq = child_freq;
>
> out:
> + if (!IS_ERR_OR_NULL(opp_table))
> + dev_pm_opp_put_opp_table(opp_table);
> + if (!IS_ERR_OR_NULL(c_opp_table))
> + dev_pm_opp_put_opp_table(c_opp_table);
> + if (!IS_ERR_OR_NULL(opp))
> + dev_pm_opp_put(opp);
> +
> return ret;
> }
>
> --
> 2.22.0.410.gd8fdbe21b5-goog
>
--
Best Regards,
Chanwoo Choi
rc_table
> return -ENOTSUPP;
> }
>
> +static inline struct dev_pm_opp *dev_pm_opp_xlate_opp(
> + struct opp_table *src_table,
> + struct opp_table *dst_table,
> + struct dev_pm_opp *src_opp)
> +{
> + return NULL;
> +}
> +
> static inline int dev_pm_opp_set_rate(struct device *dev, unsigned long
> target_freq)
> {
> return -ENOTSUPP;
> --
> 2.22.0.410.gd8fdbe21b5-goog
>
--
Best Regards,
Chanwoo Choi
extcon-adc-jack,
have to find the proper compatible name indicating the device connector
and defines the properties to get the ADC value from devicetree.
--
Best Regards,
Chanwoo Choi
Samsung Electronics
Hi Enric,
For extcon parth,
Acked-by: Chanwoo Choi
Best Regards,
Chanwoo Choi
On 19. 6. 15. 오전 1:36, Enric Balletbo i Serra wrote:
> Now, the ChromeOS EC core driver has nothing related to an MFD device, so
> move that driver from the MFD subsystem to the platform/chrome subsystem.
>
Hi Enric,
For extcon part,
Acked-by: Chanwoo Choi
Best Regards,
Chanwoo choi
On 19. 6. 15. 오전 1:36, Enric Balletbo i Serra wrote:
> There is a bit of mess between cros-ec mfd includes and platform
> includes. For example, we have a linux/mfd/cros_ec.h include that
> exports the
support to passive_governor
-
https://lore.kernel.org/lkml/08c3cff8c39e3d82e044db93e992d...@codeaurora.org/T/#m1cafb7baf687d2a680d39c85d3ec7d1b590b68fc
Best Regards,
Chanwoo Choi
On 19. 6. 18. 오후 1:14, Hsin-Yi Wang wrote:
> From: Saravana Kannan
>
> From: Saravana Kannan
>
* is attached or detached.
>*/
> - ret = devm_request_any_context_irq(dev, data->irq,
> - gpio_irq_handler, data->irq_flags,
> + ret = devm_request_any_context_irq(dev, irq,
> + gpio_irq_handler, irq_flags,
> pdev->name, data);
> if (ret < 0)
> return ret;
>
--
Best Regards,
Chanwoo Choi
Samsung Electronics
On 19. 6. 4. 오전 1:52, Dmitry Osipenko wrote:
> 03.05.2019 3:52, Dmitry Osipenko пишет:
>> 03.05.2019 3:31, Chanwoo Choi пишет:
>>> Hi Dmitry,
>>>
>>> On 19. 5. 2. 오전 8:37, Dmitry Osipenko wrote:
>>>> Changelog:
>>>>
>>>>
+ ret = regmap_update_bits_check(arizona->regmap, ARIZONA_MIC_DETECT_1,
> +ARIZONA_MICD_ENA, 0,
> +);
> + if (ret < 0) {
> + dev_err(>dev, "Failed to disable micd on remove: %d\n",
> + ret);
> + } else if (change) {
> regulator_disable(info->micvdd);
> pm_runtime_put(info->dev);
> }
>
Applied it. Thanks.
--
Best Regards,
Chanwoo Choi
Samsung Electronics
;
> + bool change = false;
>
> regmap_update_bits_check(arizona->regmap, ARIZONA_MIC_DETECT_1,
>ARIZONA_MICD_ENA, 0,
You better to check the return value as the part of this patch.
--
Best Regards,
Chanwoo Choi
Samsung Electronics
sible, this patch should be ongoing on either
now or future. Thanks.
>
> On 2019-04-12 13:09, Chanwoo Choi wrote:
>> Hi,
>>
>> I agree this approach absolutely.
>> Just I add some comments. Please check it.
>>
>> On 19. 3. 29. 오전 12:28, Sibi Sankar wrote:
>
Hi Rob,
You're right. It have to be posted to sta...@vger.kernel.org.
As you recommended, I send it[1] to sta...@vger.kernel.org for fixup.
[1]https://lkml.org/lkml/2019/5/27/547
Best Regards,
Chanwoo Choi
On 19. 5. 24. 오후 10:15, Rob Clark wrote:
> Ahh, thanks, I've not moved to the latest
Cc: sta...@vger.kernel.org
Dear all,
It missed to send this patch to 'sta...@vger.kernel.org'.
So, I add it to mailing list.
Regards,
Chanwoo Choi
On 19. 3. 13. 오후 9:22, Enric Balletbo i Serra wrote:
> The patch 23c7b54ca1cd: "PM / devfreq: Fix devfreq_add_device() when
> driver
Hi,
This issue[1] is already fixed on latest linux.git
You can check it. Thanks.
[1]
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=b53b0128052ffd687797d5f4deeb76327e7b5711
Regards,
Chanwoo Choi
On 19. 5. 24. 오전 6:58, Rob Clark wrote:
> From: Rob Cl
On 19. 5. 7. 오후 5:51, Lukasz Luba wrote:
> Hi Chanwoo,
>
> On 5/7/19 9:33 AM, Chanwoo Choi wrote:
>> Hi Lukasz,
>>
>> On 19. 5. 7. 오전 12:11, Lukasz Luba wrote:
>>> Define new IDs for clocks used by Dynamic Memory Controller in
>>> Exynos5422 SoC.
_PPMU_DREX0_1, "aclk_ppmu_drex0_1", "dout_aclk_cdrex1",
> + GATE_BUS_CDREX1, 14, CLK_IGNORE_UNUSED, 0),
> + GATE(CLK_ACLK_PPMU_DREX0_0, "aclk_ppmu_drex0_0", "dout_aclk_cdrex1",
> + GATE_BUS_CDREX1, 15, CLK_IGNORE_UNUSED, 0),
> +
> + GATE(CLK_PCLK_PPMU_DREX1_1, "pclk_ppmu_drex1_1", "dout_pclk_cdrex",
> + GATE_BUS_CDREX1, 26, CLK_IGNORE_UNUSED, 0),
> + GATE(CLK_PCLK_PPMU_DREX1_0, "pclk_ppmu_drex1_0", "dout_pclk_cdrex",
> + GATE_BUS_CDREX1, 27, CLK_IGNORE_UNUSED, 0),
> + GATE(CLK_PCLK_PPMU_DREX0_1, "pclk_ppmu_drex0_1", "dout_pclk_cdrex",
> + GATE_BUS_CDREX1, 28, CLK_IGNORE_UNUSED, 0),
> + GATE(CLK_PCLK_PPMU_DREX0_0, "pclk_ppmu_drex0_0", "dout_pclk_cdrex",
> + GATE_BUS_CDREX1, 29, CLK_IGNORE_UNUSED, 0),
> };
>
> static const struct samsung_div_clock exynos5x_disp_div_clks[] __initconst =
> {
>
If you fix minor issue about adding the unneeded blanke line,
feel free to add my acked-by tag:
Acked-by: Chanwoo Choi
--
Best Regards,
Chanwoo Choi
Samsung Electronics
able = exynos5420_pll2550x_24mhz_tbl;
> + else
> + exynos5x_plls[bpll].rate_table = exynos5422_bpll_rate_table;
> +
> samsung_clk_register_pll(ctx, exynos5x_plls, ARRAY_SIZE(exynos5x_plls),
> reg_base);
> samsung_clk_register_fixed_rate(ctx, exynos5x_fixed_rate_clks,
>
Acked-by: Chanwoo Choi
--
Best Regards,
Chanwoo Choi
Samsung Electronics
> +#define CLK_DOUT_CCLK_DREX0 796
> +#define CLK_DOUT_CLK2X_PHY0 797
> +#define CLK_DOUT_PCLK_CORE_MEM 798
> +#define CLK_FF_DOUT_SPLL2799
>
> /* must be greater than maximal clock id */
> -#define CLK_NR_CLKS 797
> +#define CLK_NR_CLKS 800
>
> #endif /* _DT_BINDINGS_CLOCK_EXYNOS_5420_H */
>
--
Best Regards,
Chanwoo Choi
Samsung Electronics
driver should disable the DDR ODT.
>
> Signed-off-by: Enric Balletbo i Serra
> Reviewed-by: Chanwoo Choi
> Signed-off-by: Gaël PORTAY
> Acked-by: MyungJoo Ham
> ---
>
> Changes in v5: None
>
> Changes in v4:
> - [PATCH v3 3/5] Add Acked-by: MyungJoo Ham .
> Acked-by: Chanwoo Choi
> Signed-off-by: Gaël PORTAY
> Acked-by: MyungJoo Ham
> ---
>
> Changes in v5: None
>
> Changes in v4:
> - [PATCH v3 1/5] Add Acked-by: MyungJoo Ham .
>
> Changes in v3:
> - [PATCH v2 1/5] Add Signed-off-by: Gaël PORTAY .
>
> C
Hi Dmitry,
On 19. 5. 2. 오전 8:37, Dmitry Osipenko wrote:
> Changelog:
>
> v4: Addressed all review comments that were made by Chanwoo Choi to v3:
>
> - changed the driver removal order to match the probe exactly
> - added clarifying comment for 1/8 ratio to
)
+ exynos5x_plls[bpll].rate_table
+ = exynos5422_bpll_rate_table;
}
> }
>
> samsung_clk_register_pll(ctx, exynos5x_plls, ARRAY_SIZE(exynos5x_plls),
>
--
Best Regards,
Chanwoo Choi
Samsung Electronics
Hi Lukasz,
On 19. 5. 1. 오전 5:30, Lukasz Luba wrote:
> Hi Chanwoo,
>
> On 4/30/19 6:46 AM, Chanwoo Choi wrote:
>> On 19. 4. 19. 오후 11:19, Lukasz Luba wrote:
>>> The patch adds description for DT binding for a new Exynos5422 Dynamic
>>> Memory Controller device.
&
Hi Lukasz,
On 19. 5. 1. 오전 6:19, Lukasz Luba wrote:
> Hi Chanwoo,
>
> On 4/30/19 9:34 AM, Chanwoo Choi wrote:
>> Hi Lukasz,
>>
>> On 19. 4. 19. 오후 10:48, Lukasz Luba wrote:
>>> This patch adds posibility to choose what type of data should be counted
>>
freq_events(struct device_node *np,
continue;
}
- desc[j].ops = event_ops;
+ switch (info->ppmu_type) {
+ case EXYNOS_TYPE_PPMU:
+ desc[j].ops = _ppmu_ops;
+ break;
+ case EXYNOS_TYPE_PPMU_V2:
+ desc[j].ops = _ppmu_v2_ops;
+ break;
+ }
+
--
Best Regards,
Chanwoo Choi
Samsung Electronics
events {
+ ppmu_dmc0_3: ppmu-event3-dmc0 {
+ event-name = "ppmu-event3-dmc0";
+ event-data-type = <(PPMU_RO_DATA_CNT |
+ PPMU_WO_DATA_CNT)>;
+ };
+ };
+ };
--
Best Regards,
Chanwoo Choi
Samsung Electronics
-ppmu-common.dtsi
> +++ b/arch/arm/boot/dts/exynos4412-ppmu-common.dtsi
> @@ -6,12 +6,16 @@
> * Author: Chanwoo Choi
> */
>
> +#include
> +
> _dmc0 {
> status = "okay";
>
> events {
> ppmu_dmc0_3: ppmu-event3-dmc0 {
Hi,
I agree of this patch. But, I add the minor comments.
If you edit them according to my comment, feel free to add my following tag:
Acked-by: Chanwoo Choi
On 19. 4. 19. 오후 10:48, Lukasz Luba wrote:
> This patch add support of a new feature which can be used in DT:
> Performance Moni
fine CLK_CDREX_PAUSE 531
> +#define CLK_CDREX_TIMING_SET 532
I cannot find the usage code of both CLK_CDREX_PAUSE
and CLK_CDREX_TIMING_SET in these patchset.
Please remove them.
(snip)
--
Best Regards,
Chanwoo Choi
Samsung Electronics
"mout_mx_mspll_ccore_phy",
> + "mout_mclk_cdrex",
> + "dout_clk2x_phy0",
> + "clkm_phy0",
> + "clkm_phy1";
> + status = "okay";
> + operating-points-v2 = <_opp_table>;
> + devfreq-events = <_event3_dmc0_0>, <_event3_dmc0_1>,
> + <_event3_dmc1_0>, <_event3_dmc1_1>;
> + operating-points-v2 = <_opp_table>;
> + device-handle = <_K3QF2F20DB>;
> + vdd-supply = <_reg>;
> + };
>
--
Best Regards,
Chanwoo Choi
Samsung Electronics
.
(CLKDIV_PCLK_CDREX, CLKDIV_PCLK_DREX0, CLKDIV_PCLK_DREX1)
If they are scattered, it is difficult for understanding
why they are developed like this.
[1] [v4,2/8] clk: samsung: add new clocks for DMC for Exynos5422 SoC
- https://lkml.org/lkml/2019/2/12/12
Regards,
Chanwoo Choi
On 19. 4. 19. 오후 11:19
651,10 @@ static int tegra_devfreq_probe(struct platform_device
> *pdev)
> tegra->max_freq = clk_round_rate(tegra->emc_clock, ULONG_MAX) / KHZ;
> tegra->cur_freq = clk_get_rate(tegra->emc_clock) / KHZ;
>
> - actmon_writel(tegra, ACTMON_SAMPLING_PERIOD - 1,
> -
Hi Dmitry,
Looks good to me. But, just I have one minor comment
about '8' divider value in the tegra_devfreq_get_dev_status().
On the next version, you better to add the comment about the meaning
of '8' divider value.
Reviewed-by: Chanwoo Choi
On 19. 4. 18. 오전 7:29, Dmitry Osipenko wrote
evices[i], val, ACTMON_DEV_CTRL);
> - }
> -
> - actmon_write_barrier(tegra);
>
> - devm_free_irq(>dev, irq, tegra);
> + devfreq_remove_device(tegra->devfreq);
> + dev_pm_opp_remove_all_dynamic(>dev);
>
> clk_notifier_unregister(tegra->emc_clock, >rate_change_nb);
nitpick: the probe function has following call sequence if error case,
First, clk_notifier_unregister()
Second, dev_pm_opp_remove_all_dynamic()
If possible, you better to keep the same sequence
in the tegra_devfreq_remove(). But, it is just opinion.
If you think that it doesn't break the routine of device removal,
jut keep this code.
>
> + reset_control_reset(tegra->reset);
> clk_disable_unprepare(tegra->clock);
>
> return 0;
>
Reviewed-by: Chanwoo Choi
--
Best Regards,
Chanwoo Choi
Samsung Electronics
rr = devm_request_threaded_irq(>dev, tegra->irq, NULL,
> actmon_thread_isr, IRQF_ONESHOT,
> "tegra-devfreq", tegra);
> if (err) {
>
It is ok to disable the hardware interrupt line
before completing the some operation about registers
in order to protect the interrupt occur.
Reviewed-by: Chanwoo Choi
--
Best Regards,
Chanwoo Choi
Samsung Electronics
a build error for extcon-axp.c
Best Regards,
Chanwoo Choi
The following changes since commit 86baf800de84eb89615c138d368b14bff5ee7d8a:
extcon: ptn5150: fix COMPILE_TEST dependencies (2019-04-05 10:08:37 +0900)
are available in the git repository at:
git://git.kernel.org/pub/scm/linux/kernel
dev->regs = tegra->regs + dev->config->offset;
> - spin_lock_init(>lock);
>
> tegra_actmon_configure_device(tegra, dev);
> }
> @@ -700,8 +681,8 @@ static int tegra_devfreq_probe(struct platform_device
> *pdev)
>
> platform_set_drvdata(pdev, tegra);
>
> - err = devm_request_threaded_irq(>dev, irq, actmon_isr,
> - actmon_thread_isr, IRQF_SHARED,
> + err = devm_request_threaded_irq(>dev, irq, NULL,
> + actmon_thread_isr, IRQF_ONESHOT,
> "tegra-devfreq", tegra);
> if (err) {
> dev_err(>dev, "Interrupt request failed\n");
>
Looks good to me.
Reviewed-by: Chanwoo Choi
--
Best Regards,
Chanwoo Choi
Samsung Electronics
+ err = clk_set_rate(tegra->emc_clock, 0);
> + if (err)
> + goto restore_min_rate;
>
> return 0;
> +
> +restore_min_rate:
> + clk_set_min_rate(tegra->emc_clock, devfreq->previous_freq);
> +
> + return err;
> }
>
> static int tegra_devfreq_get_dev_status(struct device *dev,
>
Reviewed-by: Chanwoo Choi
--
Best Regards,
Chanwoo Choi
Samsung Electronics
> # DEVFREQ Event Drivers
> obj-$(CONFIG_PM_DEVFREQ_EVENT) += event/
> diff --git a/drivers/devfreq/tegra-devfreq.c
> b/drivers/devfreq/tegra30-devfreq.c
> similarity index 100%
> rename from drivers/devfreq/tegra-devfreq.c
> rename to drivers/devfreq/tegra30-devfreq.c
>
Reviewed-by: Chanwoo Choi
--
Best Regards,
Chanwoo Choi
Samsung Electronics
44
> --- a/drivers/devfreq/tegra-devfreq.c
> +++ b/drivers/devfreq/tegra-devfreq.c
> @@ -738,6 +738,7 @@ static int tegra_devfreq_remove(struct platform_device
> *pdev)
> }
>
> static const struct of_device_id tegra_devfreq_of_match[] = {
> + { .compatible = &q
Dear Greg,
On 19. 4. 16. 오후 7:46, Greg KH wrote:
> On Fri, Apr 05, 2019 at 10:21:25AM +0900, Chanwoo Choi wrote:
>> Dear Greg,
>>
>> This is extcon-fixes pull request for v5.1-rc4. I add detailed description of
>> this pull request on below. Please pull extcon with fo
se default data type.
>
Looks good to me.
But, If you want to add the new 'event-data-type' property,
you better to add 'event-data-type' to Exynos dts file including
PPMU device.
If the dts file contain the data type information,
I think it is easy to understand for the user
what is monitoring on PPMU device.
--
Best Regards,
Chanwoo Choi
Samsung Electronics
data_type describes what is going to be counted in the register.
> + * It might choose to count e.g. read requests, write data in bytes, etc.
> + * The full supported list of types is present in specyfic header in:
> + * include/dt-bindings/pmu/.
Why did you make the path name as the 'pmu' instead of 'ppmu'?
It might have some confusion because 'pmu' has
the two meaning in linux kernel.
- PMU, Power Management Unit
- PMU, Performance Monitoring Unit
> */
> struct devfreq_event_desc {
> const char *name;
> + u32 data_type;
> void *driver_data;
>
> const struct devfreq_event_ops *ops;
>
--
Best Regards,
Chanwoo Choi
Samsung Electronics
+#define PPMU_RO_LATENCY 0x12
> +#define PPMU_WO_LATENCY 0x16
> +#define PPMU_V2_EVT3_RW_DATA_CNT 0x22
If we can select the data type for monitoring, it looks good to me.
But, when I developed the Exynos PPMU, I has not tested other data type
except for PPMU_RO_DATA_CNT and PPMU_WO_DATA_CNT.
Do you test all data types with PPMU device?
> +
> +#endif
>
--
Best Regards,
Chanwoo Choi
Samsung Electronics
+ offset);
> + return readl_relaxed(dev->regs + offset);
> }
>
> static void device_writel(struct tegra_devfreq_device *dev, u32 val,
> u32 offset)
> {
> - writel(val, dev->regs + offset);
> + writel_relaxed(val, dev->regs + offset);
>
Hi,
On 19. 4. 16. 오후 11:29, Dmitry Osipenko wrote:
> 16.04.2019 5:32, Chanwoo Choi пишет:
>> Hi,
>>
>> patch6/7/8/9 are for handling of exception handling in probe() function.
>> Actually, I'm not sure that there are special reason to split out
>> the patches. I t
On 19. 4. 16. 오후 10:57, Dmitry Osipenko wrote:
> 16.04.2019 11:00, Chanwoo Choi пишет:
>> Hi,
>>
>> On 19. 4. 15. 오후 11:54, Dmitry Osipenko wrote:
>>> The write memory barrier isn't needed because the BUS buffer is flushed
>>> by read after write that happen
Hi,
On 19. 4. 17. 오전 12:40, Dmitry Osipenko wrote:
> 16.04.2019 10:15, Chanwoo Choi пишет:
>> Hi,
>>
>> On 19. 4. 15. 오후 11:54, Dmitry Osipenko wrote:
>>> The frequency value potentially could change in-between. It doesn't
>>> cause any real problem
Hi,
On 19. 4. 17. 오전 12:23, Dmitry Osipenko wrote:
> 16.04.2019 8:56, Chanwoo Choi пишет:
>> Hi,
>>
>> It looks good to me to drop the primary interrupt handler
>> but I have some comments. Please check it.
>>
>> On 19. 4. 15. 오후 11:54, Dmitry Os
On 19. 4. 17. 오전 12:49, Dmitry Osipenko wrote:
> 16.04.2019 10:48, Chanwoo Choi пишет:
>> Hi,
>>
>> On 19. 4. 15. 오후 11:55, Dmitry Osipenko wrote:
>>> The devfreq driver can be used on Tegra30 without any code change and
>>> it works perfectly fine, the defa
On 19. 4. 17. 오전 12:52, Dmitry Osipenko wrote:
> 16.04.2019 10:43, Chanwoo Choi пишет:
>> On 19. 4. 15. 오후 11:55, Dmitry Osipenko wrote:
>>> The driver's compilation doesn't have any specific dependencies, hence
>>> the COMPILE_TEST option can be supported in Kconfig.
&g
Hi,
On 19. 4. 17. 오전 1:11, Dmitry Osipenko wrote:
> 16.04.2019 11:31, Chanwoo Choi пишет:
>> Hi,
>>
>> On 19. 4. 15. 오후 11:55, Dmitry Osipenko wrote:
>>> Add devfreq driver for NVIDIA Tegra20 SoC's. The driver periodically
>>> reads out Memory Controlle
> +
> +- operating-points-v2: for cci devfreq opp table
> +
> +Example:
> + cci: cci {
> + compatible = "mediatek,cci";
> + clocks = < CLK_APMIXED_CCIPLL>;
> + clock-names = "cci_clock";
> + operating-points-v2 = <_opp>;
> + };
> +
>
--
Best Regards,
Chanwoo Choi
Samsung Electronics
> + { },
> +};
> +MODULE_DEVICE_TABLE(of, mediatek_cci_devfreq_of_match);
> +
> +static struct platform_driver cci_devfreq_driver = {
> + .probe = mtk_cci_devfreq_probe,
> + .driver = {
> + .name = "mediatek-cci-devfreq",
> + .of_match_table = mediatek_cci_devfreq_of_match,
> + },
> +};
> +
> +static int __init mtk_cci_devfreq_init(void)
> +{
> + int ret;
> +
> + ret = devfreq_add_governor(_cci_devfreq_governor);
> + if (ret) {
> + pr_err("%s: failed to add governor: %d\n", __func__, ret);
> + return ret;
> + }
> +
> + ret = platform_driver_register(_devfreq_driver);
> + if (ret)
> + devfreq_remove_governor(_cci_devfreq_governor);
> +
> + return ret;
> +}
> +module_init(mtk_cci_devfreq_init)
> +
> +static void __exit mtk_cci_devfreq_exit(void)
> +{
> + int ret;
> +
> + ret = devfreq_remove_governor(_cci_devfreq_governor);
> + if (ret)
> + pr_err("%s: failed to remove governor: %d\n", __func__, ret);
> +
> + platform_driver_unregister(_devfreq_driver);
> +}
> +module_exit(mtk_cci_devfreq_exit)
> +
> +MODULE_DESCRIPTION("Mediatek CCI devfreq driver");
> +MODULE_AUTHOR("Andrew-sh.Cheng ");
> +MODULE_LICENSE("GPL v2");
>
--
Best Regards,
Chanwoo Choi
Samsung Electronics
401 - 500 of 7212 matches
Mail list logo