cregit-Linux how code gets into the kernel

Release 4.11 drivers/gpu/drm/nouveau/nvkm/subdev/bus/hwsq.h

#ifndef __NVKM_BUS_HWSQ_H__

#define __NVKM_BUS_HWSQ_H__
#include <subdev/bus.h>


struct hwsq {
	
struct nvkm_subdev *subdev;
	
struct nvkm_hwsq *hwsq;
	
int sequence;
};


struct hwsq_reg {
	
int sequence;
	
bool force;
	
u32 addr;
	
u32 stride; /* in bytes */
	
u32 mask;
	
u32 data;
};


static inline struct hwsq_reg hwsq_stride(u32 addr, u32 stride, u32 mask) { return (struct hwsq_reg) { .sequence = 0, .force = 0, .addr = addr, .stride = stride, .mask = mask, .data = 0xdeadbeef, }; }

Contributors

PersonTokensPropCommitsCommitProp
Roy Spliet5092.59%150.00%
Ben Skeggs47.41%150.00%
Total54100.00%2100.00%


static inline struct hwsq_reg hwsq_reg2(u32 addr1, u32 addr2) { return (struct hwsq_reg) { .sequence = 0, .force = 0, .addr = addr1, .stride = addr2 - addr1, .mask = 0x3, .data = 0xdeadbeef, }; }

Contributors

PersonTokensPropCommitsCommitProp
Ben Skeggs3973.58%150.00%
Roy Spliet1426.42%150.00%
Total53100.00%2100.00%


static inline struct hwsq_reg hwsq_reg(u32 addr) { return (struct hwsq_reg) { .sequence = 0, .force = 0, .addr = addr, .stride = 0, .mask = 0x1, .data = 0xdeadbeef, }; }

Contributors

PersonTokensPropCommitsCommitProp
Roy Spliet3368.75%150.00%
Ben Skeggs1531.25%150.00%
Total48100.00%2100.00%


static inline int hwsq_init(struct hwsq *ram, struct nvkm_subdev *subdev) { int ret; ret = nvkm_hwsq_init(subdev, &ram->hwsq); if (ret) return ret; ram->sequence++; ram->subdev = subdev; return 0; }

Contributors

PersonTokensPropCommitsCommitProp
Ben Skeggs53100.00%3100.00%
Total53100.00%3100.00%


static inline int hwsq_exec(struct hwsq *ram, bool exec) { int ret = 0; if (ram->subdev) { ret = nvkm_hwsq_fini(&ram->hwsq, exec); ram->subdev = NULL; } return ret; }

Contributors

PersonTokensPropCommitsCommitProp
Ben Skeggs49100.00%2100.00%
Total49100.00%2100.00%


static inline u32 hwsq_rd32(struct hwsq *ram, struct hwsq_reg *reg) { struct nvkm_device *device = ram->subdev->device; if (reg->sequence != ram->sequence) reg->data = nvkm_rd32(device, reg->addr); return reg->data; }

Contributors

PersonTokensPropCommitsCommitProp
Ben Skeggs56100.00%2100.00%
Total56100.00%2100.00%


static inline void hwsq_wr32(struct hwsq *ram, struct hwsq_reg *reg, u32 data) { u32 mask, off = 0; reg->sequence = ram->sequence; reg->data = data; for (mask = reg->mask; mask > 0; mask = (mask & ~1) >> 1) { if (mask & 1) nvkm_hwsq_wr32(ram->hwsq, reg->addr+off, reg->data); off += reg->stride; } }

Contributors

PersonTokensPropCommitsCommitProp
Ben Skeggs5760.00%266.67%
Roy Spliet3840.00%133.33%
Total95100.00%3100.00%


static inline void hwsq_nuke(struct hwsq *ram, struct hwsq_reg *reg) { reg->force = true; }

Contributors

PersonTokensPropCommitsCommitProp
Ben Skeggs23100.00%1100.00%
Total23100.00%1100.00%


static inline u32 hwsq_mask(struct hwsq *ram, struct hwsq_reg *reg, u32 mask, u32 data) { u32 temp = hwsq_rd32(ram, reg); if (temp != ((temp & ~mask) | data) || reg->force) hwsq_wr32(ram, reg, (temp & ~mask) | data); return temp; }

Contributors

PersonTokensPropCommitsCommitProp
Ben Skeggs71100.00%1100.00%
Total71100.00%1100.00%


static inline void hwsq_setf(struct hwsq *ram, u8 flag, int data) { nvkm_hwsq_setf(ram->hwsq, flag, data); }

Contributors

PersonTokensPropCommitsCommitProp
Ben Skeggs29100.00%2100.00%
Total29100.00%2100.00%


static inline void hwsq_wait(struct hwsq *ram, u8 flag, u8 data) { nvkm_hwsq_wait(ram->hwsq, flag, data); }

Contributors

PersonTokensPropCommitsCommitProp
Ben Skeggs29100.00%2100.00%
Total29100.00%2100.00%


static inline void hwsq_wait_vblank(struct hwsq *ram) { nvkm_hwsq_wait_vblank(ram->hwsq); }

Contributors

PersonTokensPropCommitsCommitProp
Roy Spliet1684.21%150.00%
Ben Skeggs315.79%150.00%
Total19100.00%2100.00%


static inline void hwsq_nsec(struct hwsq *ram, u32 nsec) { nvkm_hwsq_nsec(ram->hwsq, nsec); }

Contributors

PersonTokensPropCommitsCommitProp
Ben Skeggs2187.50%266.67%
Roy Spliet312.50%133.33%
Total24100.00%3100.00%

#endif

Overall Contributors

PersonTokensPropCommitsCommitProp
Ben Skeggs49575.46%466.67%
Roy Spliet16124.54%233.33%
Total656100.00%6100.00%
Information contained on this website is for historical information purposes only and does not indicate or represent copyright ownership.
Created with cregit.