blob: 2853c858b0ef4cea10a28661db51e02519a04172 [file] [log] [blame]
developer1966afb2023-08-08 16:02:18 +08001/* SPDX-License-Identifier: GPL-2.0-or-later */
2/*
3 * Copyright (c) 2023 Mediatek Inc. All Rights Reserved.
4 *
5 * Author: Ren-Ting Wang <ren-ting.wang@mediatek.com>
6 */
7
8#ifndef _PCE_CLS_H_
9#define _PCE_CLS_H_
10
11#include <linux/platform_device.h>
12
13#include "pce/pce.h"
14
developer1966afb2023-08-08 16:02:18 +080015#define CLS_DESC_MASK_DATA(cdesc, field, mask, data) \
16 do { \
17 (cdesc)->field ## _m = (mask); \
18 (cdesc)->field = (data); \
19 } while (0)
20#define CLS_DESC_DATA(cdesc, field, data) \
21 (cdesc)->field = (data)
22
23struct cls_entry {
developer5cca2e42023-08-24 17:39:15 +080024 u32 idx;
developer1966afb2023-08-08 16:02:18 +080025 struct cls_desc cdesc;
26};
27
28int mtk_pce_cls_enable(void);
29void mtk_pce_cls_disable(void);
30
31int mtk_pce_cls_init(struct platform_device *pdev);
32void mtk_pce_cls_deinit(struct platform_device *pdev);
33
developer5cca2e42023-08-24 17:39:15 +080034int mtk_pce_cls_desc_read(struct cls_desc *cdesc, u32 idx);
35int mtk_pce_cls_desc_write(struct cls_desc *cdesc, u32 idx);
36
37int mtk_pce_cls_entry_write(struct cls_entry *cls);
developer1966afb2023-08-08 16:02:18 +080038
developer5cca2e42023-08-24 17:39:15 +080039struct cls_entry *mtk_pce_cls_entry_alloc(void);
40void mtk_pce_cls_entry_free(struct cls_entry *cls);
developer1966afb2023-08-08 16:02:18 +080041#endif /* _PCE_CLS_H_ */