Dear Greg,
Gently ping.
Best Regards,
Chanwoo Choi
On 19. 4. 5. 오전 10:21, 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 following updates.
>
> Best
q_profile,
> + DEVFREQ_GOV_SIMPLE_ONDEMAND, NULL);
> + if (IS_ERR(tegra->devfreq))
> + return PTR_ERR(tegra->devfreq);
> +
> + return 0;
> +}
> +
> +static int tegra_devfreq_remove(struct platform_device *pdev)
> +{
> + struct tegra_devfreq *tegra = platform_get_drvdata(pdev);
> +
> + devfreq_remove_device(tegra->devfreq);
> + dev_pm_opp_remove_all_dynamic(&pdev->dev);
> +
> + return 0;
> +}
> +
> +static struct platform_driver tegra_devfeq_driver = {
> + .probe = tegra_devfeq_probe,
> + .remove = tegra_devfreq_remove,
> + .driver = {
> + .name = "tegra20-devfreq",
How can you bind this driver without compatible name for Devicetree?
And I tried to find the name ("tegra20-devfreq") in
the MFD drivers.
> + },
> +};
> +module_platform_driver(tegra_devfeq_driver);
> +
> +MODULE_ALIAS("platform:tegra20-devfreq");
> +MODULE_AUTHOR("Dmitry Osipenko ");
> +MODULE_DESCRIPTION("NVIDIA Tegra20 devfreq driver");
> +MODULE_LICENSE("GPL v2");
>
--
Best Regards,
Chanwoo Choi
Samsung Electronics
using the wmb().
But, this patch edits it as following:
The result of the following two cases are same?
[original code]
wmb()
read_relaxed()
[new code by this patch]
readl_relaxed()
rmb()
> }
>
> static void actmon_isr_device(struct tegra_devfreq *tegra,
>
--
Best Regards,
Chanwoo Choi
Samsung Electronics
drivers/devfreq/tegra-devfreq.c
> @@ -719,6 +719,7 @@ static int tegra_devfreq_remove(struct platform_device
> *pdev)
> }
>
> static const struct of_device_id tegra_devfreq_of_match[] = {
> + { .compatible = "nvidia,tegra30-actmon" },
> { .compatible = "nvidia,tegra124-actmon" },
> { },
> };
>
Reviewed-by: Chanwoo Choi
--
Best Regards,
Chanwoo Choi
Samsung Electronics
't need to make it a separate patch.
You can merge this patch to patch17 and then drop this patch.
--
Best Regards,
Chanwoo Choi
Samsung Electronics
goto disable_interrupt;
> + goto remove_devfreq;
> }
>
> return 0;
>
> -disable_interrupt:
> - free_irq(irq, tegra);
> -
> remove_devfreq:
> devfreq_remove_device(tegra->devfreq);
>
> @@ -727,10 +728,8
driver_unregister(&tegra_devfreq_driver);
> -
> - ret = devfreq_remove_governor(&tegra_devfreq_governor);
> - if (ret)
> - pr_err("%s: failed to remove governor: %d\n", __func__, ret);
> -}
> -module_exit(tegra_devfreq_exit)
> +module_platform_driver(tegra_devfreq_driver);
>
> MODULE_LICENSE("GPL v2");
> MODULE_DESCRIPTION("Tegra devfreq driver");
>
Looks good to me.
Reviewed-by : Chanwoo Choi
--
Best Regards,
Chanwoo Choi
Samsung Electronics
/drivers/devfreq/tegra-devfreq.c
> @@ -593,6 +593,7 @@ static struct devfreq_governor tegra_devfreq_governor = {
> .name = "tegra_actmon",
> .get_target_freq = tegra_governor_get_target,
> .event_handler = tegra_governor_event_handler,
> + .immuta
target()
clk_set_min_rate(emc_rate, )
tegra_actmon_rate_notify_cb()
tegra->cur_freq = data->new_rate / KHZ;
clk_set_rate(emc_rate, )
tegra_actmon_rate_notify_cb()
tegra->cur_freq = data->new_rate / KHZ;
}
--
Best Regards,
Chanwoo Choi
Samsung Electronics
;
> -
> - for (i = 0; i < ARRAY_SIZE(actmon_device_configs); i++) {
> - val = device_readl(&tegra->devices[i], ACTMON_DEV_CTRL);
> - val &= ~ACTMON_DEV_CTRL_ENB;
> - device_writel(&tegra->devices[i], val, ACTMON_DEV_CTRL);
> - }
> -
> - actmon_write_barrier(tegra);
> -
> - devm_free_irq(&pdev->dev, irq, tegra);
>
> clk_notifier_unregister(tegra->emc_clock, &tegra->rate_change_nb);
> + free_irq(irq, tegra);
> +
> + devfreq_remove_device(tegra->devfreq);
> + dev_pm_opp_remove_all_dynamic(&pdev->dev);
>
> + reset_control_reset(tegra->reset);
> clk_disable_unprepare(tegra->clock);
>
> return 0;
>
--
Best Regards,
Chanwoo Choi
Samsung Electronics
->config->offset;
> - spin_lock_init(&dev->lock);
>
> tegra_actmon_configure_device(tegra, dev);
> }
> @@ -696,8 +679,8 @@ static int tegra_devfreq_probe(struct platform_device
> *pdev)
> return err;
> }
>
> - err = devm_request_threaded_irq(&pdev->dev, irq, actmon_isr,
> - actmon_thread_isr, IRQF_SHARED,
> + err = devm_request_threaded_irq(&pdev->dev, irq, NULL,
> + actmon_thread_isr, IRQF_ONESHOT,
> "tegra-devfreq", tegra);
> if (err) {
> dev_err(&pdev->dev, "Interrupt request failed\n");
>
--
Best Regards,
Chanwoo Choi
Samsung Electronics
&tegra_devfreq_profile,
>"tegra_actmon",
>NULL);
> + if (IS_ERR(tegra->devfreq)) {
> + err = PTR_ERR(tegra->devfreq);
> + return err;
> + }
>
> return 0;
> }
>
--
Best Regards,
Chanwoo Choi
Samsung Electronics
ck driver
and it's well working until this code, actually, it is not necessary.
Looks good to me.
Reviewed-by: Chanwoo Choi
> tegra->rate_change_nb.notifier_call = tegra_actmon_rate_notify_cb;
> err = clk_notifier_register(tegra->emc_clock, &tegra->rate_change_nb);
> if (err) {
>
--
Best Regards,
Chanwoo Choi
Samsung Electronics
m clock for tegra->emc_clock
when failed to execute 'clk_set_rate(tegra->emc_clock, 0);'?
I think that if you control the restoring the previous minimum clock,
it is more nice to handle the error handling.
> + return err;
>
> return 0;
> }
>
--
Best Regards,
Chanwoo Choi
Samsung Electronics
nt_frequency = tegra->cur_freq * KHZ;
>
> /* To be used by the tegra governor */
> stat->private_data = tegra;
> @@ -565,7 +563,7 @@ static int tegra_governor_get_target(struct devfreq
> *devfreq,
> target_freq = max(target_freq, dev->target_freq
27;s
As I commented above, how about using 'cpu_state' instead of 'state'?
in order to get the meaning from just variable name.
nitpick. Also, I think that you can skip 'holds' from the description
of 'state' variable.
> + * @map: holds the maps between cpu frequency and device frequency
How about using 'cpufreq_map' instead of 'map' for the readability?
IMHO, Because this variable is only used when parent device is cpu.
I think that if you add to specify the meaningful prefix about cpu to variable
name,
it is easy to catch the meaning of variable.
- map -> cpufreq_map.
nitpick. Also, I think that you can skip 'holds' from the description
of 'map' variable.
> *
> * The devfreq_passive_data have to set the devfreq instance of parent
> * device with governors except for the passive governor. But, don't need to
> - * initialize the 'this' and 'nb' field because the devfreq core will handle
> - * them.
> + * initialize the 'this', 'nb', 'state' and 'map' field because the devfreq
If you agree my opinion above,
- state -> cpu_state.
- map -> cpufreq_map
> + * core will handle them.
> */
> struct devfreq_passive_data {
> /* Should set the devfreq instance of parent device */
> @@ -291,9 +325,14 @@ struct devfreq_passive_data {
> /* Optional callback to decide the next frequency of passvice device */
> int (*get_target_freq)(struct devfreq *this, unsigned long *freq);
>
> + /* Should be set if the devfreq device wants to be scaled with cpu*/
> + u8 cpufreq_type;
The devfreq devices with passive governor have always parent
either devfreq device or cpufreq device. So, you better to specify
the parent type as following: I think that it is more clear to check
the type of parent device.
enum devfreq_parent_dev_type {
DEVFREQ_PARENT_DEV,
CPUFREQ_PARENT_DEV,
};
enum devfreq_parent_dev_type parent_type;
> +
> /* For passive governor's internal use. Don't need to set them */
> struct devfreq *this;
> struct notifier_block nb;
> + struct devfreq_cpu_state *state[NR_CPUS];
> + struct devfreq_map **map;
ditto.
> };
> #endif
>
>
--
Best Regards,
Chanwoo Choi
Samsung Electronics
Dear all,
+ sta...@vger.kernel.org
It should be posted to sta...@vger.kernel.org
in order to merge it to stable tree.
Regards,
Chanwoo Choi
On 19. 4. 12. 오전 8:30, Chanwoo Choi wrote:
> On 19. 4. 4. 오후 11:17, Yue Haibing wrote:
>> From: YueHaibing
>>
>> As Hans de
or 'change' value
is not changed. This driver have same issue about exception handling
on multiple places. Please take it on separate patche.
--
Best Regards,
Chanwoo Choi
Samsung Electronics
p;& X86
> + depends on MFD_AXP20X && USB_SUPPORT && X86 && ACPI
> select USB_ROLE_SWITCH
> help
> Say Y here to enable support for USB peripheral detection
>
Applied it. Thanks.
--
Best Regards,
Chanwoo Choi
Samsung Electronics
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 following updates.
Best Regards,
Chanwoo Choi
The following changes since commit 79a3aaa7b82e3106be97842dedfd8429248896e6:
Linux 5.1-rc3 (2019-03-31 14
NG,
> + CPUHP_AP_EXYNOS4_MCT_TIMER_STARTING,
> CPUHP_AP_ARM_ARCH_TIMER_STARTING,
> CPUHP_AP_ARM_GLOBAL_TIMER_STARTING,
> CPUHP_AP_JCORE_TIMER_STARTING,
> - CPUHP_AP_EXYNOS4_MCT_TIMER_STARTING,
> CPUHP_AP_ARM_TWD_STARTING,
> CPUHP_AP_QCOM_TIMER_STARTING,
> CPUHP_AP_TEGRA_TIMER_STARTING,
>
As the cover-letter, the arch-timer of Exynos SoC
used the h/w block of MCT. I agree.
Reviewed-by: Chanwoo Choi
--
Best Regards,
Chanwoo Choi
Samsung Electronics
;
> static struct platform_driver exynos_bus_platdrv = {
> .probe = exynos_bus_probe,
> + .shutdown = exynos_bus_shutdown,
> .driver = {
> .name = "exynos-bus",
> .pm = &exynos_bus_pm,
>
Actually, I already agreed the previous patch.
Also, it looks good to me.
Acked-by: Chanwoo Choi
--
Best Regards,
Chanwoo Choi
Samsung Electronics
| 20 ++
> 5 files changed, 319 insertions(+), 14 deletions(-)
> create mode 100644 drivers/extcon/extcon-intel-mrfld.c
> create mode 100644 drivers/extcon/extcon-intel.h
>
Applied them to extcon-next branch. Thanks.
--
Best Regards,
Chanwoo Choi
Samsung Electronics
return ret;
> for (i = 0, rsi = axp288_pwr_up_down_info; *rsi; rsi++, i++) {
> if (val & BIT(i)) {
> dev_dbg(info->dev, "%s\n", *rsi);
>
--
Best Regards,
Chanwoo Choi
Samsung Electronics
ty isn't great at 200 MHz and 150 MHz (DDR) gives the
> diff --git a/arch/arm64/boot/dts/rockchip/rk3399.dtsi
> b/arch/arm64/boot/dts/rockchip/rk3399.dtsi
> index 8fe86a3e7658..010b3e5267a0 100644
> --- a/arch/arm64/boot/dts/rockchip/rk3399.dtsi
> +++ b/arch/arm64/boot/dts/rockchip/rk3399.dtsi
> @@ -156,7 +156,7 @@
> };
> };
>
> - display-subsystem {
> + display_subsystem: display-subsystem {
> compatible = "rockchip,display-subsystem";
> ports = <&vopl_out>, <&vopb_out>;
> };
>
--
Best Regards,
Chanwoo Choi
Samsung Electronics
Hi Andy,
On 19. 3. 18. 오후 9:46, Andy Shevchenko wrote:
> On Mon, Mar 18, 2019 at 07:38:26PM +0900, Chanwoo Choi wrote:
>
>> Thanks for comment. I add my comments
>> and then you have to rebase it on latest v5.0-rc1
>> because the merge conflict happen on v5.0-rc1.
>
t;dev, "failed to read BOOT_REASON_REG: %d\n", ret);
> + return;
> + }
> for (i = 0, rsi = axp288_pwr_up_down_info; *rsi; rsi++, i++) {
> if (val & BIT(i)) {
> dev_dbg(info->dev, "%s\n", *rsi);
>
--
Best Regards,
Chanwoo Choi
Samsung Electronics
Hi Andy,
On 19. 3. 18. 오후 7:38, Chanwoo Choi wrote:
> Hi Andy,
>
> Thanks for comment. I add my comments
> and then you have to rebase it on latest v5.0-rc1
> because the merge conflict happen on v5.0-rc1.
Please rebase the extcon-next branch instead of v5.0-rc1.
>
>
f (ret) {
> + dev_err(&client->dev,
> + "failed to create fsa9480 attribute group\n");
> + return ret;
> + }
> +
> + return 0;
> +}
> +
> +static int fsa9480_remove(struct i2c_client *client)
> +{
> + sysfs_remove_group(&client->dev.kobj, &fsa9480_group);
Please remove it.
> +
> + return 0;
> +}
> +
> +#ifdef CONFIG_PM_SLEEP
> +static int fsa9480_suspend(struct device *dev)
> +{
> + struct i2c_client *client = to_i2c_client(dev);
> +
> + if (device_may_wakeup(&client->dev) && client->irq)
> + enable_irq_wake(client->irq);
> +
> + return 0;
> +}
> +
> +static int fsa9480_resume(struct device *dev)
> +{
> + struct i2c_client *client = to_i2c_client(dev);
> +
> + if (device_may_wakeup(&client->dev) && client->irq)
> + disable_irq_wake(client->irq);
> +
> + return 0;
> +}
> +#endif
> +
> +static const struct dev_pm_ops fsa9480_pm_ops = {
> + SET_SYSTEM_SLEEP_PM_OPS(fsa9480_suspend, fsa9480_resume)
> +};
> +
> +static const struct i2c_device_id fsa9480_id[] = {
> + { "fsa9480", 0 },
> + {}
> +};
> +MODULE_DEVICE_TABLE(i2c, fsa9480_id);
> +
> +static const struct of_device_id fsa9480_of_match[] = {
> + { .compatible = "fcs,fsa9480", },
> + { },
> +};
> +MODULE_DEVICE_TABLE(of, fsa9480_of_match);
> +
> +static struct i2c_driver fsa9480_i2c_driver = {
> + .driver = {
> + .name = "fsa9480",
> + .pm = &fsa9480_pm_ops,
> + .of_match_table = fsa9480_of_match,
> + },
> + .probe = fsa9480_probe,
> + .remove = fsa9480_remove,
> + .id_table = fsa9480_id,
> +};
> +
> +static int __init fsa9480_module_init(void)
> +{
> + return i2c_add_driver(&fsa9480_i2c_driver);
> +}
> +subsys_initcall(fsa9480_module_init);
> +
> +static void __exit fsa9480_module_exit(void)
> +{
> + i2c_del_driver(&fsa9480_i2c_driver);
> +}
> +module_exit(fsa9480_module_exit);
> +
> +MODULE_DESCRIPTION("Fairchild Semiconductor FSA9480 extcon driver");
> +MODULE_AUTHOR("Tomasz Figa ");
> +MODULE_LICENSE("GPL");
>
--
Best Regards,
Chanwoo Choi
Samsung Electronics
nnected.
> + - interrupts : Should contain one entry specifying interrupt signal of
> + interrupt parent to which interrupt pin of the chip is connected.
> +
> + Example:
> + musb@25 {
> + compatible = "fcs,fsa9480";
> + reg = <0x25>;
&
better add the error log with dev_err.
>> +
>> +ret = regmap_read(regmap, BCOVE_ID, &id);
>> +if (ret)
>> +return ret;
ditto for error log.
>> +
>> +data->id = id;
>> +
>> +mrfld_extcon_set(data, BCOVE_CHGRCTRL0, BCOVE_CHGRCTRL0_SWCONTROL);
>> +
>> +/* Get initial state */
>> +mrfld_extcon_role_detect(data);
Please handle the return value for exception handling with log.
>> +
>> +mrfld_extcon_clear(data, BCOVE_MIRQLVL1, BCOVE_LVL1_CHGR);
>> +mrfld_extcon_clear(data, BCOVE_MCHGRIRQ1, BCOVE_CHGRIRQ_ALL);
>> +
>> +mrfld_extcon_set(data, BCOVE_USBIDCTRL, BCOVE_USBIDCTRL_ALL);
>> +
>> +platform_set_drvdata(pdev, data);
nitpick. better to add one blank line.
>> +return 0;
>> +}
>> +
>> +static int mrfld_extcon_remove(struct platform_device *pdev)
>> +{
>> +struct mrfld_extcon_data *data = platform_get_drvdata(pdev);
>> +
>> +mrfld_extcon_clear(data, BCOVE_CHGRCTRL0, BCOVE_CHGRCTRL0_SWCONTROL);
nitpick. better to add one blank line.
>> +return 0;
>> +}
>> +
>> +static const struct platform_device_id mrfld_extcon_id_table[] = {
>> +{ .name = "mrfld_bcove_extcon" },
I think that it is not proper to use 'extcon' word for the compatible name
because 'extcon' word is linuxium. So, I recommend that you remove
the 'extcon' word. Instead, you better to use new word related to h/w.
>> +{}
>> +};
>> +MODULE_DEVICE_TABLE(platform, mrfld_extcon_id_table);
>> +
>> +static struct platform_driver mrfld_extcon_driver = {
>> +.driver = {
>> +.name = KBUILD_MODNAME,
Where is the definition of KBUILD_MODNAME? Are you missing?
>> +},
>> +.probe = mrfld_extcon_probe,
>> +.remove = mrfld_extcon_remove,
>> +.id_table = mrfld_extcon_id_table,
>> +};
>> +module_platform_driver(mrfld_extcon_driver);
>> +
>> +MODULE_AUTHOR("Andy Shevchenko ");
>> +MODULE_DESCRIPTION("Extcon driver for Basin Cove PMIC");
Add the 'Merrifield' word in front of 'Basin Cove PMIC' as following:
- Merrifield Basic Cove PMIC
>> +MODULE_LICENSE("GPL v2");
>> --
>> 2.20.1
>>
>
--
Best Regards,
Chanwoo Choi
Samsung Electronics
> + */
> +
> +#ifndef __EXTCON_INTEL_H__
> +#define __EXTCON_INTEL_H__
> +
> +enum extcon_intel_usb_id {
> + INTEL_USB_ID_OTG,
> + INTEL_USB_ID_GND,
> + INTEL_USB_ID_FLOAT,
> + INTEL_USB_RID_A,
> + INTEL_USB_RID_B,
> + INTEL_USB_RID_C,
> +};
> +
> +#endif /* __EXTCON_INTEL_H__ */
>
--
Best Regards,
Chanwoo Choi
Samsung Electronics
erous.
Could you explain it more detailed.
>
> Could we explicitely do it only for devices that need it?
> Pavel
>
>
--
Best Regards,
Chanwoo Choi
Samsung Electronics
Hi Sylwester,
On 19. 3. 6. 오후 10:44, Sylwester Nawrocki wrote:
> Hi,
>
> On 2/3/19 13:23, Chanwoo Choi wrote:
>
>> 2019년 2월 2일 (토) 오전 2:42, Lukasz Luba 님이 작성:
>
>>> +/**
>>> + * exynos5_dmc_pause_on_switching() - Controls a pause feature in DMC
>&
Kconfig
> @@ -116,7 +116,7 @@ config EXTCON_PALMAS
>
> config EXTCON_PTN5150
> tristate "NXP PTN5150 CC LOGIC USB EXTCON support"
> - depends on I2C && GPIOLIB || COMPILE_TEST
> + depends on I2C && (GPIOLIB || COMPILE_TEST)
> select REGMAP_I2C
> help
> Say Y here to enable support for USB peripheral and USB host
>
Applied it to extcon-fixes branch for v5.0-rc2.
--
Best Regards,
Chanwoo Choi
Samsung Electronics
gt;> +++ b/drivers/extcon/Kconfig
>> @@ -116,7 +116,7 @@ config EXTCON_PALMAS
>>
>> config EXTCON_PTN5150
>> tristate "NXP PTN5150 CC LOGIC USB EXTCON support"
>> -depends on I2C && GPIOLIB || COMPILE_TEST
>> +depends on I2C && (GPIOLIB || COMPILE_TEST)
>> select REGMAP_I2C
>> help
>>Say Y here to enable support for USB peripheral and USB host
>>
>
>
--
Best Regards,
Chanwoo Choi
Samsung Electronics
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),
> +
> + GATE(CLK_CDREX_PAUSE, "clk_cdrex_pause", NULL, CDREX_PAUSE, 0, 0, 0),
nitpick. Add the blank line because of clocks of the different register.
> + GATE(CLK_CDREX_TIMING_SET, "clk_cdrex_timing_set", NULL,
> + CDREX_LPDDR3PHY_CON3, 28, 0, 0),
> };
>
> static const struct samsung_div_clock exynos5x_disp_div_clks[] __initconst =
> {
>
--
Best Regards,
Chanwoo Choi
Samsung Electronics
mutex_lock(&dmc->lock);
> + dmc->counters_enabled = true;
> + mutex_unlock(&dmc->lock);
> +
> + return 0;
> +}
> +
> +/**
> + * exynos5_dmc_probe() - Probe function for the DMC driver
> + * @pdev:platform device for which the driver is going to be initialized
> + *
> + * Initialize basic components: clocks, regulators, performance counters,
> etc.
> + * Read out product version and based on the information setup
> + * internal structures for the controller (frequency and voltage) and for
> DRAM
> + * memory parameters: timings for each operating frequency.
> + * Register new devfreq device for controlling DVFS of the DMC.
> + */
> +static int exynos5_dmc_probe(struct platform_device *pdev)
> +{
> + int ret = 0;
> + struct exynos5_dmc *dmc;
> + struct device *dev = &pdev->dev;
> + struct resource *res;
> +
> + dmc = devm_kzalloc(dev, sizeof(*dmc), GFP_KERNEL);
> + if (!dmc)
> + return -ENOMEM;
> +
> + mutex_init(&dmc->lock);
> +
> + dmc->dev = dev;
> + platform_set_drvdata(pdev, dmc);
> +
> + res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
> + dmc->base_drexi0 = devm_ioremap_resource(dev, res);
> + if (IS_ERR(dmc->base_drexi0))
> + return PTR_ERR(dmc->base_drexi0);
> +
> + res = platform_get_resource(pdev, IORESOURCE_MEM, 1);
> + dmc->base_drexi1 = devm_ioremap_resource(dev, res);
> + if (IS_ERR(dmc->base_drexi1))
> + return PTR_ERR(dmc->base_drexi1);
> +
> + res = platform_get_resource(pdev, IORESOURCE_MEM, 2);
> + dmc->chip_id = devm_ioremap_resource(dev, res);
> + if (IS_ERR(dmc->chip_id))
> + return PTR_ERR(dmc->chip_id);
> +
> + ret = exynos5_dmc_chip_revision_settings(dmc);
> + if (ret)
> + return ret;
> +
> + ret = exynos5_init_freq_table(dev, dmc, &exynos5_dmc_df_profile);
> + if (ret)
> + return ret;
> +
> + ret = of_get_dram_timings(dmc);
> + if (ret)
> + return ret;
> +
> + dmc->vdd_mif = devm_regulator_get(dev, "vdd_mif");
> + if (IS_ERR(dmc->vdd_mif)) {
> + ret = PTR_ERR(dmc->vdd_mif);
> + dev_warn(dev, "couldn't get regulator\n");
> + return ret;
> + }
> +
> + ret = exynos5_dmc_init_clks(dev, dmc);
> + if (ret) {
> + dev_warn(dev, "couldn't initialize clocks\n");
> + return ret;
> + }
> +
> + ret = exynos5_performance_counters_init(dmc);
> + if (ret) {
> + dev_warn(dev, "couldn't probe performance counters\n");
> + goto remove_clocks;
> + }
> + /*
> + * Setup default thresholds for the devfreq governor.
> + * The values are chosen based on experiments.
> + */
> + dmc->gov_data.upthreshold = 30;
> + dmc->gov_data.downdifferential = 5;
> +
> + dmc->df = devm_devfreq_add_device(dev, &exynos5_dmc_df_profile,
> + DEVFREQ_GOV_USERSPACE,
> + &dmc->gov_data);
> +
> + if (IS_ERR(dmc->df)) {
> + ret = PTR_ERR(dmc->df);
> + goto err_devfreq_add;
> + }
> +
> + dev_info(&pdev->dev, "DMC init for prod_id=0x%08x pkg_id=0x%08x\n",
> + dmc->prod_rev, dmc->pkg_rev);
> +
> + return 0;
> +
> +err_devfreq_add:
> + exynos5_counters_disable_edev(dmc);
> +remove_clocks:
> + clk_disable_unprepare(dmc->mout_mx_mspll_ccore);
> + clk_disable_unprepare(dmc->mout_spll);
> +
> + return ret;
> +}
> +
> +/**
> + * exynos5_dmc_remove() - Remove function for the platform device
> + * @pdev:platform device which is going to be removed
> + *
> + * The function relies on 'devm' framework function which automatically
> + * clean the device's resources. It just calls explicitly disable function
> for
> + * the performance counters.
> + */
> +static int exynos5_dmc_remove(struct platform_device *pdev)
> +{
> + struct exynos5_dmc *dmc = dev_get_drvdata(&pdev->dev);
> +
> + exynos5_counters_disable_edev(dmc);
> +
> + clk_disable_unprepare(dmc->mout_mx_mspll_ccore);
> + clk_disable_unprepare(dmc->mout_spll);
> +
> + dev_pm_opp_remove_table(&pdev->dev);
> +
> + dev_info(&pdev->dev, "DMC removed\n");
> +
> + return 0;
> +}
> +
> +static const struct of_device_id exynos5_dmc_of_match[] = {
> + { .compatible = "samsung,exynos5422-dmc", },
> + { },
> +};
> +MODULE_DEVICE_TABLE(of, exynos5_dmc_of_match);
> +
> +static struct platform_driver exynos5_dmc_platdrv = {
> + .probe = exynos5_dmc_probe,
> + .remove = exynos5_dmc_remove,
> + .driver = {
> + .name = "exynos5-dmc",
> + .of_match_table = exynos5_dmc_of_match,
> + },
> +};
> +module_platform_driver(exynos5_dmc_platdrv);
> +MODULE_DESCRIPTION("Driver for Exynos5422 Dynamic Memory Controller dynamic
> frequency and voltage change"
> +);
> +MODULE_LICENSE("GPL v2");
> +MODULE_AUTHOR("Samsung");
>
--
Best Regards,
Chanwoo Choi
Samsung Electronics
Hi Lukasz,
On 19. 3. 6. 오후 4:14, Lukasz Luba wrote:
> Hi Chanwoo,
>
> On 3/6/19 5:18 AM, Chanwoo Choi wrote:
>> Hi Lukasz,
>>
>> On 19. 3. 5. 오후 7:19, Lukasz Luba wrote:
>>> The patch adds description for DT binding for a new Exynos5422 Dynamic
>>> Me
d.
>
> Series looks good to me now, and I've also tested that it does not
> cause any charging or 5v boost related regressions on a GPD pocket
> laptop, so for the series:
>
> Reviewed-by: Hans de Goede
> Tested-by: Hans de Goede
>
> Regards,
>
> Hans
>
Applied it. Thanks.
--
Best Regards,
Chanwoo Choi
Samsung Electronics
Hi,
Applied it for v5.1-rc2.
I'll send the pull request it for v5.1-rc2.
Best Regards,
Chanwoo Choi
On 19. 2. 26. 오전 9:17, Randy Dunlap wrote:
> From: Randy Dunlap
>
> Having COMPILE_TEST here is causing problems. I reported one
> last week and have another one today. A
<0x2C1D0225>, <0x38270335>, <0x402D0335>,
> + <0x4C330336>, <0x543A0446>;
> + };
> +
> +The frequencies supported by the DMC are stored in OPP table v2.
> +
> + dmc_opp_table: opp_table2 {
> + compatible = "operating-points-v2";
> +
> + opp00 {
> + opp-hz = /bits/ 64 <16500>;
> + opp-microvolt = <875000>;
> + };
> + opp01 {
> + opp-hz = /bits/ 64 <20600>;
> + opp-microvolt = <875000>;
> + };
> + opp02 {
> + opp-hz = /bits/ 64 <27500>;
> + opp-microvolt = <875000>;
> + };
> + opp03 {
> + opp-hz = /bits/ 64 <41300>;
> + opp-microvolt = <887500>;
> + };
> + opp04 {
> + opp-hz = /bits/ 64 <54300>;
> + opp-microvolt = <937500>;
> + };
> + opp05 {
> + opp-hz = /bits/ 64 <63300>;
> + opp-microvolt = <1012500>;
> + };
> + opp06 {
> + opp-hz = /bits/ 64 <72800>;
> + opp-microvolt = <1037500>;
> + };
> + opp07 {
> + opp-hz = /bits/ 64 <82500>;
> + opp-microvolt = <105>;
> + };
> + };
> +
>
--
Best Regards,
Chanwoo Choi
Samsung Electronics
5x_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
msecs_to_jiffies(devfreq->profile->polling_ms));
> mutex_unlock(&devfreq->lock);
> +
> + trace_devfreq_monitor(devfreq);
> }
>
> /**
>
Reviewed-by: Chanwoo Choi
--
Best Regards,
Chanwoo Choi
Samsung Electronics
lling_ms=%u load=%lu",
> + __get_str(dev_name), __entry->freq, __entry->polling_ms,
> + __entry->total_time == 0 ? 0 :
> + (100 * __entry->busy_time) / __entry->total_time)
> +);
> +#endif /* _TRACE_DEVFREQ_H */
> +
> +/* This part must be outside protection */
> +#include
>
I think that it is necessary for devfreq. Looks good to me.
Reviewed-by: Chanwoo Choi
--
Best Regards,
Chanwoo Choi
Samsung Electronics
Hi Matthias,
On 19. 2. 16. 오전 7:56, Matthias Kaehlcke wrote:
> Hi Chanwoo,
>
> On Fri, Feb 15, 2019 at 09:33:05AM +0900, Chanwoo Choi wrote:
>> Hi Matthias,
>>
>> On 19. 2. 15. 오전 9:19, Matthias Kaehlcke wrote:
>>> Hi Chanwoo,
>>>
>>> On Fri
onfusion for user.
If it show the '100' in case of "__entry->total_time is zero",
it cannot distinguish between the real 100% utilization
and "total_time is zero".
> + (100 * __entry->busy_time) / __entry->total_time)
> +);
> +#endif /* _TRACE_DEVFREQ_H */
> +
> +/* This part must be outside protection */
> +#include
>
--
Best Regards,
Chanwoo Choi
Samsung Electronics
msecs_to_jiffies(devfreq->profile->polling_ms));
> mutex_unlock(&devfreq->lock);
> +
> + trace_devfreq_monitor(devfreq);
> }
>
> /**
>
Looks good to me.
Reviewed-by: Chanwoo Choi
--
Best Regards,
Chanwoo Choi
Samsung Electronics
andler(struct devfreq
> *devfreq,
> break;
> }
>
> - return ret;
> + return 0;
> }
>
> static struct devfreq_governor tegra_devfreq_governor = {
>
Reviewed-by: Chanwoo Choi
--
Best Regards,
Chanwoo Choi
Samsung Electronics
k dmc_clk\n");
> return PTR_ERR(data->dmc_clk);
> - };
> + }
>
> data->edev = devfreq_event_get_edev_by_phandle(dev, 0);
> if (IS_ERR(data->edev))
>
Reviewed-by: Chanwoo Choi
--
Best Regards,
Chanwoo Choi
Samsung Electronics
ERR(data->clk)) {
> dev_err(dev, "Cannot get the clk dmc_clk\n");
> return PTR_ERR(data->clk);
> - };
> + }
>
> /* try to find the optional reference to the pmu syscon */
> node = of_parse_phandle(np, "ro
h
>
> Yauhen Kharuzhy (2):
> extcon-intel-cht-wc: Make charger detection co-existed with OTG host mode
> extcon intel-cht-wc: Enable external charger
>
> drivers/extcon/extcon-intel-cht-wc.c | 71 +++-
> 1 file changed, 70 insertions(+), 1 deletion(-)
>
--
Best Regards,
Chanwoo Choi
Samsung Electronics
Hi Matthias,
On 19. 2. 15. 오전 9:19, Matthias Kaehlcke wrote:
> Hi Chanwoo,
>
> On Fri, Feb 15, 2019 at 08:42:30AM +0900, Chanwoo Choi wrote:
>> Hi Matthias,
>>
>> On 19. 2. 15. 오전 4:28, Matthias Kaehlcke wrote:
>>> Hi Chanwoo,
>>>
>>> On Thu
Hi Matthias,
On 19. 2. 15. 오전 1:59, Matthias Kaehlcke wrote:
> Hi Chanwoo,
>
> On Thu, Feb 14, 2019 at 11:25:52PM +0900, Chanwoo Choi wrote:
>> Hi Matthias,
>>
>> 2019년 2월 14일 (목) 오후 7:16, Matthias Kaehlcke 님이 작성:
>>>
>>> The field ->stop_pollin
Hi Matthias,
On 19. 2. 15. 오전 4:28, Matthias Kaehlcke wrote:
> Hi Chanwoo,
>
> On Thu, Feb 14, 2019 at 11:17:36PM +0900, Chanwoo Choi wrote:
>> Hi Matthias,
>>
>> As I commented on the first patch, it is not possible to call some codes
>> according to the i
14일 (목) 오후 11:12, Chanwoo Choi 님이 작성:
>
> Hi Matthias,
>
> Looks good to me for making the function to remove the duplicate code.
> But, When I just tested the kernel build, following warnings occur
> about devfreq_governor_stop().
>
> In file included from ./include/linux
gt; * @scaling_min_freq: Limit minimum frequency requested by OPP interface
> * @scaling_max_freq: Limit maximum frequency requested by OPP interface
> - * @stop_polling: devfreq polling status of a device.
> + * @monitor_state: State of the load monitor.
> * @suspend_freq: frequency of a device set during suspend phase.
> * @resume_freq:frequency of a device set in resume phase.
> * @suspend_count: suspend requests counter for a device.
> @@ -168,7 +168,7 @@ struct devfreq {
> unsigned long max_freq;
> unsigned long scaling_min_freq;
> unsigned long scaling_max_freq;
> - bool stop_polling;
> + int monitor_state;
>
> unsigned long suspend_freq;
> unsigned long resume_freq;
> --
> 2.20.1.791.gb4d0f1c61a-goog
>
--
Best Regards,
Chanwoo Choi
val_update(devfreq, (unsigned int *)data);
> break;
> diff --git a/drivers/devfreq/tegra-devfreq.c b/drivers/devfreq/tegra-devfreq.c
> index 79efa1e51bd06..515fb852dbad6 100644
> --- a/drivers/devfreq/tegra-devfreq.c
> +++ b/drivers/devfreq/tegra-devfreq.c
> @@ -580,13 +580,11 @@ static int tegra_governor_event_handler(struct devfreq
> *devfreq,
>
> switch (event) {
> case DEVFREQ_GOV_START:
> - devfreq_monitor_start(devfreq);
> tegra_actmon_enable_interrupts(tegra);
> break;
>
> case DEVFREQ_GOV_STOP:
> tegra_actmon_disable_interrupts(tegra);
> - devfreq_monitor_stop(devfreq);
> break;
>
> case DEVFREQ_GOV_SUSPEND:
> --
> 2.20.1.791.gb4d0f1c61a-goog
>
--
Best Regards,
Chanwoo Choi
> }
>
> if (df->governor) {
> - ret = df->governor->event_handler(df, DEVFREQ_GOV_STOP, NULL);
> - if (ret) {
> - dev_warn(dev, "%s: Governor %s not stopped(%d)\n",
> -__func__, df->governor->name, ret);
> + ret = devfreq_governor_stop(df);
> + if (ret)
> goto out;
> - }
> }
> df->governor = governor;
> strncpy(df->governor_name, governor->name, DEVFREQ_NAME_LEN);
> - ret = df->governor->event_handler(df, DEVFREQ_GOV_START, NULL);
> - if (ret)
> - dev_warn(dev, "%s: Governor %s not started(%d)\n",
> -__func__, df->governor->name, ret);
> + ret = devfreq_governor_start(df);
> out:
> mutex_unlock(&devfreq_list_lock);
>
> --
> 2.20.1.791.gb4d0f1c61a-goog
>
--
Best Regards,
Chanwoo Choi
vfreq.c
> @@ -591,11 +591,9 @@ static int tegra_governor_event_handler(struct devfreq
> *devfreq,
>
> case DEVFREQ_GOV_SUSPEND:
> tegra_actmon_disable_interrupts(tegra);
> - devfreq_monitor_suspend(devfreq);
> break;
>
> case DEVFREQ_GOV_RESUME:
> - devfreq_monitor_resume(devfreq);
> tegra_actmon_enable_interrupts(tegra);
> break;
> }
> --
> 2.20.1.791.gb4d0f1c61a-goog
>
--
Best Regards,
Chanwoo Choi
> index 9919840..c042fda 100644
>>> --- a/MAINTAINERS
>>> +++ b/MAINTAINERS
>>> @@ -4447,6 +4447,7 @@ S:Maintained
>>> F:drivers/devfreq/
>>> F: include/linux/devfreq.h
>>> F:Documentation/devicetree/bindings/devfreq
msecs_to_jiffies(polling_ms));
> mutex_unlock(&devfreq->lock);
> +
> + trace_devfreq_monitor(df_name, devfreq->previous_freq, polling_ms,
> + devfreq->last_status.busy_time,
> + devfre
8,6 +103,7 @@ struct devfreq_dev_status {
> struct devfreq_dev_profile {
> unsigned long initial_freq;
> unsigned int polling_ms;
> + unsigned int polling_idle_ms;
>
> int (*target)(struct device *dev, unsigned long *freq, u32 flags);
> int (*get_dev_status)(struct device *dev,
>
--
Best Regards,
Chanwoo Choi
Samsung Electronics
msecs_to_jiffies(devfreq->profile->polling_ms));
> }
> out:
> @@ -1430,12 +1423,6 @@ static int __init devfreq_init(void)
> return PTR_ERR(devfreq_class);
> }
>
> - devfreq_wq = create_freezable_workqueue("devfreq_wq");
> - if (!devfreq_wq) {
> - class_destroy(devfreq_class);
> - pr_err("%s: couldn't create workqueue\n", __FILE__);
> - return -ENOMEM;
> - }
> devfreq_class->dev_groups = devfreq_groups;
>
> return 0;
>
--
Best Regards,
Chanwoo Choi
Samsung Electronics
stead, if devfreq framework supports both deferrable
and delayed work according to selecting the kind of work
by user, I agree.
> if (devfreq->profile->polling_ms)
> queue_delayed_work(devfreq_wq, &devfreq->work,
> msecs_to_jiffies(devfreq->profile->polling_ms));
>
--
Best Regards,
Chanwoo Choi
Samsung Electronics
Hi Lukasz,
On 19. 2. 13. 오후 7:47, Lukasz Luba wrote:
> Hi Chanwoo,
>
> On 2/13/19 2:09 AM, Chanwoo Choi wrote:
>> Hi Lukasz,
>>
>> On 19. 2. 12. 오후 9:05, Lukasz Luba wrote:
>>> Hi Chanwoo
>>>
>>> On 2/12/19 6:46 AM, Chanwoo Choi wrote:
&g
s using of_node_cmp, this has the side effect of now using
>> case sensitive comparisons. This should not matter for any FDT based
>> system which all of these are.
>>
>> Cc: Chanwoo Choi
>> Cc: MyungJoo Ham
>> Cc: Kyungmin Park
>> Cc: Kukjin Kim
>&
Hi Lukasz,
On 19. 2. 13. 오후 8:14, Lukasz Luba wrote:
> Hi Chanwoo,
>
> On 2/13/19 1:18 AM, Chanwoo Choi wrote:
>> On 19. 2. 13. 오전 7:23, Lukasz Luba wrote:
>>> This patch set changes workqueue related features in devfreq framework.
>>> First patch switches to
TSADC, "tsadc", "aclk66", GATE_IP_PERIC, 15, 0, 0),
> GATE(CLK_PWM, "pwm", "aclk66", GATE_IP_PERIC, 24, 0, 0),
>
> GATE(CLK_SCLK_UART0, "sclk_uart0", "div_uart0",
>
I checked it on Exynos5410 TRM. Looks good to me.
Acked-by: Chanwoo Choi
--
Best Regards,
Chanwoo Choi
Samsung Electronics
315
> #define CLK_WDT 316
>
Acked-by: Chanwoo Choi
--
Best Regards,
Chanwoo Choi
Samsung Electronics
#define CLK_USI2 267
> #define CLK_USI3 268
> -#define CLK_UART3260
> #define CLK_PWM 279
> #define CLK_MCT 315
> #define CLK_WDT 316
>
Acked-by: Chanwoo Choi
--
Best Regards,
Chanwoo Choi
Samsung Electronics
Hi Lukasz,
On 19. 2. 12. 오후 9:05, Lukasz Luba wrote:
> Hi Chanwoo
>
> On 2/12/19 6:46 AM, Chanwoo Choi wrote:
>> Hi Lukasz,
>>
>> On 19. 2. 12. 오전 12:30, Lukasz Luba wrote:
>>> This patch set changes workqueue related features in devfreq framework.
>
g | 13 +++
> drivers/devfreq/devfreq.c | 184
> --
> drivers/devfreq/governor.h| 3 +-
> drivers/devfreq/governor_simpleondemand.c | 6 +-
> include/linux/devfreq.h | 6 +
> include/trace/events/devfreq.h| 39 +++
> 7 files changed, 218 insertions(+), 34 deletions(-)
> create mode 100644 include/trace/events/devfreq.h
>
--
Best Regards,
Chanwoo Choi
Samsung Electronics
Hi Lukasz,
On 19. 2. 11. 오후 8:11, Lukasz Luba wrote:
> Hi Chanwoo,
>
> On 2/3/19 10:56 AM, Chanwoo Choi wrote:
>> Hi Lukasz,
>>
>> I recommend that please don't send the version up patchset before
>> finishing the discussion.
>>
>> 2019년 2월 2일
q/devfreq.c | 27 +++
> 1 file changed, 7 insertions(+), 20 deletions(-)
>
--
Best Regards,
Chanwoo Choi
Samsung Electronics
> + .name = "mediatek-cci-devfreq",
> + .of_match_table = mediatek_cci_devfreq_of_match,
> + },
> +};
> +
> +static int __init mtk_cci_devfreq_init(void)
> +{
> + int ret = 0;
> +
> + ret = devfreq_add_governor(&mtk_cci_devfreq_governor);
> + if (ret) {
> + pr_err("%s: failed to add governor: %d\n", __func__, ret);
> + return ret;
> + }
> +
> + ret = platform_driver_register(&cci_devfreq_driver);
> + if (ret)
> + devfreq_remove_governor(&mtk_cci_devfreq_governor);
> +
> + return ret;
> +}
> +module_init(mtk_cci_devfreq_init)
> +
> +static void __exit mtk_cci_devfreq_exit(void)
> +{
> + int ret = 0;
> +
> + platform_driver_unregister(&cci_devfreq_driver);
> +
> + ret = devfreq_remove_governor(&mtk_cci_devfreq_governor);
> + if (ret)
> + pr_err("%s: failed to remove governor: %d\n", __func__, ret);
> +}
> +module_exit(mtk_cci_devfreq_exit)
> +
> +MODULE_LICENSE("GPL v2");
nitpick. better to move it under MODULE_AUTHOR("")
> +MODULE_DESCRIPTION("Mediatek CCI devfreq driver");
> +MODULE_AUTHOR("andrew-sh.cheng");
Add full name and email as following:
- MODULE_AUTHOR("Andrew-sh.Cheng "
> +
>
Remove unneeded blank line.
--
Best Regards,
Chanwoo Choi
Samsung Electronics
'devfreq' word.
> +
> +Example:
> + cci: cci {
> + compatible = "mediatek,cci";
> + clocks = <&apmixedsys CLK_APMIXED_CCIPLL>;
> + clock-names = "cci_clock";
> + operating-points-v2 = <&cci_opp>;
> + };
> +
>
This document is missing the 'regulator' property. Please add it
--
Best Regards,
Chanwoo Choi
Samsung Electronics
- as s3c2450 extends the s3c2416 clocks */
> case S3C2416:
> samsung_clk_register_div(ctx, s3c2416_dividers,
> ARRAY_SIZE(s3c2416_dividers));
>
--
Best Regards,
Chanwoo Choi
Samsung Electronics
Hi Lukasz,
On 19. 2. 11. 오후 7:21, Lukasz Luba wrote:
> Hi Chanwoo,
>
> On 2/3/19 8:54 AM, Chanwoo Choi wrote:
>> Hi Lukasz,
>>
>> 2019년 2월 1일 (금) 오후 11:22, Lukasz Luba 님이 작성:
>>
>>>
>>> Hi Chanwoo,
>>>
>>> On 2/1/19 9:44 AM,
Dear Greg,
This is extcon-next pull request for v5.1. I add detailed description of
this pull request on below. Please pull extcon with following updates.
Best Regards,
Chanwoo Choi
The following changes since commit d13937116f1e82bf508a6325111b322c30c85eb9:
Linux 5.0-rc6 (2019-02-10 14:42
+ "mout_bpll",
> + "sclk_bpll",
> + "mout_mx_mspll_ccore",
> + "mout_mx_mspll_ccore_phy",
> + "mout_mclk_cdrex",
> + "dout_clk2x_phy0",
> + "clkm_phy0",
> + "clkm_phy1";
> +
> + status = "okay";
> + devfreq-events = <&ppmu_dmc0_0>, <&ppmu_dmc0_1>,
> + <&ppmu_dmc1_0>, <&ppmu_dmc1_1>;
> + };
> +
> +
> diff --git a/MAINTAINERS b/MAINTAINERS
> index e81dfbf..ab0d8a5 100644
> --- a/MAINTAINERS
> +++ b/MAINTAINERS
> @@ -3316,6 +3316,7 @@ L:linux...@vger.kernel.org
> L: linux-samsung-...@vger.kernel.org
> S: Maintained
> F: drivers/devfreq/exynos5422-dmc.c
> +F: Documentation/devicetree/bindings/devfreq/exynos5422-dmc.txt
>
> BUSLOGIC SCSI DRIVER
> M: Khalid Aziz
> --
> 2.7.4
>
--
Best Regards,
Chanwoo Choi
Hi Lukasz,
As I already commented on the other patch,
please don't send next version patchset until finishing the discussion.
2019년 2월 2일 (토) 오전 2:42, Lukasz Luba 님이 작성:
>
> This patch adds driver for Exynos5422 Dynamic Memory Controller.
> The driver provides support for dynamic frequency and vo
GATE(CLK_ACLK_PPMU_DREX1_1, "aclk_ppmu_drex1_1", "dout_aclk_cdrex1",
> + GATE_BUS_CDREX1, 12, CLK_IGNORE_UNUSED, 0),
You better to move the gate clock of GATE_BUS_CDREX[15:12] under the
gate clock of GATE_BUS_CDREX[29:26]
for the decending order because you defined them as the decending order.
> +
> + GATE(CLK_PCLK_PPMU_DREX0_0, "pclk_ppmu_drex0_0", "dout_pclk_cdrex",
> + GATE_BUS_CDREX1, 29, 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_DREX1_0, "pclk_ppmu_drex1_0", "dout_pclk_cdrex",
> + GATE_BUS_CDREX1, 27, 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),
> };
>
> static const struct samsung_div_clock exynos5x_disp_div_clks[] __initconst =
> {
> --
> 2.7.4
>
--
Best Regards,
Chanwoo Choi
Hi Lukasz,
2019년 2월 1일 (금) 오후 11:22, Lukasz Luba 님이 작성:
>
> Hi Chanwoo,
>
> On 2/1/19 9:44 AM, Chanwoo Choi wrote:
> > Hi,
> >
> > On 19. 1. 31. 오후 5:49, Lukasz Luba wrote:
> >> Add new table rate for BPLL for Exynos5422 SoC supporting Dynamic Memory
> &
Hi,
There are some wrong comments by me. Sorry for confusion.
On 19. 2. 1. 오후 5:07, Chanwoo Choi wrote:
> Hi,
>
> When I reviewed this patch, the almost changes are wrong.
> Frankly, I can't believe that you had tested and verified it
> on real board. Please check
Hi,
On 19. 1. 31. 오후 5:49, Lukasz Luba wrote:
> Add new table rate for BPLL for Exynos5422 SoC supporting Dynamic Memory
> Controller frequencies for driver's DRAM timings.
>
> CC: Sylwester Nawrocki
> CC: Chanwoo Choi
> CC: Michael Turquette
> CC: Stephen Bo
s needed for Dynamic Memory Controller
> in Exynos5422 SoC. It adds CDREX base register addresses, new DIV, MUX and
> GATE entries.
>
> CC: Sylwester Nawrocki
> CC: Chanwoo Choi
> CC: Michael Turquette
> CC: Stephen Boyd
> CC: Kukjin Kim
> CC: Krzysztof Kozlowski
>
Hi,
On 19. 1. 31. 오후 5:49, Lukasz Luba wrote:
> Define new IDs for clocks used by Dynamic Memory Controller in
> Exynos5422 SoC.
>
> CC: Sylwester Nawrocki
> CC: Chanwoo Choi
> CC: Rob Herring
> CC: Mark Rutland
> CC: Kukjin Kim
> CC: Krzysztof Koz
Dear all,
Gently Ping.
Best Regards,
Chanwoo Choi
On 18. 12. 12. 오전 10:41, Chanwoo Choi wrote:
> The Samsung Exynos's device drivers have the 'SASMUNG EXYNOS' prefix
> in front of the specific device driver name. In order to keep the
> consistent naming format, chan
ynos5422 SoC.
>
> CC: Sylwester Nawrocki
> CC: Chanwoo Choi
> CC: Rob Herring
> CC: Mark Rutland
> CC: Kukjin Kim
> CC: Krzysztof Kozlowski
> CC: linux-samsung-...@vger.kernel.org
> CC: devicet...@vger.kernel.org
> CC: linux-arm-ker...@lists.infradead.org
> CC: l
;
> +
> static int __init devfreq_init(void)
> {
> devfreq_class = class_create(THIS_MODULE, "devfreq");
> @@ -1438,6 +1443,8 @@ static int __init devfreq_init(void)
> }
> devfreq_class->dev_groups = devfreq_groups;
>
> + register_sysc
subject]
Signed-off-by: Chanwoo Choi
---
.../devicetree/bindings/extcon/extcon-ptn5150.txt | 27 ++
drivers/extcon/Kconfig | 8 +
drivers/extcon/Makefile| 1 +
drivers/extcon/extcon-ptn5150.c| 339
_LICENSE() in drivers/extcon/extcon-ptn5150.o
> see include/linux/module.h for more information
>
> Introduced by commit
>
> 58963276749e ("extcon: Add support for ptn5150 extcon driver")
>
--
Best Regards,
Chanwoo Choi
Samsung Electronics
fier for the GPIO pin which
+ is used to control VBUS.
+- pinctrl-names : a pinctrl state named "default" must be defined.
+- pinctrl-0 : phandle referencing pin configuration of interrupt and vbus
+ control.
+
--
Best Regards,
Chanwoo Choi
Samsung Electronics
On 19. 1. 2
; + * extcon-ptn5150.h
> + *
> + * Copyright (c) 2018-2019 by Vijai Kumar K
> + * Author: Vijai Kumar K
> + *
> + * This program is free software; you can redistribute it and/or modify it
> + * under the terms of the GNU General Public License as published by the
> + * Free Software Foundation; either version 2 of the License, or (at your
> + * option) any later version.
> + */
> +
> +#ifndef __LINUX_EXTCON_PTN5150_H
> +#define __LINUX_EXTCON_PTN5150_H
> +
> +enum ptn5150_types {
> + TYPE_PTN5150A,
Do you have additional plan to suppor other type for extcon-ptn5150.c driver?
If extcon-ptn5150.c supports only one driver, you don't need to this
enumeration.
> +};
> +
> +/* PTN5150 registers */
> +enum ptn5150_reg {
> + PTN5150_REG_DEVICE_ID = 0x01,
> + PTN5150_REG_CONTROL,
> + PTN5150_REG_INT_STATUS,
> + PTN5150_REG_CC_STATUS,
> + PTN5150_REG_CON_DET = 0x09,
> + PTN5150_REG_VCONN_STATUS,
> + PTN5150_REG_RESET,
> + PTN5150_REG_INT_MASK = 0x18,
> + PTN5150_REG_INT_REG_STATUS,
> + PTN5150_REG_END,
> +};
> +
> +#define PTN5150_DFP_ATTACHED 0x1
> +#define PTN5150_UFP_ATTACHED 0x2
> +
> +/* Define PTN5150 MASK/SHIFT constant */
> +#define PTN5150_REG_DEVICE_ID_VENDOR_SHIFT 0
> +#define PTN5150_REG_DEVICE_ID_VERSION_SHIFT 3
> +#define PTN5150_REG_DEVICE_ID_VENDOR_MASK(0x3 <<
> PTN5150_REG_DEVICE_ID_VENDOR_SHIFT)
> +#define PTN5150_REG_DEVICE_ID_VERSION_MASK (0x1f <<
> PTN5150_REG_DEVICE_ID_VERSION_SHIFT)
> +
> +#define PTN5150_REG_CC_PORT_ATTACHMENT_SHIFT 2
> +#define PTN5150_REG_CC_PORT_ATTACHMENT_MASK (0x7 <<
> PTN5150_REG_CC_PORT_ATTACHMENT_SHIFT)
> +#define PTN5150_REG_CC_VBUS_DETECTION_SHIFT 7
> +#define PTN5150_REG_CC_VBUS_DETECTION_MASK (0x1 <<
> PTN5150_REG_CC_VBUS_DETECTION_SHIFT)
> +#define PTN5150_REG_INT_CABLE_ATTACH_SHIFT 0
> +#define PTN5150_REG_INT_CABLE_ATTACH_MASK(0x1 <<
> PTN5150_REG_INT_CABLE_ATTACH_SHIFT)
> +#define PTN5150_REG_INT_CABLE_DETACH_SHIFT 1
> +#define PTN5150_REG_INT_CABLE_DETACH_MASK(0x1 <<
> PTN5150_REG_CC_CABLE_DETACH_SHIFT)
> +#endif /* __LINUX_EXTCON_PTN5150_H */
>
--
Best Regards,
Chanwoo Choi
Samsung Electronics
Hi Vijai,
On 19. 1. 22. 오후 1:42, Vijai Kumar K wrote:
> Hi Chanwoo Choi,
>
> This is the first time I am sending a driver to LKML. I have a few doubts. Can
> you please clarify them when you are free?
>
> 1. I have developed and tested this patch on 4.14.89 kernel. When try
GFP_KERNEL);
> devfreq->last_stat_updated = jiffies;
>
> srcu_init_notifier_head(&devfreq->transition_notifier_list);
>
Reviewed-by: Chanwoo Choi
--
Best Regards,
Chanwoo Choi
Samsung Electronics
(struct device *dev,
> mutex_unlock(&devfreq->lock);
> err = set_freq_table(devfreq);
> if (err < 0)
> - goto err_out;
> + goto err_dev;
> mutex_lock(&devfreq->lock);
ere
> the first argument is on the far-right side.
>
> Signed-off-by: MyungJoo Ham
> ---
> drivers/devfreq/devfreq.c | 49
> +++
> 1 file changed, 24 insertions(+), 25 deletions(-)
Looks better before.
Reviewed-by: Chanwoo Choi
uot;,
> .data = &mscl_cmu_info,
> + }, {
> + .compatible = "samsung,exynos5433-cmu-imem",
> + .data = &imem_cmu_info,
> }, {
> },
> };
> --
> 2.20.0
>
Looks good to me.
Acked-by: Chanwoo Choi
--
Best Regards,
Chanwoo Choi
Samsung Electronics
501 - 600 of 3104 matches
Mail list logo