Re: [PATCH v1 1/2] pinctrl: pinctrl-loongson2: add pinctrl driver support

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 





在 2022/10/21 下午5:45, Linus Walleij 写道:
Hi Yinbo,

thanks for your patch!

On Fri, Oct 21, 2022 at 3:27 AM Yinbo Zhu <zhuyinbo@xxxxxxxxxxx> wrote:

The loongson2 SoC has a few pins that can be used as GPIOs or take
multiple other functions. Add a driver for the pinmuxing.

There is currently no support for GPIO pin pull-up and pull-down.

Signed-off-by: zhanghongchen <zhanghongchen@xxxxxxxxxxx>
Signed-off-by: Yinbo Zhu <zhuyinbo@xxxxxxxxxxx>

(...)

+static int loongson2_pmx_set_mux(struct pinctrl_dev *pcdev, unsigned int func_num,
+                             unsigned int group_num)
+{
+       struct loongson2_pinctrl *pctrl = pinctrl_dev_get_drvdata(pcdev);
+       unsigned long reg = (unsigned long)pctrl->reg_base +
+                               loongson2_pmx_groups[group_num].reg;
+       unsigned int mux_bit = loongson2_pmx_groups[group_num].bit;
+       unsigned int val;
+       unsigned long flags;
+
+       raw_spin_lock_irqsave(&pctrl->lock, flags);
+       val = readl((void *)reg);
+       if (func_num == 0)
+               val &= ~(1<<mux_bit);
+       else
+               val |= (1<<mux_bit);
+       writel(val, (void *)reg);
+       raw_spin_unlock_irqrestore(&pctrl->lock, flags);

Can you explain in the commit message or with a comment in the code
why you have to use a raw spinlock for this?

We usually only use raw spinlocks for things like low level
interrupt handlers...

My guess is that you can replace this with an ordinary spinlock.
I was refer other platform, eg. pinctrl-amd.c, if the ordinary spinlock was more appropriate I will use the ordinary spinlock.

TKs
Yinbo.

Yours,
Linus Walleij





[Index of Archives]     [Linux SPI]     [Linux Kernel]     [Linux ARM (vger)]     [Linux ARM MSM]     [Linux Omap]     [Linux Arm]     [Linux Tegra]     [Fedora ARM]     [Linux for Samsung SOC]     [eCos]     [Linux Fastboot]     [Gcc Help]     [Git]     [DCCP]     [IETF Announce]     [Security]     [Linux MIPS]     [Yosemite Campsites]

  Powered by Linux