[PATCH] gpu: host1x: handle the correct # of syncpt regs
Terje Bergström
tbergstrom at nvidia.com
Thu Apr 3 01:09:22 PDT 2014
On 01.04.2014 23:10, Stephen Warren wrote:
> diff --git a/drivers/gpu/host1x/hw/intr_hw.c b/drivers/gpu/host1x/hw/intr_hw.c
> index db9017adfe2b..17407b2de2bf 100644
> --- a/drivers/gpu/host1x/hw/intr_hw.c
> +++ b/drivers/gpu/host1x/hw/intr_hw.c
> @@ -47,7 +47,7 @@ static irqreturn_t syncpt_thresh_isr(int irq, void *dev_id)
> unsigned long reg;
> int i, id;
>
> - for (i = 0; i <= BIT_WORD(host->info->nb_pts); i++) {
> + for (i = 0; i < BITS_TO_LONGS(host->info->nb_pts); i++) {
> reg = host1x_sync_readl(host,
> HOST1X_SYNC_SYNCPT_THRESH_CPU0_INT_STATUS(i));
> for_each_set_bit(id, ®, BITS_PER_LONG) {
> @@ -64,7 +64,7 @@ static void _host1x_intr_disable_all_syncpt_intrs(struct host1x *host)
> {
> u32 i;
>
> - for (i = 0; i <= BIT_WORD(host->info->nb_pts); ++i) {
> + for (i = 0; i < BITS_TO_LONGS(host->info->nb_pts); ++i) {
> host1x_sync_writel(host, 0xffffffffu,
> HOST1X_SYNC_SYNCPT_THRESH_INT_DISABLE(i));
> host1x_sync_writel(host, 0xffffffffu,
>
Wouldn't this break in architectures with 64-bit longs? Probably the
safest way would be to use DIV_ROUND_UP(host->info->nb_pts, 32), because
we know there are 32 bits in each host1x register.
Terje
More information about the dri-devel
mailing list